美文网首页
Java练习题集

Java练习题集

作者: Binary_r | 来源:发表于2019-03-18 21:18 被阅读0次

1、古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三 个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少?这是一个菲波拉契数列问题

public class No1 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入要计算的月份数:");
        int N = sc.nextInt();//月份
        int[] sum = new int[N];
        for(int i = 0; i < N; i++){
            if(i == 1 || i == 0){
                sum[i] = 1;
                System.out.println("第"+ (i+1) +"个月有"+ sum[i] +"对兔子");
            }
            else{
                sum[i] = sum[i - 1] + sum[i - 2];
                System.out.println("第"+ (i+1) +"个月有"+ sum[i] +"对兔子");
            }
        }
    }
}

2、判断 101-200 之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除, 则表明 此数不是素数,反之是素数。

    public static void main(String[] args) {
        int count = 0;
        int j = 0;
        for(int i = 101; i < 200; i++){
            for ( j = 2; j < i; j++) {
                // 如果j能被i整除就跳出循环 
                if (i % j == 0)
                    break;
                
            }
            //判断循环是否提前跳出,如果j<i说明在2~j之间,i有可整除的数  
            if ( j >= i) {
            count++;
            System.out.println("素数为:"+ i);
            }
            
        }
        System.out.println("101-200之间有"+ count +"个素数");
    }
}

3、打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和 等于该数本身。例如:153 是一个 "水仙花数 ",因为 153= 1的三次方+5的三次方+3的 三次方。

public class No3 {

    public static void main(String[] args) {
        System.out.print("水仙花数: ");
        for(int i = 1; i <= 9; i++){
            for(int j = 0; j <= 9; j++){
                for(int k = 0; k <= 9; k++){
                    int num = i * 100 + j * 10 + k;
                    if(num == i*i*i + j*j*j + k*k*k){
                        System.out.print(num+"\t");
                    }
                }
            }
        }
    }
}

4、将一个正整数分解质因数。例如:输入 90,打印出 90=233*5。 程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:
*(1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。
*(2)如果 n <> k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数 你n,重复执行第一步。
*(3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。

public class No4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        System.out.print(N + " = ");
        //循环判断
        for (int k = 2; k <= N; k++) {
            while (N != k) {
                if (N % k == 0) {
                    System.out.print(k + "*");
                    N = N / k;
                } else {
                    break;
                }
            }
        }
        System.out.print(N); // 打印出最后一个数
    }

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

public class No5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请输入成绩:");
            int num = sc.nextInt();
            if(num > 100 || num < 0){
                System.out.println("数据有误,请输入0—100的数据。");
            }
            else{
                String grade = (num >= 90) ? "A" : (num >= 60) ? "B" : "C";
                System.out.println(grade);
            }
        }
    }
}

6、输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 /*在循环中,只要除数不等于 0,用较大数除以较小的数,将小的一个数作为下一轮循环的 大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为 0,返回较大 的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。 /

public class No6 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个正整数 m 和 n");
        int m = sc.nextInt();
        int n = sc.nextInt();

        int max = run(m,n);
        System.out.println("最大公约数:" + max);
        int min = m * n / max;
        System.out.println("最小公倍数为:" + min);
    }

    public static int run(int m, int n) {
        //判断大小交换位置  使m > n
        if (m < n) {
           int t = m;
            m = n;
            n = t;
        }

        while (n != 0) {
            //如果两个数相等 就返回它本身
            if (m == n)
                return m;
            else {
                int k = m % n;
                m = n;
                n = k;
            }
        }
        return m;
    }
}

7、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

public class No7 {
    public static void main(String[] args){
        System.out.println("请输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数");
        tiqv();

    }

    private static void tiqv() {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int num = 0,kong = 0,zimu = 0,other = 0;
        //将字符串转化为字符数组
        char[] charr = str.toCharArray();
        for(int i = 0; i < charr.length; i++){
            //Character.isDigit判断数组中是否有数字
            if(Character.isDigit(charr[i])){
                num++;
            }
            //Character.isSpaceChar判断数组中是否有空格
            else if(Character.isSpaceChar(charr[i])){
                kong++;
            }
            //Character.isLetter判断字符数组中的字母
            else if(Character.isLetter(charr[i])){
                zimu++;
            }else{
                other++;
            }
        }
        System.out.println("英文字母有:" + zimu + "个");
        System.out.println("空格有:" + kong + "个");
        System.out.println("数字有:" + num + "个");
        System.out.println("其他字符有:" + other + "个");
    }
}

8、求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此 时共有 5 个数相加),几个数相加有键盘控制。

public class No8 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要相加的数字a(0--9)和相加的次数b");
        int a = sc.nextInt();//输入的数字
        int b = sc.nextInt();//输入几个数相加
        int s = 0;//相加的和
        int d = 0;
        for(int i = 0; i < b; i++){
            d = d + a;
            s = d + s;
            a = a * 10;
        }
        System.out.println("相加的总和:"+s);
    }
}

9、一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编 程 找出 1000 以内的所有完数。

public class No9 {
    public static void main(String[] args){
        for (int i = 1; i < 1000; i++)
        {
            int sum = 0;
            for (int j = 1; j < i; j++)
            {
                if(i % j == 0)
                {
                    sum += j;
                }
            }
            if(i == sum)
            {
                System.out.println("完数:" + i);
            }
        }
    }
}

10、一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,共经过多少米?第 10 次反弹多高?

public class No5 {
    public static void main(String[] args){
        double h = 100.0;
        double s = 100.0;
        for(int i = 0; i < 10; i++){
            h = h /2;
            s += 2 * h;
        }
        System.out.println(h);
        System.out.println(s);
    }
}

相关文章

  • Java练习题集

    1、古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三 个月后每个月又生一对兔子, 假...

  • 2017-8-16晨读感悟 -经验的疆界

    1. 去年,职称考试通过的同事分享经验。对于没时间看书的你,放弃看书只做习题集就行,习题集很重要...

  • 习题集

    习题记 1,设栈的存储空间为 S(1:50) ,初始状态为 top=51 。现经过一系列正常的入栈与退栈操作后, ...

  • 习题集

    人最可怕 一大把年纪 没有一个人和你相爱 在最青葱的那些日子里 同样没有人爱过你 你的肉身与灵魂 通通没被抚摸过 ...

  • Java基础

    怎么学习Java:多想,多练 Java语言介绍 Java的三大平台 Java语言特点 变量和运算符 Java中的变...

  • c++练习文件输入和流的逐行输入

    参考资料:《C++ Primer习题集(第5版)》

  • C++练习字符串流的输入输出

    参考资料:《C++ Primer习题集(第5版)》

  • 2020-12-25,坚持分享344天

    今天我学习的老师发了一个习题集,我想打印,就去找管打印的老师。谁知道这套习题集100多页,觉得太多了,就打印了第一...

  • 快递·考研·感想

    这一周,收到的最多的快递是:孩子考研的书籍,有专业课的,必考课的,习题集一,习题集二高等数学辅导讲义,接力题典18...

  • 习题集锦1.0

    第1题 第2题 第3题 第4题 第5题

网友评论

      本文标题:Java练习题集

      本文链接:https://www.haomeiwen.com/subject/sgkimqtx.html