java编程题练习1

版权声明:博客内容为本人自己所写,请勿转载。 https://blog.csdn.net/weixin_42805929/article/details/82120795

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

public class Test1 {
    public static void main(String[] args) {
        System.out.println("第一个月的兔子对数:1");
        System.out.println("第二个月的兔子对数:1");
        int f1 = 1, f2 = 1;//定义前两个月的兔子对数
        int M = 12; //定义月份
        for (int i = 3; i <= M; i++) {
            //从第三个月开始,兔子生兔子
             int temp = f2; //定义一个中间值
             f2 = f1 + f2;  //前两个月的综合
             f1 = temp; //
             System.out.println("第" + i +"个月的兔子对数: "+f2);
        }
    }
}

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

public class Test2 {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i < 200; i += 2) {
            boolean b = false;
            for (int j = 2; j <= Math.sqrt(i); j++) {
                //Math.sqrt(i)函数返回一个数即i的平方根
                if (i % j == 0) {
                    b = false;
                    break;
                } else {
                    b = true;
                }
            }
            if (b == true) {
                count++;
                System.out.println(i);
            }
        }
        System.out.println("素数个数是: " + count);
    }
}

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

public class Test3 {
    public static void main(String[] args) {
        int a, b, c;
        int count = 0;
        for (int i = 100; i < 1000; i++) {
            a = i / 100;//百位
            b = i % 100 / 10;//十位
            c = i % 10;//个位
            if (i == (a*a*a + b*b*b + c*c*c)) {
                count++;
                System.out.println("水仙花数:"+i);
            }
        }
        System.out.println(count);
    }
}
水仙花数:153
水仙花数:370
水仙花数:371
水仙花数:407

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

import java.util.Scanner;

public class Test4 {
    public static void main(String[] args) {
        @SuppressWarnings("resource")
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入正整数:");
        int n = sc.nextInt();
        int k = 2;
        System.out.print(n + "=");
        while (k <= n) {
            if (k == n) {
                System.out.println(n);
                break;
            }else if (n % k == 0) {
                System.out.print(k + "*");
                n = n / k;
            }else {
                k++;
            }
        }
    }
}

【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
//首先条件运算符也称为“三元运算符”

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入您的成绩:");
        double n = sc.nextDouble();
        char grade;
        grade = n >= 90 ? 'A'
              : n >= 60 ? 'B'
              : 'C';
        System.out.println("该成绩所属的等级为:"+grade);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42805929/article/details/82120795