java編程題50道(1)


程序1

題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數為多少?

題目思路:

先推出幾個月內兔子數量 1 1 2 3 5 8 13.。。。

可推出規律為 n = n-1+n-2

定義函數累計兔子數量,再通過主函數輸出

 

package test;

import java.util.Scanner;

public class hello {
    public static int rabbit(int i) {
    if(i==1||i==2) {//兔子數量在前兩個月沒有變化
    return 1;
    }
    else {
    return rabbit(i-1)+rabbit(i-2);//根據變化可知三個月后均為前兩月相加
    }
    }


public static void main(String[] args) {
    Scanner in =new Scanner(System.in);
    int i =in.nextInt();
    int a;
    a=rabbit(i);
    System.out.print("輸出月份求該月兔子數量h");
    System.out.print(i+"月共有"+a+"對兔子");
}

}

 

 

 

 

程序2

題目:判斷101-200之間有多少個素數,並輸出所有素數。

題目思路:

以主函數確定范圍並輸出,再構造函數進行素數判斷,

 

 1 package test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class hello {
 6 public static boolean judge_prime(int x) {//先定義判斷素數函數,注意定義函數返回類型!
 7 for (int i=2;i<x;i++) {//判斷函數方法可以任意改變
 8 if(x%i==0) {
 9 return false;
10 }
11 }
12 return true;
13 }
14 public static void main(String[] args) {
15 Scanner in =new Scanner(System.in);
16 System.out.println("請輸入數字給出素數范圍");//主函數中定義素數范圍,通過運用函數進行判斷
17 int a =in.nextInt();
18 int b =in.nextInt();
19 for (int i=a;i<=b;i++) {
20 if(judge_prime(i)) {
21 System.out.print(i+" ");//println則為隔行輸出
22 }
23 }
24 }
25 
26 }

程序3

題目:打印出所有的”水仙花數”,所謂”水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個”水仙花數”,因為153=1的三次方+5的三次方+3的三次方。

題目思路:

與素數篩選相同,以主函數選擇數字,通過構造函數判斷,最后主函數輸出

要注意通過整除取余來獲得各個位數

 

 1 package test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class hello {
 6     public static boolean daffodil(int i) {
 7     int x=i/100;//通過求整取余獲得各個位數上的數字
 8     int y=(i/10)%10;
 9     int z=i%10;
10     if (Math.pow(x, 3)+Math.pow(y, 3)+Math.pow(z, 3)==i) {
11         return true;//以此來判斷水仙花數並返回主函數輸出
12     }
13     return false;
14     }
15     public static void main(String[] args) {
16         Scanner in =new Scanner(System.in);
17         int sum=0;
18         for(int i=100;i<=999;i++)//通過for循環獲得三位數
19         {
20             if(daffodil(i)) {
21                 System.out.print(i+" ");
22                 sum++;//統計個數
23             }
24         }
25         System.out.print("共有"+sum+"個水仙花數");
26     }
27 
28 }

程序4

題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

題目思路:

先找到最低質數,不能相除時尋找下一個質數,當質數與正整數相同時已經除盡便直接輸出

 1 package test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class hello {
 6     
 7     public static void main(String[] args) {
 8         System.out.print("輸入分解數:");
 9         Scanner in =new Scanner(System.in);
10         int x =in.nextInt();
11         System.out.print(x+"=");
12         for (int i=2;i<=x;i++ )
13         {
14             while(x%i==0 && x!=i)//若使用for進行一次便會退出
15             {
16                 x=x/i;
17                 System.out.print(i+"*");//找到質因數輸出
18             }
19             if (x==i) {//當不能再分解時便將他輸出
20                 System.out.print(i);
21                 
22             }
23         }
24     }
25 
26 }

程序5

題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

題目思路:

了解條件運算符的嵌套

 

例如:

 

1、max=(a>b)?a:b

 

就是將a和b二者中較大的一個賦給max。

 

2、min=(a<b)?a:b

 

就是將a和b二者中較小的一個賦給min。

 

 

 1 package test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class hello {
 6     
 7     public static void main(String[] args) {
 8         System.out.print("輸入分數:");
 9         Scanner in =new Scanner(System.in);
10         int x =in.nextInt();
11         String score=(x>90)?"A":(x>=60)?"b":"c";//判斷成績歸類,因abc為字符,所以使用string
12         System.out.print("分數為"+score+"類");
13     }
14 
15 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM