5道Java算法编程题

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

1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

public class Demo01 {

         public static void main(String args[]) {

                   for (int i = 1; i <= 20; i++)

                            System.out.println(f(i));

         }

         public static int f(int x) {

                   if (x == 1||x == 2)

                            return 1;

                   else

                            return f(x - 1) + f(x - 2);

         }

}

public class Demo01 {

         public static void main(String args[]) {

                   math mymath = new math();

                   for (int i = 1; i <= 20; i++)

                            System.out.println(mymath.f(i));

         }

}

class math {

         public int f(int x) {

                   if (x == 1||x == 2)

                            return 1;

                   else

                            return f(x - 1) + f(x - 2);

         }

}

 

【程序2   题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

public class Demo02{

         public static void main(String[] args){

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

                            boolean flag=true;

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

                                     if(i%j==0){

                                               flag=false;

                                               break;

                                     }

                            }

                            if(flag==true){

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

                            }

                   }

         }

}

 

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

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

public class Demo03 {

         public static void main(String args[]) {

                   math mymath = new math();

                   for (int i = 100; i <= 999; i++)

                            if (mymath.shuixianhua(i) == true)

                                     System.out.println(i);

         }

}

class math {

         public boolean shuixianhua(int x) {

                   int i = 0, j = 0, k = 0;

                   i = x/100;

                   j = (x%100)/10;

                   k = x%10;

                   if (x == i*i*i + j*j*j + k*k*k)

                            return true;

                   else

                            return false;

         }

}

 

【程序4   题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

1.程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n > i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你,重复执行第一步。

(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。

import java.util.Scanner;

public class Demo04 {

         public Demo04() {

                   super();

         }

         public void fenjie(int n) {

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

                            if (n % i == 0) {

                                     System.out.print(i);

                                     if(n!=i){

                                               System.out.print("*");

                                     }

                                     fenjie(n/i);

                            }

                   }

                   System.exit(0); //退出程序

         }

         public static void main(String[] args) {

                   Scanner in = new Scanner(System.in);

                   System.out.println("请输入N的值:");

                   int N = in.nextInt();

                   System.out.print( "分解质因数:" + N +"=");

                   new Demo04().fenjie(N);

         }

}

 

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

1.程序分析:(a>b)?a:b这是条件运算符的基本例子。

import java.util.Scanner;

public class Demo05 {

         public static void main(String[] args) {

                   System.out.println("请输入N的值:");

                   Scanner in = new Scanner(System.in);

                   int N = in.nextInt();

                   System.out.println(N >= 90 ?"A": (N >= 60 ? "B":"C"));

         }

}

the end

评论(0)