zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JavaScript条件判断和循环
    JavaScript数据类型详解
    Dockerfile使用
    让ie8、ie9支持媒体查询
    事件穿透
    判断是苹果手机还是安卓手机
    ES6中字符串的扩展
    ES6数组的扩展运算符
    let和const
    ES6中函数的扩展
  • 原文地址:https://www.cnblogs.com/dxjx/p/12469626.html
Copyright © 2011-2022 走看看