> 文档中心 > Java阿尔法编程题目

Java阿尔法编程题目


1.组数字

输入相邻的4个正整数,计算这4个正整数,能组成多少个互不相同且无重复数字的三位数,并将结果输出。

import java.util.Scanner;public class Program {    public static void main(String[] args) { Scanner sc = new Scanner(System.in);System.out.println("输入四个连续的整数");Scanner scanner = new Scanner(System.in);int num1 = scanner.nextInt(); int num2 = scanner.nextInt(); int num3 = scanner.nextInt(); int num4 = scanner.nextInt(); if (num1+1 != num2){    System.out.println("必须输入四个连续的整数");}else if (num2 +1 != num3){System.out.println("必须输入四个连续的整数");}else if (num3 +1 != num4){System.out.println("必须输入四个连续的整数");}else {int count=0;for(int i=num1;i<=num4;i++){for(int j=num1;j<=num4;j++){for(int k=num1;k<=num4;k++){if(i!=j && j!=k && k!=i){count++;    }    }    }    }     System.out.println(count);}    }
public class TestShu1 {private static int[] a={4, 2, 3, 9};//定义任意四个数字数组 private static int num=0;//一个组成三位数个数 private static int hunNum=0;//组成的三位数 //bai-百位, shi-十位, ge-个位public static int getHuNum(int bai, int shi, int ge){ return 100*bai+10*shi+1*ge;}public static void main(String[] args){for(int i=0; i<4; i++){ for(int j=0; j<4; j++){ for(int m=0; m<4; m++){ if(a[i]!=a[j]&&a[j]!=a[m]&&a[m]!=a[i]){ hunNum=getHuNum(a[i], a[j],a[m]); num++;System.out.println(hunNum); }} } } System.out.println("一共组成三位数: "+num+"个");}    

2.打印正整数的逆序

输入一个不多于五位的正整数 num,并输出其位数,每一位的数字,以及逆序排列的每位数字。

import java.util.Scanner;public class Program {   public static void main(String[] args) {int sum = 0;    Scanner input = new Scanner(System.in);    System.out.println("请输入不多于五位数的正整数:");    int n = input.nextInt();    String s = "" + n;    System.out.println("它是"+s.length()+"位数");    System.out.println(s);    char a[] = s.toCharArray();    char a2[] = new char[a.length];    for(int i = 0;i<a.length;i++){     char b = a[a.length-i-1];    a2[i] = b;    System.out.print(a2[i]);     }   }}

3.杨辉三角

杨辉三角,又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。其中前10行样式如下:

1  1   1 1   2   11   3   3   11   4   6   4   11   5  10  10   5   11   6  15  20  15   6   11   7  21  35  35  21   7   11   8  28  56  70  56  28   8   11   9  36  84 126 126  84  36   9   1

编写程序,通过二维数组的方式输出杨辉三角的前9行。

public class Program { public static void main(String[] args) { //定义了一个长度为10,高度为10的二维数组,数组中的值都为0;int[][] arr=new int[10][10];for(int i=0;i<arr.length; i++) {//由于只是给杨辉三角内的位置赋值,所以是j<=ifor(int j=0;j<=i;j++) {//根据规律,使用if else 赋值if(j==0||j==i) {arr[i][j]=1;}else {arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}/*由于只是输出杨辉三角范围内的值,所以在内层循环就输出,这种方法不能全部赋值完之后再输出"\t"的原因是10和小于10的数组的宽度不同,所以使用\t制表符能使数与数之间距离相等*/System.out.print(arr[i][j]+"\t");}System.out.println();    }    }}

4.定义一个点类

编程题

假设要在程序中描述一点,可以定义一个点类(Point)。

题目要求

定义点类(Point),内容如下:

属性:点的横坐标 x 和纵坐标 y,其中 xy都是整数,均为public。

方法:distance()表示该点到坐标原点的距离,返回类型double。

注:点到坐标原点的距离计算公式为:Math.sqrt(x*x+y*y)

本题考查面向对象相关知识,调试需要自己定义Main方法进行调试,方可运行,判题不做要求

class PointT{    public double x,y;    public PointT(){    } public PointT(int x,int y){ this.x = x; this.y = y;    } public double distance(){ double d = Math.sqrt(x*x+y*y); return d;    }    }public class Point{    public static void main(String[] args){ PointT a =new PointT(3,4);  System.out.println(a.distance());    }}

public class TriangleT{
public double s1,s2,s3;

public Triangle(double s1,double s2,double s3){    this.s1 = s1;    this.s2 = s2;    this.s3 = s3;}public double getPerimeter(){    return s1+s2+s3;}public String getType(){    if(s1==s2&&s1==s3&&s2==s3) return equilateral;    else if((s1==s2)||(s1==s3)||(s2==s3)){ return isosceles;    }    else return scalene;}

}

public class Triangle{
public static void main(String[] args){
public double s1,s2,s3;
public double v1,v2,v3;
s1 = Point.sideS1(v1,v2);
s2 = sideS2(v1,v3);
s3 = sideS3(v2,v3);
TriangleT b =new TriangleT();
System.out.println();
}

5.求素数

「质数」又称素数,有无限个。素数定义为在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数称为素数。

例如17就是素数,因为它不能被2 - 16的任一整数整除。

请编写一个程序,输入一个正整数,计算该正整数以内的素数之和

import java.util.Scanner;public class Program{    public static void main (String[] args) {      Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int sum = 0; int k; for(int i=2;i<=num;i++){     k=0;     for(int j=2;j<=Math.sqrt(i);j++){  if(i%j==0){      k++;  }     }     if(k==0){  sum +=i;     } } System.out.println(sum);    }}

6.打印三角形

输入一个正整数N,通过循环语句,打印一个2*N-1行的三角形

示例

输入

4

输出

*************************

注意: 左侧始终没有空格

import java.util.*;public class Program {    public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt();  // 先输出前n行 for(int i=0;i<=N-1;i++){     for(int j=0;j<2*i+1;j++){  System.out.print("*");     }  System.out.println(); }  // 输出余下的n-1行 for(int i=N-1;i>=1;i--){     for(int j=0;j<2*i-1;j++){  System.out.print("*");     }  System.out.println(); }    }}

6.百钱百鸡

编程题

中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?

请用程序完成百钱百鸡问题的计算,并将计算结果输出。

输出示例:

公鸡=1 母鸡=1 小鸡=1
public class Program {   public static void main(String[] args) {for(int cock=0;cock<=20;cock++){    for(int hen=0;hen<=33;hen++){if(cock*5+hen*3+(100-cock-hen)/3==100&&(100-cock-hen)%3==0)    System.out.println("公鸡="+cock+"母鸡="+hen+"小鸡="+(100-cock-hen));    }}   }}

7.完数

编程题

如果一个数的真因子之和等于其本身, 这个数就称之为"完数". 例如:6的真因子为1, 2, 3, 而且1 + 2 + 3 = 6, 因此6是"完数".

请用程序实现: 输入一个整数num,找出2(含) ~ num(含)中的所有完数,并输出。

import java.util.Scanner;public class Program {    public static void main(String[] args) {  Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int sum; for(int i=2;i<=num;i++){     sum=0;     for(int j=1;j<i;j++){  if(i%j==0){      sum+=j;  }     }     if(sum==i){  System.out.println(i);     } }    }}

8.数组重复值清零

定义一个长度为7的数组;

输入7位含有重复数字的整数作为数组的值;

请将重复元素(包括0)删除,并输出更新后数组中的元素。

例如: 数组{1, 2, 2, 3, 4, 5},更新后为 {1, 2, 3, 4, 5}

import java.util.*;public class Program {    public static void main(String[] args) { Scanner sc = new Scanner(System.in); int []num = new int[7]; for(int i=0;i<7;i++){     num[i] = sc.nextInt(); } for(int i=0;i<7;i++){     for(int j=0;j<7;j++){  if(num[i]==num[j]&&i!=j){      //切记不要让元素比较自身 不然均为0      num[j]=0;  }     } } for(int i=0;i<7;i++){     if(num[i]!=0)     {System.out.println(num[i]);} }    }}

9.冒泡排序

定义一个长度为9的数组;

输入9个数字,进行冒泡排序, 使其按照从小到大的顺序排列, 并将排列后的结果输出。

import java.util.*;public class Program {    public static void main(String[] args) { Scanner sc = new Scanner(System.in); int []num = new int [9]; for(int i=0;i<9;i++){     num[i] = sc.nextInt(); }  for(int i=0;i<num.length;i++){     for(int j=0;j<num.length-1-i;j++){  if(num[j+1]<num[j]){      int t = num[j+1];      num[j+1] = num[j];      num[j] = t;  }     } }  for(int a:num){     System.out.print(a+" "); }    }}

10.定义圆类

定义圆类Circle,内容如下(需要完成):

属性:

圆心(center) ,Point类型,修饰符public。

半径(radius),double类型,修饰符public。

方法:

getArea(),获取圆的面积,修饰符public,返回值类型double。

point_in_circle(Circle circle,Point point),参数为一个圆类对象和一个点类对象,然后判断该点是否在圆内,在圆内则返回 True ,不在圆内则返回 False,修饰符public,返回值类型Boolean。

Math.abs(x) 链接讲解 https://blog.csdn.net/xmc281141947/article/details/56017147

Circle.javapublic class Circle{    public Point center;    public double radius; public double getArea(){ return radius*radius*Math.PI;    } public boolean point_in_circle(Circle circle,Point point){ // 根据该点与圆心之间距离与半径的比较来确定该点是否在圆内 Math.abs(x)=|x| 绝对值 double l = Math.sqrt(Math.abs((circle.center.x-point.x)*(circle.center.x-point.x)+(circle.center.y-point.y)*(circle.center.y-point.y))); if(l<=radius){     return true; } else{     return false; }    } public static void main(String[] args){ Circle obj = new Circle(); obj.radius = 5; obj.center = new Point(); obj.center.x = 5; obj.center.y = 5; Point point = new Point(); point.x = 1; point.y = 1; System.out.println(obj.getArea()); System.out.println(obj.point_in_circle(obj,point));    }}
Point.java    public class Point {    int x;    int y;    public double distance(){ return Math.sqrt(x*x+y*y);    }}

11.银行账户建模

如下面类图所示,设计了一个名为 Account 的类,该类为银行帐户建模。

  1. 三个 public 实例变量:id(int),custom(Custom)和 balance(double)用于维持当前帐户余额。
  2. toString(),返回“ name(id), Balance=$xxx.xx”,balance四舍五入到小数点后两位。
  3. getCustomName(),获取客户姓名。
  4. deposit()方法实现存款操作,返回存款:xxx,余额:xxx,(余额四舍五入到小数点后两位)。
  5. withdraw方法实现取款操作,返回取款:xxx,余额:xxx,(余额四舍五入到小数点后两位)。

请编写Account类,及测试驱动程序,以测试所有public方法。

注:练习已预置了Customer类,可以直接使用

String.format()的详细用法 https://blog.csdn.net/anita9999/article/details/82346552

Account.javapublic class Account{    int id;    Customer custom = new Customer();    double balance; //public Account(){}    /*public Account(int id,Customer custom,double balance){ this.id = id; this.custom = custom; this.balance = balance;    }*/ public String toString(){return custom.name+"("+id+")"+",Balance=$"+String.format("%.2f",balance);    } public String getCustomName(){ return custom.name;    } public String deposit(double a){ balance += a;  return "存款:"+a+",余额:"+String.format("%2.f",balance);    } public String withdraw(double b){ balance -= b; return "取款:"+b+",余额:"+String.format("%2.f",balance);    } public static void main(String[] args){ Account obj = new Account(); obj.id = 1; obj.custom.name = "张三"; obj.balance = 500.354; System.out.println(obj.toString()); System.out.println(obj.getCustomName()); System.out.println(obj.deposit(20.00)); System.out.println(obj.withdraw(10.00));      }}
Customer.java    public class Customer {    public int id;    public String name;    public char gender;    public String toString(){ return "Customer[id="+id+",name="+name+",gender="+gender+"]";    }    public static void main(String[] args) { Customer obj = new Customer(); obj.id = 1; obj.name = "张三"; obj.gender = 'm'; System.out.println(obj.toString());    }}

12.接口GeometricObject

编程题

下面类图定义了两个接口: GeometricObject 可以计算几何对象的周长与面积,另一个 Resizable 以指定的百分比修改尺寸重置几何图形的大小。

请编写接口及其两个实现类。

public interface GeometricObject{    public double getPerimeter();    public double getArea();}
public class Circle implements GeometricObject{    double radius = 1.0; public Circle(double radius){ this.radius = radius;    } @Override    public double getPerimeter() { return radius*Math.PI*2;    }    @Override    public double getArea() { return radius*radius*Math.PI;    }}
public interface Resizable {    public double resize(int percent);}
public class ResizableCircle extends Circle implements Resizable {    public ResizableCircle(double radius) { super(radius);    }    @Override    public double resize(int percent) { return (percent*getArea())/100;    }}
public class Test extends ResizableCircle{    public Test(double radius) { super(radius);    }    public static void main(String[] args) { double radius = 3.0; Test t = new Test(radius);     System.out.println("圆的面积为:"+t.getArea()); System.out.println("圆的周长为:"+t.getPerimeter()); System.out.println("圆修改后的尺寸为:"+t.resize(50));    }}

海量搞笑GIF动态图片