2019-1-5,循环算法作业
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