2019-1-5,迴圈演算法作業
阿新 • • 發佈:2019-01-05
package com.lianXi; import java.util.Scanner; /* * 一個人很倒黴,不小心打碎了一位婦女的一籃子雞蛋。為了賠償便詢問籃子裡有多少雞蛋 * 。那婦女說,她也不清楚,只記得每次拿兩個則剩一個,每次拿3個則剩2個,每次拿5個則剩4個, * 若每個雞蛋1元,請你幫忙程式設計,計算最少應賠多少錢? * 要求:用迴圈語句實現,直接打印出結果不給分。 */ public class lianXi01 { public static void main(String[] args) { for(int i=1;;i++) {if(i%2==1&&i%3==2&&i%5==4) { System.out.println("最小應該賠:"+(i*1)+"元"); break; } } } }
輸出結果圖:
第二題:
package com.lianXi; import java.util.Scanner; /* * 從鍵盤接收一個整數N,統計出1~N之間能被7整除的整數的個數,以及這些能被7整除的數的和。 */ public class lianXi02 {public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入一個整數"); int n = sc.nextInt(); int a = 0; int b = n/7; for(int i=1;i<=n;i++) { if(i%7==0) { a+=i; } } System.out.println("能被7整除的整數的個數為:"+b); System.out.println("能被7整除的數的和:"+a); } }
輸出結果圖:
第三題:
package com.lianXi; import java.util.Scanner; /* * 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子, * 小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死, * 問每個月的兔子對數為多少? 程式分析:兔子的規律為數列1,1,2,3,5,8,13,21.... //後一個數是前兩個數的和 */ public class lianXi03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a =1; int b =1; int c =0; System.out.println("請輸入要查詢幾個月的"); int d = sc.nextInt(); for(int i=2;i<d;i++) { a+=b; c=a; a=b; b=c; System.out.println("第"+(i+1)+"個月的兔子數量為:"+c); } } }
輸出結果圖:
第四題:
package com.lianXi; /* 一個籠子有35個頭,94只腳,問雞和兔各有多少? 解題:數學方法:設雞i只,兔j只,方程:i + j = 35 ; 2 * i + 4 * j = 94。 解題思路:雞和兔加起來35只,,所以算每一種可能的腳的個數,符合就輸出就可以了 */ public class lianXi04 { public static void main(String[] args) { for(int i=0;i<100;i++) { for(int j=0;j<100;j++) { if(i + j == 35&&2 * i + 4 * j == 94) { System.out.println("雞的個數為:"+i); System.out.println("兔子的個數為:"+j); break; } } } } }
輸出結果圖:
第五題:
package com.lianXi; /* * 馬克思手稿中有一道趣味數學題: * 有30個人,其中有男人、女人和小孩,在一家飯館裡吃飯共花了50先令, * 每個男人各花3先令,每個女人各花2先令, * 每個小孩各花1先令,問男人、女人和小孩各有幾人? */ public class lianXi05 { public static void main(String[] args) { int d =1; for(int a=1;a<30;a++) { for(int b=1;b<30;b++) { for(int c=1;c<30;c++) { if((a*3+b*2+c*1)==50&&(a+b+c)==30) { System.out.println("第"+(d++)+"種"); System.out.println("男人的數量"+a); System.out.println("女人的數量"+b); System.out.println("小孩的數量"+c); } } } } } }
輸出結果圖:
第六題:
package com.lianXi; /* 判斷101-200之間有多少個素數,並輸出所有素數。 程式分析: 素數是:只能被1或本身整除的數,如:2,3,5,7,11,131... */ public class lianXi { public static void main(String[] args) { int a = 1; for(int i=101;i<=200;i++) { for(int j=2;j<i;j++) { if(i%j==0) { break; } if(j<i-1) { continue; }else { System.out.println("101~200之間素數第"+(a++)+"個數為:"+i); } } }
輸出結果圖:
第七題:
package com.lianXi; /* * 打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數, * 其各位數字立方和等於該數本身。例如:153是一個"水仙花數", * 因為153=1的三次方+5的三次方+3的三次方。 程式分析:利用for迴圈控制100-999個數,每個數分解出個位,十位,百位。 */ public class lianXi07 { public static void main(String[] args) { int i,a,b,c; for(i = 100 ; i <= 999 ; i++) { a = i/100 ; b = i/10%10 ; c =i%100%10 ; if(a*a*a+b*b*b+c*c*c==i) { System.out.println(i); } } } }
輸出結果圖:
第八題:
package com.lianXi; /* * 將一個正整數分解質因數。比如:輸入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的值,反覆執行第一步。 */ import java.util.Scanner; public class lianXi08 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("請輸入一個整數:"); int n =sc.nextInt(); for(int k=2;k<n;k++) { while(n!=k) { if(n%k==0) { System.out.print(k+"*"); n=n/k; } else { break; } } } System.out.print(n); } }
輸出結果圖:
第九題:
package com.lianXi; import java.util.Scanner; /* * 題目:利用條件運算子的巢狀來完畢此題: * 學習成績> =90分的同學用A表示 * ,60-89分之間的用B表示 * ,60分下面的用C表示。 */ public class lianXi09 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入你的成績"); int a = sc.nextInt(); String s =a>=90?"A":a>=60?"B":"C"; System.out.println(s); } }
輸出結果圖:
第10題:
package com.lianXi; /* * 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。 /**在迴圈中,僅僅要除數不等於0。用較大數除以較小的數。 * 將小的一個數作為下一輪迴圈的大數。 * 取得的餘數作為下一輪迴圈的較小的數。 * 如此迴圈直到較小的數的值為0,返回較大的數,此數即為最大公約數 * ,最小公倍數為兩數之積除以最大公約數。* / */ import java.util.Scanner; public class lianXi010 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入第一個整數:"); int m =sc.nextInt(); System.out.println("請輸入第二個整數:"); int n =sc.nextInt(); int a=1; int b=0; int c=m; int d=n; for(int i=2;i<=m;i++) { for(int j=2;j<=n;j++) { if(m%j==0&&n%j==0) { a*=j; System.out.println("這兩個的公倍數有:"+j); m=m/j; n=n/j; } } } System.out.println("這兩個數的最小公倍數是"+a); System.out.println("最大公約數是:"+(c/a)*(d/a)*a); } }
輸出結果圖:
第11題:
package com.lianXi; import java.util.Scanner; /* * 題目:求s=a+aa+aaa+aaaa+aa...a的值。當中a是一個數字。 * 解:加的次數就是其本身,每加一次下個要加的數都加上其尾數,直加到滿足其本身的次數 */ public class lianXi011 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); long sum = 0; System.out.println("請輸入一個整數"); long a =sc.nextInt(); long b=a; //記錄尾數 long c=a; //加的次數 for(long i=0;i<c;i++) { //得出加的最大次數 sum+=a; //累加和 a=a*10; //向前移一位 a+=b; //加尾數 } System.out.println("這個整數的公式結果為:"+sum); } }
輸出結果圖:
第十二題:
package com.lianXi; import java.util.Scanner; /* * 題目:一個數假設恰好等於它的因子之和,這個數就稱為 "完數 "。
列:第一個完全數是6,它有約數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6。 */ public class lianXi012 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("請輸入一個整數:"); int a = sc.nextInt(); int c =a; int b =0; System.out.println(a+"的的正約數有:"); for(int i=1;i<=a;i++) { if(a%i==0) { b+=i; System.out.print(i+" ,"); } } System.out.println(); if(c==b-c) { System.out.println("這是一個完數"); }else { System.out.println("這不是一個完數"); } } }
輸出結果圖:
第十三題:
package com.lianXi; /* * 題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半; * 再落下,求它在 第10次落地時,共經過多少米?第10次反彈多高? */ public class lianXi013 { public static void main(String[] args) { double a =100; double b =0; double sum = 0; for(int i=0;i<=10;i++) { sum+=a; b=a/2; a=b; if(i==10) { System.out.println("第10次反彈是:"+a); } } System.out.println(" 第10次落地時,共經過多少米"+sum); } }
輸出結果圖:
第十四題:
package com.lianXi; /* * 題目:有1、2、3、4四個數字。能組成多少個互不同樣且無反覆數字的三位數?都是多少? */ public class lianXi014 { public static void main(String[] args) { int n =0; for(int i = 1; i <= 4; ++i) for(int j = 1; j <= 4; ++j) for(int k = 1; k <= 4; ++k) if(i != j && j != k && i != k && ++n != 0) System.out.println("NO."+n+":"+i+""+j+""+k); System.out.println("共有:" + n + "種"); } }
輸出結果圖:
第十五題:
package com.lianXi; /* * 題目:一個整數,它加上100後是一個全然平方數, * 再加上168又是一個全然平方數,請問該數是多少? */ public class lianXi015 { public static void main(String[] args) { int x;int y; for(int i=0;i<1000;i++) { x=(int)Math.sqrt(i+100); y=(int)Math.sqrt(i+268); if(x*x==i+100&&y*y==i+268) { System.out.println("1000裡面該數有:"+i); } } } }
輸出結果圖:
第十六題:
package com.lianXi; import java.util.Scanner; /* * 題目:輸入某年某月某日,推斷這一天是這一年的第幾天
1,3,5,7,8,10,12這些月為31天, 2月為29天, 其他為30天
*/ public class lianXi016 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); int mt = 0; System.out.println("請輸入你要查詢的月份:"); int y = sc.nextInt(); System.out.println("請輸入你要查詢的第幾天:"); int t = sc.nextInt(); for(int i=1;i<y-1;i++) { if(i==2) { mt+=29; } if(i<=7&&i!=2) { if(i%2==0) { mt+=30; }else { mt+=31; } }else { if(i%2==0) { mt+=31; }else { mt+=30; } } } int a =mt+t; System.out.println("這一天是這一年的第"+a+"天"); } }
輸出結果圖:
第十七題:
package com.lianXi; import java.util.Arrays; import java.util.Scanner; /* * 題目:輸入三個整數x,y,z。 * 請把這三個數由小到大輸出 */ public class lianXi017 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] ss = new int[3]; System.out.println("請輸入第一個數"); ss[0] =sc.nextInt(); System.out.println("請輸入第二個數"); ss[1] =sc.nextInt(); System.out.println("請輸入第三個數"); ss[2] =sc.nextInt(); Arrays.sort(ss); System.out.println("這三個數由小到大輸出結果為:"); for(int s:ss) { System.out.println(s); } } }
輸出結果圖:
第十八題:
package com.lianXi; /* * 題目:猴子吃桃問題:猴子第一天摘下若干個桃子。 * 當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半。 * 又多吃了一個。以後每天早上都吃了前一天剩下 的一半零一個。 * 到第10天早上想再吃時,見僅僅剩下一個桃子了。求第一天共摘了多少。 */ public class lianXi018 { public static void main(String[] args) { int x=1; for(int j=9;j>=1;j--) { x=2*(x+1); } System.out.println("第一天共摘了多少"+x); } }
輸出結果圖:
第十九題:
package com.lianXi; /* * 有一分數序列:2/1,3/2,5/3,8/5。13/8。21/13... * 求出這個數列的前20項之和。 */ public class lianXi019 { public static void main(String[] args) { double a =2; double b = 1; double c = 0; double sum =0; for(int i=0;i<20;i++) { sum+=a/b; c=a; a=c+b; b=c; } System.out.println(sum); } }
輸出結果圖:
第二十題:
package com.lianXi; /* * 求1+2!+3!+...+20!的和 * 1+2*1+3*2*1+4*3*2*1+5*4*3*2*1+......+20*19*18*17*16*15...*3*2*1 */ public class lianXi20 { public static void main(String[] args) { long sum = 0; long a =1; for(int i=1;i<=20;i++) { a*=i; sum+=a; } System.out.println(sum); } }
輸出結果圖:
第二十一題:
package com.lianXi; /* *有5個人坐在一起。問第五個人多少歲?他說比第4個人大2歲。 *問第4個人歲數,他說比第3個人大2歲。 *問第3個人,又說比第2人大兩歲。 *問第2個人。說比第一個人大兩歲。 最後問第一個人。他說是10歲。請問第五個人多大? */ public class lianxi021 { public static void main(String[] args) { int n = 10; for (int i = 0; i < 4; i++) { n = n + 2; } System.out.println( "第五個人"+n+"歲" ); } }
輸出結果圖:
第二十二題:
package com.lianXi; /* * 題目:海灘上有一堆桃子,五僅僅猴子來分。 * 第一僅僅猴子把這堆桃子憑據分為五份,多了一個, * 這僅僅猴子把多的一個扔入海中,拿走了一份。 * 第二僅僅猴子把剩下的桃子又平均分成五份,又多了一個。 * 它相同把多的一個扔入海中,拿走了一份,第三、第四、第五僅僅猴子都是這樣做的, * 問海灘上原來最少有多少個桃子? */ public class lianXi21 { public static void main(String[] args) { int sum = 0; for (int i = 6;; i++) {// 最少6個分最後一次 sum = i;// 桃子數 for (int j = 0; j < 5; j++) {// 分的次數迴圈 if ((sum - 1) % 5 == 0 && j < 5) {// 如果扔一個後能均分5份,繼續分 sum = (sum - 1) / 5 * 4;// 每分一次剩餘桃子數 if (j == 4) {// 如果已分5次,且仍能除盡,輸出,退出程式 System.out.println(i); System.exit(0); } } } } } }
輸出結果圖:
程式碼百度網盤連結:https://pan.baidu.com/s/1_1sU3J_UC8xqRby_eo22FQ
提取碼:8y8d