Java从0开始 1

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

long s1,s2;// 定义这个月和下个月兔子的数量  

        s1 = 1;  //第一个月为1对  

        s2 = 1;  //第二个月为1对  

        int i=1;  //定义一个控制变量  

        int m;  // 月份数  

        Scanner in = new Scanner(System.in);

        System.out.print("请输入你想要查看的月数:");

        m = in.nextInt();   

        while(true){  

            //第一个月和第二个月兔子的数量都为1对  

            if(i==1||i==2){  

                System.out.println(i+"月: "+s1+"对");  

                i++; // 控制变量 i 加1  

            }  

            // i 大于3并且小于我们需要查看的月份  

            else if(i<m){  

                s1 = s1+s2;   

                s2 = s2+s1;    

                System.out.println(i+"月: "+s1+"对");  

                    i++;//月份加1  

                System.out.println(i+"月: "+s2+"对");  

                    i++; //月份加1  

            }else{  

                break;//不符合条件就退出  

            }  

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

for(int sqrt = 101; sqrt <= 200;sqrt++){

boolean flag = true;

for(int i = 2;i < sqrt;i++){

if(sqrt % i == 0){

flag = false;

break;

}

}

if(flag){

count++;

System.out.println(sqrt);

}

}

System.out.println(count);

【程序3   
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
for(int flowerCount = 100;flowerCount < 1000; flowerCount++){

int flowerCountH = flowerCount / 100;

int flowerCountT = (flowerCount - flowerCountH * 100) / 10;

int flowerCountO = (flowerCount - flowerCountH*100 - flowerCountT * 10);

int SUM = flowerCountH * flowerCountH * flowerCountH +

  flowerCountT * flowerCountT * flowerCountT +

  flowerCountO * flowerCountO * flowerCountO;

if(SUM == flowerCount){

System.out.println(flowerCount);

}

}

 

【程序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的值,重复执行第一步。  
Scanner in = new Scanner(System.in);

System.out.print("请输入一个数:");

int num = in.nextInt();

int n = 2;

while(num > n){

if(0 == num % n){

System.out.print(n + "*");

num = num / n;

}else{

n++;

}

}

System.out.println(num);


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

 Scanner in = new Scanner(System.in);

System.out.print("请输入成绩:");

String Degree = in.next();

if(Integer.parseInt(Degree) >= 90){

Degree = "A";

}else if(Integer.parseInt(Degree) >= 60){

Degree = "B";

}else{

Degree = "C";

}

System.out.print(Degree);
【程序6   
题目:输入两个正整数mn,求其最大公约数和最小公倍数。   
/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /

Scanner in = new Scanner(System.in);

System.out.print("请输入第一个数:");

int firstNum = in.nextInt();

System.out.print("请输入第二个数:");

int secondNum = in.nextInt();

int num[] = {firstNum,secondNum};

//升序排列

Arrays.sort(num);

int temp = 0;

while(0 != num[0]){

temp = num[1] % num[0];

num[1] = num[0];

num[0] = temp;

}

System.out.println(firstNum+"与"+secondNum+"的最大公约数为:"+num[1]);

int min_multiple = firstNum * secondNum / num[1];

System.out.println(firstNum+"与"+secondNum+"的最小公倍数为:"+min_multiple);
【程序7   
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。   

String A="abcd e f g1 23";

//System.out.println(A.length());

int j = 0;

int x = 0;

int y = 0;

for(int i = 0; i < A.length();i++){

String word = (String.valueOf(A.charAt(i)));

if(word.matches("\\s")){

j++;

}

if(word.matches("[a-zA-Z]+")){

x++;

}

if(word.matches("\\d")){

y++;

}

 

}

System.out.println("空格数为:"+j);

System.out.println("字母数为:"+x);

System.out.println("数字数为:"+y);

【程序8   
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。   
System.out.print("请输入相加数的个数:");

int count = in.nextInt();

System.out.print("请输入相加的数字:");

    String num = in.next();

    String n = num;

    Vector<String>numV = new Vector<String>();

    for(int i = 0;i < count;i++){

     numV.add(num);

     num+=n;

    }

    for(int i = 0;i < numV.size();i++){

     if(i == numV.size()-1){

     System.out.print(numV.get(i)+"=");

     }else{

     System.out.print(numV.get(i)+"+");

     }

    

    }

    int sum = 0;

    for(int i = 0;i < numV.size();i++){

     sum += Integer.parseInt(numV.get(i));

    }

    System.out.println(sum);

 
【程序9   
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=123.编程     找出1000以内的所有完数。   
for(int i = 2;i <= 1000; i++){

int sum = 0;

for(int j = 1;j < i;j++){

if(0 == i % j){

sum += j;

}

}

if(sum == i){

System.out.println(i);

}

}

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

Java从0开始 1