第三周习题

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

package exercise;

import java.util.*;

public class MainCorrect {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int month = in.nextInt();
        int t = 1, n=0,oldT=1, a;
        if (month == 1)
            System.out.println("第一个月兔子数:" + 1);
        else if (month == 2)
            System.out.println("第二个月兔子数:" + 1);
        else if (month >= 3) {
            for (int i = 3; i <= month; i++) {
                n = t+oldT;
                oldT=t;
                t=n;
            }
            System.out.println("第"+month+"个月兔子数:" + n);
        }
    }
}

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

package exercise;

public class Main2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for (int i = 101; i <= 200; i++) {
            int ok = 1;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    ok = 0;
                    break;
                }
            }
            if(ok==1)
            System.out.println("这个数是质数:" +i);
        }
    }
}

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

public class Main3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int i1, i2, i3;
        for (int i = 101; i < 1000; i++) {
            i1=i/100;
            i2=i%100/10;
            i3=i%10;
            if(Math.pow(i3, 3)+Math.pow(i2, 3)+Math.pow(i1, 3)==i) {
                System.out.println(i+"是水仙花数");
            }
        }
    }
}

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

package exercise;

import java.util.Scanner;

public class Main4 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k=2;
        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++;
        }
    }
}

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

package exercise;

import java.util.*;

public class Main5 {
    public static void main(String[] args) {
        int x;
        char grade;
        Scanner s = new Scanner(System.in);
        x = s.nextInt();
        grade = x >= 90 ? 'A' : x >= 60 ? 'B' : 'C';
        System.out.println("等级:" + grade);
    }
}

你可能感兴趣的:(第三周习题)