1、JAVA经典编程50题附答案要点JAVA经典编程50题初学JAVA坚持做完,JAVA完全可以入门,每天做4-5题就可以答案是本人自己做的,才初学浅,若有问题还希望有及时指出,感激不尽联系QQ:1345523590 网名:叫我雷锋【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?package java50;public class Java1 /* * param 算法50题第一题。兔子问题,问题分析是一个斐波纳契数列,本题应该说有多种方法,我只写了其中一个,你自己可以试试用数组的方法,
2、还有递归都可以。 */ public static void main(String args) / TODO Auto-generated method stub /已经知道一月和二月的兔子数 int a1=1; int a2=1; int a3,a4; /打印一二月的兔子数 System.out.print(a1+ +a2); /从3月开始,到十二月的兔子数 for(int i=3;i=12;i+) a3=a1+a2; a1=a2; a2=a3; /打印每个月的兔子数 System.out.print( +a3); 【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。 程序
3、分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。package java50;import java.util.*;public class Java2 /* * param args * 求101到200之间的素数 * 素数是它除以2到sqr本身的数,没有能够整除他的 */ public Java2() public void su(int a) public static void main(String args) / TODO Auto-generated method stub int a=new int 100; for
4、(int i=100;i201;i+) for(int j=0;ja.length;j+) aj=i;break; Java2 j2=new Java2(); j2.su(a); 【程序3】题目:打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数 ,因为153=1的三次方5的三次方3的三次方。package java50;public class Java3 /* * 【程序3】题目:打印出所有的 水仙花数 , * 所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。 * 例如:153是一个 水仙花数 , * 因为15
5、3=1的三次方5的三次方3的三次方。 */ public static void main(String args) / TODO Auto-generated method stub for(int i=101;i1000;i+) int a=i%10; int b=(i/10)%10; int c=i/100; /System.out.print(a+b+c); if(i=a*a*a+b*b*b+c*c*c) System.out.println(i); 【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数
6、k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。package java50;import java.util.Scanner;public class Java4 /* * 程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 * 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: * (1)如果这个质数恰等于n,则说明分
7、解质因数的过程已经结束,打印出即可。 * (2)如果n k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 * (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 */ public static void main(String args) / TODO Auto-generated method stub Scanner s=new Scanner(System.in); int n=s.nextInt(); int k=2; while(n=k) if(n=k)System.out.println(k);break; else if
8、(n%k=0)System.out.print(k+*); n=n/k; else k+; 【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩 =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。package java50;public class Java5 /* * 【程序5】 * 题目:利用条件运算符的嵌套来完成此题: * 学习成绩 =90分的同学用A表示, * 60-89分之间的用B表示,60分以下的用C表示。 */ public static void main(String args) / TODO Auto-generated method stub
9、 int c=80; char cj=(c=90)?A:(c=60)?B:C; System.out.println(cj); 【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。/*在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /import java.util.*;public class lianxi06 public static void main(String args) int a ,b,m
10、;Scanner s = new Scanner(System.in);System.out.print( 键入一个整数: ); a = s.nextInt();System.out.print( 再键入一个整数: ); b = s.nextInt(); deff cd = new deff(); m = cd.deff(a,b); int n = a * b / m; System.out.println(最大公约数: + m); System.out.println(最小公倍数: + n); class deffpublic int deff(int x, int y) int t; if
11、(x =a & aa=A & aa=0 & aa=9) sz+; else qt+; /输出结果 System.out.println(字母有 +zm+个;); System.out.println(空格有 +kg+个;); System.out.println(数字有 +sz+个;); System.out.println(其它字符 +qt+个。); 【程序8】题目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。package java50;import java.util.Scann
12、er;public class Java8 /* *【程序8】 *题目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。 *例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 */ public static void main(String args) / TODO Auto-generated method stub Scanner ss=new Scanner(System.in); System.out.println(请输入a的值:); int a=ss.nextInt(); System.out.println(请输入有几个数
13、相加:); int g=ss.nextInt(); int s=0; for(int i=1;i=g;i+) s=s+a; /System.out.print(a=+a+ ); a=a*10+2; /System.out.print(s=+s+ ); /System.out.println(2+22+222+2222+22222); System.out.println(结果是+s); 【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为 完数 。例如6=123.编程 找出1000以内的所有完数。package java50;public class Java9 /* * 【程序9】
14、* 题目:一个数如果恰好等于它的因子之和, * 这个数就称为 完数 。例如6=123.编程 * 找出1000以内的所有完数。 */ public static void main(String args) / TODO Auto-generated method stub for(int i=6;i1000;i+) int h=0; for(int j=1;j=i;j+) if(i%j=0) /if(h!=0)System.out.print(h+); h=h+j; if(h=i) System.out.println(i); /6=1x2x3; /24=1x2x3x4; /28=1x2x4x
15、7x14 【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? package java50;public class Java10 /* * 【程序10】题目:一球从100米高度自由落下, 每次落地后反跳回原高度的一半;再落下,求它在 * 第10次落地时,共经过多少米?第10次反弹多高? * s=299.609375 h=0.09765625 */ public static void main(String args) / TODO Auto-generated method stub double h
16、 = 100; double s = 0; for (int i = 1; i = 10; i+) if (i = 1) s = 100; System.out.println(s); else s = s + h * 2; System.out.println(s); h = h / 2; System.out.println(h); System.out.println(s= + s); System.out.println(第十次反弹 + h + 米); 【程序11】题目:有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?package java50;publ
17、ic class Java11 /* * 【程序11】题目:有1、2、3、4四个数字, * 能组成多少个互不相同且无重复数字的三位数?都是多少? */ public static void main(String args) / TODO Auto-generated method stub int s=0; for(int a=1;a5;a+) for(int b=1;b5;b+) for(int c=1;c5;c+) for(int d=1;d10) if(lr20) if(lr40) if(lr60) if(lr100) System.out.println(10*0.1+(10*0.0
18、75)+(20*0.05)+(20*0.03)+(40*0.015)+(lr-100)*0.01); else System.out.println(10*0.1+(10*0.075)+(20*0.05)+(20*0.03)+(lr-60)*0.015); else System.out.println(10*0.1+(10*0.075)+(20*0.05)+(lr-40)*0.03); else System.out.println(10*0.1+(10*0.075)+(lr-20)*0.05); else System.out.println(10*0.1+(lr-10)*0.075);
19、elseSystem.out.println(0.1*lr); 【程序13】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?package java50;public class Java13 /* * 【程序13】 * 题目:一个整数,它加上100后是一个完全平方数, * 再加上168又是一个完全平方数, * 请问该数是多少? */ public static void main(String args) / TODO Auto-generated method stub /做一个循环找小于100000之间的数 for(double i=-10
20、0;i100000;i+) /如果这个数的开方%1=0,说明这个数的开方是个整数 if(Math.sqrt(i+100)%1=0) if(Math.sqrt(i+268)%1=0) System.out.println(int)i); /*按题意循环应该从-100开始(整数包括正整数、负整数、零),这样会多一个满足条件的数-99。但是我看到大部分人解这道题目时都把题中的“整数”理解成正整数,我也就随大流了。*/【程序14】题目:输入某年某月某日,判断这一天是这一年的第几天?package java50;import java.util.Scanner;public class Java14 /
21、* * 【程序14】 * 题目:输入某年某月某日,判断这一天是这一年的第几天? */ public static void main(String args) / TODO Auto-generated method stub Scanner s=new Scanner(System.in); System.out.println(请输入年份:); int year=s.nextInt(); System.out.println(请输入月份:); int month=s.nextInt(); System.out.println(请输入几号:); int day=s.nextInt(); int d=0; if (year 0 | month 12 | day 31) System.out.println(输入错误,请重新输入!); System.exit(0); for(int i=1;i=month;i+) switch(month) case 1: case 3: case 5: case 7: case 8:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1