1. 程式人生 > >2019-01-06 流程控制練習題

2019-01-06 流程控制練習題

練習一、

一個人很倒黴,不小心打碎了一位婦女的一籃子雞蛋。為了賠償便詢問籃子裡有多少雞蛋。

那婦女說,她也不清楚,只記得每次拿兩個則剩一個,每次拿3個則剩2個,每次拿5個則剩4個,若每個雞蛋1元

請你幫忙程式設計,計算最少應賠多少錢? 要求:用迴圈語句實現,直接打印出結果不給分

 1 package com.zuoye;
 2 /**
 3  * 一個人很倒黴,不小心打碎了一位婦女的一籃子雞蛋。為了賠償便詢問籃子裡有多少雞蛋。
 4  * 那婦女說,她也不清楚,只記得每次拿兩個則剩一個,每次拿3個則剩2個,每次拿5個則剩4個,若每個雞蛋1元。
 5  * 請你幫忙程式設計,計算最少應賠多少錢
6 * @author Mr.kemi 7 *2019-1-2 8 */ 9 public class One { 10 public static void main(String[] args) { 11 //設變數i為總的雞蛋數 12 for(int i = 0;;i++) { 13 if(i%2==1&&i%3==2&&i%5==4) { 14 System.out.println("最少要賠:"+i+"元錢"); 15 break
; 16 } 17 } 18 } 19 }

 

 

練習二:從鍵盤接收一個整數N,統計出1~N之間能被7整除的整數的個數,以及這些能被7整除的數的和。

 

 1 package com.zuoye;
 2 
 3 import java.util.Scanner;
 4 /**
 5  * 從鍵盤接收一個整數N,統計出1~N之間能被7整除的整數的個數,以及這些能被7整除的數的和
 6  * @author Mr.kemi
 7  * 2019-1-2
 8  */
 9 public class
