作业链接:https://pan.baidu.com/s/1YQW-m91XEeFaPl4vZhP4PQ
提取码:ioi6
1.
//一个人很倒霉,不小心打碎了一位妇女的一篮子鸡蛋。为了赔偿便询问篮子里有多少鸡蛋。那妇女说,她也不清楚,
// 只记得每次拿两个则剩一个,每次拿3个则剩2个,每次拿5个
//则剩4个,若每个鸡蛋1元,请你帮忙编程,计算最少应赔多少钱? 要求:用循环语句实现,
package com.homework; public class Demo { 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); break; } } } }
2.
//从键盘接收一个整数N,统计出1~N之间能被7整除的整数的个数,以及这些能被7整除的数的和
package com.homework; import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int sum=0; System.out.println("请输入一个整数:"); int cnt=sc.nextInt(); for(int i=1;i<=cnt;i++) { if(i%7==0) { System.out.println(i); sum+=i; } } System.out.println("在"+cnt+"以内能被7整除的数之和为"+sum); } }
3.
//古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
//假如兔子都不死,问每个月的兔子对数为多少?
//程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
package com.homework; import java.util.Scanner; public class Demo2 { public static void main(String[] args) { int rabbit = 1; //上月兔子的数量和 int newRabbit = 1; //这一月生成兔子的数量和 int count; //中间值 用来存数量的 Scanner sc = new Scanner(System.in); System.out.println("请输入第几月份:"); int mon=sc.nextInt(); for(int i= 3 ;i<=mon; i++){ count = newRabbit; newRabbit = rabbit + newRabbit; rabbit = count; System.out.println("第"+i+"月份"+"\t兔子总共 "+newRabbit+"对"); } } }
4.
//一个笼子有35个头,94只脚,问鸡和兔各有多少?
package com.homework; public class Demo3 { public static void main(String[] args) { for(int i=0;i<=35;i++) { for(int j=0;j<=35;j++) { if(i+j==35&&2*i+4*j==94) { System.out.println("鸡有"+i+"只"+"兔有"+j+"只"); } } } } }
5.
package com.homework; public class Demo4 { public static void main(String[] args) { //马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令, //每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人? for(int man=1;man<30;man++) { for(int woman=1;woman<30;woman++) { for(int child=1;child<30;child++) { if(3*man+2*woman+child==50&&man+woman+child==30) { System.out.println("男人有"+man+"女人有"+woman+"小孩有"+child); } } } } } }
6.
package com.homework; public class Demo5 { public static void main(String[] args) { //判断101-200之间有多少个素数,并输出所有素数 //素数是:只能被1或本身整除的数 for(int i=101;i<200;i++){ boolean judeg=false; for(int j=2;j<i;j++){ if(i%j==0){ judeg=true; break; } } if(judeg==false){ System.out.print(i+" "); } } } }
7.
package com.homework; public class Demo6 { public static void main(String[] args) { //打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 //例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 //程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 int gewei,shiwei,baiwei; for(int i=100;i<=999;i++) { gewei=i%10; shiwei=i/10%10; baiwei=i/100; if(i==Math.pow(gewei, 3)+Math.pow(shiwei, 3)+Math.pow(baiwei, 3)) { System.out.print(i+" "); } } } }
8.
//将一个正整数分解质因数。比如:输入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的值,反复运行第一步。
package com.homework; import java.util.Scanner; public class Demo7 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("请输入一个正整数"); int num=sc.nextInt(); System.out.print("正整数"+num+"="); for(int i=2;i<=num;i++) { boolean judeg=false; if(num%i==0) { System.out.print(i+"*"); num=num/i; for(int j=2;j<num;j++) { //被除完的数在判断是否为素数 if(num%j==0) { judeg=true; break; } } if(judeg==false) { //如果是素数就退出循环 break; } i=1; //从1开始重新循环 来判断已经除完的数 } } System.out.println(num); } }
9.
package com.homework; import java.util.Scanner; public class Demo8 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入学生成绩:"); int scores=sc.nextInt(); if(scores>=90) { System.out.println("学生成绩为A"); }else if(scores>=60&&scores<=89) { System.out.println("学生成绩为B"); }else { System.out.println("学生成绩为C"); } } }
10.
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/**在循环中,仅仅要除数不等于0。用较大数除以较小的数。将小的一个数作为下一轮循环的大数。
取得的余数作为下一轮循环的较小的数。如此循环直到较小的数的值为0,返回较大的数,
此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /
package com.homework; import java.util.Scanner; public class Demo9 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int tmp; System.out.println("请输入一个正整数:"); int num1=sc.nextInt(); System.out.println("请再输入一个正整数:"); int num2=sc.nextInt(); if(num1<num2) { tmp=num2; num2=num1; num1=tmp; } int n=num1*num2,t=num1%num2; while(num1%num2!=0) { num1=num2; num2=t; t=num1%num2; } System.out.println("最大公约数是"+num2); System.out.println("最小公倍数是"+n/num2); } }
11.
package com.homework; import java.util.Scanner; public class Demo10 { public static void main(String[] args) { //题目:求s=a+aa+aaa+aaaa+aa...a的值。当中a是一个数字。 Scanner sc = new Scanner(System.in); System.out.println("请输入位数值:"); int cnt = sc.nextInt(); System.out.println("请输入一个数"); int s=sc.nextInt(); System.out.print("sum="); int sum=0,nums=0; for(int i=1;i<=cnt;i++) { nums+=s; sum+=nums; s=s*10; System.out.print(nums+"+"); } System.out.println("0"); System.out.println("最后的总和是:"+sum); } }
12.
//题目:一个数假设恰好等于它的因子之和,这个数就称为 "完数 "
package com.homework; public class Demo11 { public static void main(String[] args) { int sun; for(int i=1;i<=1000;i++){ sun=0; for(int j=1;j<i;j++){ if(i%j==0) sun+=j; } if(i==sun) System.out.println("完全数为:"+i); } } }
13.
//题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,
//求它在第10次落地时,共经过多少米?第10次反弹多高
package com.homework; public class Demo12 { public static void main(String[] args) { double high=100; double nhigh=high/2; for(int i=2;i<10;i++) { high=(high+nhigh*2); nhigh=nhigh/2; } System.out.println("落地经过" + high +"米"); System.out.println("反弹高度是" + nhigh + "米"); } }
14.
//题目:有1、2、3、4四个数字。能组成多少个互不同样且无反复数字的三位数?都是多少
package com.homework; public class Demo13 { public static void main(String[] args) { int t=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) { t+=1; System.out.println(i*100+j*10+k); } System.out.println("能组成"+t+"组三位数"); } }
15.
//一个整数,它加上100后是一个全然平方数,
//再加上168又是一个全然平方数,请问该数是多少
package com.homework; public class Demo14 { public static void main(String[] args) { // int i=0,c=1; // while(c!=0) // { // int x=(int) Math.sqrt(i+100); // int y=(int) Math.sqrt(i+168); // if(x*x==(i+100)&y*y==(i+168)) // { // System.out.println("这个数是:"+i); // c=0; // } // i++; // } for(int i=1;i<1000;i++) { for(int j=1;j<1000;j++) { if(i+100==j*j) { for(int k=1;k<1000;k++) { if(i+268==k*k) { System.out.println(i); } } } } } } }
16.
//题目:输入某年某月某日,推断这一天是这一年的第几天
package com.homework; import java.util.Scanner; public class Demo15 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int sum = 0; int day=0; System.out.println("输入年;"); int years=sc.nextInt(); System.out.println("输入月;"); int month=sc.nextInt(); System.out.println("输入日;"); int days=sc.nextInt(); for(int i=1;i<month;i++) { switch(i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31; break; case 4: case 6: case 9: case 11: day=30; break; case 2: //普通闰年:能被4整除但不能被100整除的年份为普通闰年。(如2004年就是闰年,1999年不是闰年); //世纪闰年:能被400整除的为世纪闰年。(如2000年是闰年,1900年不是闰年); if ((years % 100 !=0 &&years % 4 == 0) || (years % 100 == 0 && years%400==0)) { day = 29; } else { day = 28; } break; default: break; } sum+=day; } System.out.println("这是"+years+"年的第"+(sum+days)+"天"); } }
17.
//题目:输入三个整数x,y,z。请把这三个数由小到大输出
package com.homework; import java.util.Scanner; public class Demo16 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num[]=new int[3]; for(int i=0;i<num.length;i++) { System.out.println("请输入第"+(i+1)+"个值"); num[i]=sc.nextInt(); } for(int i=0;i<num.length-1;i++) { for(int j=0;j<num.length-i-1;j++) { int tem; if(num[j]>num[j+1]) { tem=num[j]; num[j]=num[j+1]; num[j+1]=tem; } } } System.out.println("比较完后"); for(int nums:num) { System.out.print(nums+" "); } } }
18.
//题目:猴子吃桃问题:猴子第一天摘下若干个桃子。当即吃了一半,还不瘾,又多吃了一个
//第二天早上又将剩下的桃子吃掉一半。又多吃了一个。以后每天早上都吃了前一天剩下
//的一半零一个。到第10天早上想再吃时,见仅仅剩下一个桃子了。求第一天共摘了多少。
package com.homework; public class Demo17 { public static void main(String[] args) { for(int i=10;i<10000;i++) { int a = i; for(int j=1;j<=10;j++) { a = (a/2 - 1); } if(a==1) { System.out.println("第一天总共摘了"+i+"个桃子."); break; } } } }
19.
//题目:有一分数序列:2/1,3/2,5/3,8/5。13/8。21/13...求出这个数列的前20项之和。
package com.homework; public class Demo18 { public static void main(String[] args) { double num1[]=new double[20]; double num2[]=new double[20]; double sum=0; num1[0]=2; num1[1]=3; num2[0]=1; num2[1]=2; for(int i=2;i<=num1.length-1;i++) { num1[i]=num1[i-1]+num1[i-2]; num2[i]=num2[i-1]+num2[i-2]; } for(int j=0;j<20;j++) { sum+=num1[j]/num2[j]; } System.out.println(sum); } }
20.
//求1+2!+3!+...+20!的和
package com.homework; public class Demo19 { public static void main(String[] args) { long sum=0,num=1; for(int i=1;i<=20;i++) { num*=i; sum+=num; } System.out.println("1+2!+3!+...+20!="+sum); } }
21.
//题目:有5个人坐在一起。问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,
//他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人。说比第一个人大两岁。
//最后问第一个人。他说是10岁。请问第五个人多大
package com.homework; public class Demo20 { public static void main(String[] args) { int age = 10; for (int i = 0; i < 4; i++) { age = age + 2; } System.out.println( "第五个人"+age+"岁" ); } }
22.