1. 程式人生 > 其它 >java程式設計題50道(1)

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 }