Two { 10 public static void main(String[] args) { 11 Scanner input = new Scanner(System.in); 12 System.out.println("請輸入一個整數:"); 13 int N = input.nextInt(); 14 //設變數 和初始值為0 15 int sum = 0; 16 //設變數 個數初始值為0 17 int count = 0; 18 for(int i = 1;i<N;i++) { 19 if(i%7==0) { 20 count++; 21 sum +=i; 22 } 23 24 } 25 System.out.println("1~"+N+"之間能被7整除的個數是:"+count+"他們的和是:"+sum); 26 } 27 }

 

 

 

 

 練習三:

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

程式分析:兔子的規律為數列1,1,2,3,5,8,13,21....

 1 package com.zuoye;
 2 
 3 import java.util.Scanner;
 4 /**
 5  * 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子
 6  * 假如兔子都不死,問每個月的兔子對數為多少?
 7  * @author Mr.kemi
 8  *    2019-1-2
 9  */
10 public class Three {
11     public static void main(String [] args){
12         long [] month ;
13         System.out.print("請輸入月份: ");
14         Scanner s = new Scanner(System.in);
15         int i = s.nextInt();
16         month = new long[i];
17 
18         if(month.length >= 1){
19             month[0] = month[1] = 1;//第一和第二個月的兔子都是:1
20         }
21         for(int j = 0; j < month.length; j++){
22             if(j == 0 || j == 1){
23                 System.out.println("兔子數量為: " + month[j]);
24             }else {
25                 month[j] = month[j-2] + month[j-1];//第三個月以後都滿足規律:month[j] = month[j-2] + month[j-1]
26                 System.out.println("兔子數量為: " + month[j]);
27             }
28         }
29     }
30 
31 }

 

練習四:

一個籠子有35個頭,94只腳,問雞和兔各有多少?

解題:數學方法:設雞i只,兔j只,方程:i + j = 35 ;  2 * i + 4 * j = 94。

 

 1 package com.zuoye;
 2 /**
 3  * 題:一個籠子有35個頭,94只腳,問雞和兔各有多少?
 4  * @author Mr.kemi
 5  *    2019-1-2
 6  */
 7 public class Four {
 8     public static void main(String[] args) {
 9         //j為雞  y為兔子
10         int j,y;
11         for(j=0;j<=35;j++) {
12             y = 35-j;//兔子數
13             if(2 * j + 4 * y ==94) {
14                 System.out.println("雞為"+j+"兔為"+y);
15             }
16         }
17         
18     }
19 }

 

 

練習5、馬克思手稿中有一道趣味數學題:有30個人,其中有男人、女人和小孩,在一家飯館裡吃飯共花了50先令,每個男人各花3先令,每個女人各花2先令,每個小孩各花1先令,問男人、女人和小孩各有幾人?

 

 1 package com.zuoye;
 2 
 3 /**
 4  * 馬克思手稿中有一道趣味數學題:有30個人,其中有男人、女人和小孩。
 5  * 在一家飯館裡吃飯共花了50先令,每個男人各花3先令,每個女人各花2先令,每個小孩各花1先令。
 6  * 問男人、女人和小孩各有幾人?
 7  * @author Mr.kemi
 8  *    2019-1-2
 9  */
10 
11 public class Five {
12     public static void main(String[] args) {
13         //宣告變數 man為男人 woman為女人 child為小孩
14         int man,woman,child;
15         for(man =0;man<=10;man++) {
16             for(woman =0;woman<=15;woman++) {
17                 for(child =0;child<=30;child++) {
18                     if(man+woman+child==30&&3*man+2*woman+child==50) {
19                         System.out.println("男人有"+man+"人"+"女人有"+woman+"人"+"小孩有"+child+"人");
20 
21                     }
22 
23                 }
24             }
25         }
26     }
27 }

 

 

 

 

練習6、判斷101-200之間有多少個素數,並輸出所有素數。

程式分析:

    * 素數是:只能被1或本身整除的數,如:2,3,5,7,11,131... 

 1 package com.zuoye;
 2 /**
 3 *判斷101-200之間有多少個素(質)數,並輸出所有素數。
 4 *程式分析:素數是:只能被1或本身整除的數,如:2,3,5,7,11,131...
 5  * @author Mr.kemi
 6  *    2019-1-2
 7  */    
 8 public class Six {
 9     public static void main(String[] args) {
10         //宣告101-200的總質數
11         int count = 0;
12         //用for迴圈遍歷101到200之間的數
13         for(int i=101;i<200;i++) {
14             for(int y=2;y<i;y++) {
15                 if(i%y==0) {
16                     break;
17                 }else if(y==i-1) {
18                     count++;
19                     System.out.println(i);
20                 }
21             }
22             
23         }
24         System.out.println(count);
25     }
26 }

練習7、

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

 1 package com.zuoye;
 2 /**
 3 *打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。
 4 *例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
 5  * @author Mr.kemi
 6  *    2019-1-2
 7  */    
 8 public class Seven {
 9     public static void main(String[] args) {
10         int a,b,c;
11         for(int i=100;i<=999;i++) {
12             a =i/100;
13             b =i/10%10;
14             c =i%10;
15             if((a*a*a)+(b*b*b)+(c*c*c)==i) {
16                 System.out.println("水仙花為:"+i);
17                 
18             }
19         }
20     }
21 }

 

 

 

 

練習8、將一個正整數分解質因數。比如:輸入90,打印出90=2*3*3*5。

 1 package com.zuoye;
 2 
 3 import java.util.Scanner;
 4 //將一個正整數分解質因數。比如:輸入90,打印出90=2*3*3*5。
 5 public class Eight {
 6     public static void main(String[] args) {
 7         Scanner input = new Scanner(System.in);
 8         System.out.println("請輸入一個數字");
 9         int num = input.nextInt();
10         System.out.print(num+"=");
11         for(int i=2;i<10000;i++) {
12             while(num%i==0) {
13                 System.out.print(i);
14                 num=num/i;
15                 if(num==1) {
16                     break;
17                 }
18                 System.out.print("*");
19                 
20             }
21         }
22     }
23 }

練習9、利用條件運算子的巢狀來完畢此題:學習成績> =90分的同學用A表示,60-89分之間的用B表示,60分下面的用C表示。

 1 package com.zuoye;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 利用條件運算子的巢狀來完畢此題:
 7  * 
 8  * @author Mr.kemi
 9  *    2019-1-2
10  */
11 public class Nine {
12     public static void main(String[] args) {
13         Scanner input = new Scanner(System.in);
14         System.out.println("請輸入您的成績:");
15         double i = input.nextInt();
16 //        if(i>=90) {
17 //            System.out.println("成績優秀-A級");
18 //        }else if(i<90&&i>59) {
19 //            System.out.println("成績中等-B級");
20 //        }else {
21 //            System.out.println("成績差-C級");
22 //        }
23         String sum= i<60?"c":(i>89?"A":"B");
24         System.out.println("您的成績為"+sum);
25     }
26 }

練習10、輸入兩個正整數m和n,求其最大公約數和最小公倍數。

 1 package com.zuoye;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
 7  * 在迴圈中,僅僅要除數不等於0。用較大數除以較小的數。將小的一個數作為下一輪迴圈的大數。
 8  * 取得的餘數作為下一輪迴圈的較小的數。如此迴圈直到較小的數的值為0,返回較大的數,
 9  * 此數即為最大公約數,最小公倍數為兩數之積除以最大公約數。
10  * @author Mr.kemi
11  *    2019-1-2
12  */
13 public class Ten {
14     public static void main(String[] args) {
15         Scanner input = new Scanner(System.in);
16         System.out.println("輸入兩個正整數");
17         int m = input.nextInt();
18         int n = input.nextInt();
19         int a;
20         int c=n;
21         int d=m;
22         if(m<n) {
23             a=m;
24             m=n;
25             n=a;
26         }
27         while(n!=0) {
28             int b=m%n;
29             m=n;
30             n=b;
31         }
32         System.out.println(m);
33         System.out.println(c*d/m);
34     }
35 }