Java 编程练习题 one

1.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

    分析: 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21只   第三月等前两月之和

public class OneRabbit {
    public static void main(String[] args) {
        System.out.print("输入数值");
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        System.out.println(rab( n));
        System.out.println(test(n));

    }
    /**
     * 兔子问题  斐波拉契数列
     */
    //递归
    private static  int rab(int n) {
        if(n==1||n==2) {
            return 1;
        }else {
            return rab(n-1)+rab(n-2);
        }
    }
    // 一般做法
    public static int test(int i) {
        int t=0;
        int a=0;
        int b=1;
        for (int j = 0; j < i; j++) {
            t=a+b;
            a=b;
            b=t;
        }
        return a;
    }
}

2.判断101-200之间有多少个素数,并输出所有素数(素数,不能被自己和1整除的数)

public class TwoSuShu {

    public static void main(String[] args) {
        System.out.print("请输入:");
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        sunNum(a, b);
    }
    
    /**
     * 判断一个数是否是素数,就是从2到num-1是否有约数,有 false
     * @param num
     * @return
     */
    private static Boolean isNum(int num) {
        Boolean f=true;
        for (int i = 2; i < num; i++) {
            if (num%i==0) {
                f=false;
                break;
            }
        }
        return f;
    }
    private static void  sunNum(int a,int b) {
        if (a>=b) {
            System.out.println("错误");
        }
        System.out.println("素数是:");
        for (int i = a; i <= b; i++) {
            if (isNum(i)) {
                System.out.print(i+" ");
            }
        }
    }

}

3.打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

public class ThreeNarc {

    public static void main(String[] args) {
        for (int i = 100; i < 999; i++) {
            if (isNar(i)) {
            System.out.println("水仙花数:"+i);
            }
        }

    }
    /**
     * 判断是否是水仙花数
     * @param a
     * @return
     */
    private static Boolean isNar(int a) {
        int n1=0;
        int n2=0;
        int n3=0;
        n1=a/100;
        n2=(a-n1*100)/10;
        n3=a-n2*10-n1*100;
        if (Math.pow(n1, 3)+Math.pow(n2, 3)+Math.pow(n3, 3)==a) {
            return true;
        }
        return false;
    }

}

4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

public class FourDec {
    public static void main(String[] args) {
        System.out.print("请输入:");
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        decro(n);
        scanner.close();
    }
    private static void decro(int num) {
int t=num/2
for (int i = 2; i < t; i++) { if (num%i==0) { // System.out.println("前num:"+num); num=num/i; System.out.println(i); // System.out.println("num:"+num); i=1;//i=1,最后一个num/1,数据全部输出 // System.out.println("i=1后"+num); continue; } } } }

5.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示

 

 6.求m,n 的最大公约数和最小公倍数

public class FiveMax {

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1=scanner.nextInt();
        System.out.println("请输入第二个数:");
        int num2=scanner.nextInt();
        System.out.println("最大公约数:"+maxNum(num1, num2));
        System.out.println("最小公倍数:"+(num1*num2)/maxNum(num1, num2));
    }
    
    private static int maxNum(int num1,int num2) {
        int result=1;
        int t=num1>num2?num2:num1;
        for (int i = 2; i <=t; i++) {
            if (num1%i==0 && num2%i==0) {
                result=result*i;
                num1=num1/i;
                num2=num2/i;
                i=1;
            }
        }
        return result;    
    }
}

其余转载至: 50道题及答案https://www.cnblogs.com/hgnulb/p/9904714.html

原文地址:https://www.cnblogs.com/dxjx/p/12469626.html