《java编程经典50题-.pdf》由会员分享,可在线阅读,更多相关《java编程经典50题-.pdf(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、package src;import java.io.*;import java.util.*;public class Java_50test public static void main(String args)throws NumberFormatException,IOException System.out.print(请输入你要输出第几题:(如:1 2 3 4 5.。));Scanner in=new Scanner(System.in);int n=in.nextInt();switch(n)case 1:System.out.println(第+n+题:);Rabbit1()
2、;break;case 2:System.out.println(第+n+题:);FindPrimeNumber();break;case 3:System.out.println(第+n+题:);FindDaffodilNumber();break;case 4:System.out.println(第+n+题:);FenJie();break;case 5:System.out.println(第+n+题:);ConditionOperator();break;case 6:System.out.println(第+n+题:);GcdTest();break;case 7:System.o
3、ut.println(第+n+题:);StChar();break;case 8:System.out.println(第+n+题:);TestAdd();break;case 9:System.out.println(第+n+题:);WanShu();break;case 10:System.out.println(第+n+题:);TestBall();break;case 11:System.out.println(第+n+题:);TestTN();break;case 12:System.out.println(第+n+题:);MoneyAward();break;case 13:Sys
4、tem.out.println(第+n+题:);FindNumber();break;case 14:System.out.println(第+n+题:);TestDay();break;case 15:System.out.println(第+n+题:);TestCompare();break;case 16:System.out.println(第+n+题:);Nine();break;case 17:System.out.println(第+n+题:);MonkeyEatPeach();break;case 18:System.out.println(第+n+题:);Prog();bre
5、ak;case 19:System.out.println(第+n+题:);LingXing();break;case 20:System.out.println(第+n+题:);TestAdd2();break;case 21:System.out.println(第+n+题:);TestJieCheng();break;case 22:System.out.println(第+n+题:);Testjiecheng1();break;case 23:System.out.println(第+n+题:);TestAge();break;case 24:System.out.println(第+
6、n+题:);TestNumber();break;case 25:System.out.println(第+n+题:);HuiWenShu();break;case 26:System.out.println(第+n+题:);Ex26();break;case 27:System.out.println(第+n+题:);FindPrimeNumber1();break;case 28:System.out.println(第+n+题:);TestSort();break;case 29:System.out.println(第+n+题:);TestAdd3();break;case 30:Sy
7、stem.out.println(第+n+题:);ArraySort();break;case 31:System.out.println(第+n+题:);ArrayConverse();break;case 32:System.out.println(第+n+题:);Ex32();break;case 33:System.out.println(第+n+题:);YangHui();break;case 34:System.out.println(第+n+题:);Paixu();break;case 35:System.out.println(第+n+题:);ArrayChange();bre
8、ak;case 36:System.out.println(第+n+题:);Array1();break;case 37:System.out.println(第+n+题:);Test3Quit();break;case 38:System.out.println(第+n+题:);TestLength();break;case 39:System.out.println(第+n+题:);Test2();break;case 40:System.out.println(第+n+题:);Test3();break;case 41:System.out.println(第+n+题:);MonkeyP
9、atch();break;case 42:System.out.println(第+n+题:);Test4();break;case 43:System.out.println(第+n+题:);Test5();break;case 44:System.out.println(第+n+题:);TestEven();break;case 45:System.out.println(第+n+题:);TestPrime9();break;case 46:System.out.println(第+n+题:);TestString();break;case 47:System.out.println(第+
10、n+题:);TestPrint();break;case 48:System.out.println(第+n+题:);TestCode();break;case 49:System.out.println(第+n+题:);TestString2();break;case 50:System.out.println(第+n+题:);Test5();break;default:System.out.print(题目输入有误);/*【程序 1】TestRabbit.java 题目:古典问题:有一对兔子,从出生后第3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问
11、每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.*/private static void Rabbit1()System.out.print(请输入月数:);Scanner in=new Scanner(System.in);int mth=in.nextInt();int sum=0;/兔子总数int a=1;int b=1;if(mth 3)sum=1;System.out.print(第+mth+个月兔子总数为+sum+只!);else int i;int c;for(i=3;i=mth;+i)sum=a+b;a=b;b=sum;c=i-1;S
12、ystem.out.print(第+c+个月兔子总数为+sum+只!);/*【程序 2】FindPrimeNumber.java 题目:判断101-200 之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。*/private static void FindPrimeNumber()int count=0;int numb;System.out.println(101-200之间的素数有:);for(numb=101;numb=200;numb+)boolean flag=true;for(
13、int i=2;inumb;i+)if(numb%i=0)flag=false;break;if(flag=true)count+;System.out.print(numb+);System.out.print(n);System.out.print(总共+count+个!);/*【程序 3】FindDaffodilNumber.java 题目:打印出所有的水仙花数,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个 水仙花数,因为 153=1 的三次方 5 的三次方 3 的三次方。1.程序分析:利用for 循环控制100-999 个数,每个数分解出个位,十位
14、,百位。*/private static void FindDaffodilNumber()System.out.println(水仙花数有:);int a,b,s,g,sum;for(a=100;a=999;a+)b=a/100;s=(a-b*100)/10;g=(a-b*100-s*10);sum=b*b*b+s*s*s+g*g*g;if(sum=a)System.out.print(a+);/*【程序 4】FenJie.java 题目:将一个正整数分解质因数。例如:输入90,打印出 90=2*3*3*5。程序分析:对n 进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)
15、如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果 nk,但 n 能被 k 整除,则应打印出k 的值,并用n 除以 k 的商,作为新的正整数你n,重复执行第一步。(3)如果 n 不能被 k 整除,则用k+1作为 k 的值,重复执行第一步。*/private static void FenJie()System.out.print(请输入一个正整数:);Scanner in=new Scanner(System.in);int numb=in.nextInt();int i=2;System.out.print(numb+=);while(numbi)if(numb%i
16、=0)System.out.print(i+*);numb=numb/i;else i+;System.out.print(i);/*【程序 5】ConditionOperator.java 题目:利用条件运算符的嵌套来完成此题:学习成绩=90 分的同学用A 表示,60-89 分之间的用 B 表示,60 分以下的用C 表示。1.程序分析:(ab)?a:b 这是条件运算符的基本例子。*/private static void ConditionOperator()System.out.print(请输入成绩:);Scanner in=new Scanner(System.in);int grad
17、e=in.nextInt();if(grade100|grade=90)?分,属于 A 等:(grade=60)?分,属于 B 等:分,属于 C等;System.out.print(grade+str);/*【程序 6】Test1.java GcdTest.java后者是辗转相除法题目:输入两个正整数m 和 n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。*/private static void GcdTest()System.out.print(请输人两个整数:);Scanner sc=new Scanner(System.in);int a=sc.nextInt();int b
18、=sc.nextInt();int numb1=a;int numb2=b;System.out.println(a=+a+;b=+b);int temp;if(a b)temp=a;a=b;b=temp;while(b!=0)temp=a%b;a=b;b=temp;System.out.println(最大公约数为+a);System.out.println(最小公倍数为+numb1*numb2/a);/*【程序 7】StChar.java 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while 语句,条件为输入的字符不为n.*/private
19、static void StChar()int letterCount=0;int numbCount=0;int spaceCount=0;int otherCount=0;System.out.print(请用键盘输入一组数据!);Scanner str=new Scanner(System.in);String n=str.nextLine();char a=n.toCharArray();for(int i=0;i 0;i-)s=(int)(s+a*Math.pow(10,b-i);if(i=1)System.out.print(s);else System.out.print(s+)
20、;finals+=s;System.out.print(=+finals);/*【程序 9】WanShu.java 题目:一个数如果恰好等于它的因子之和,这个数就称为完数。例如 6=123.编程找出1000 以内的所有完数。*/private static void WanShu()int num;int i,temp;for(num=1;num=1000;num+)for(i=1,temp=0;inum;i+)if(num%i=0)temp=temp+i;if(temp=num)System.out.println(temp);/*【程序 10】TestBall.java 题目:一球从100
21、 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10 次落地时,共经过多少米?第10 次反弹多高?*/private static void TestBall()double a=100;double sum=100;for(int i=1;i=10;i+)a=a*0.5;sum=sum+a*2;sum=sum-a*2;System.out.println(反弹:+a+米);System.out.println(共经过:+sum+米);/*【程序 11】TestTN.java 题目:有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可
22、填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。*/private static void TestTN()int a=0;int b=0;int c=0;int num=1;for(a=1;a 5;a+)for(b=1;b 5;b+)for(c=1;c=0&money 100000&money 200000&money 400000&money 600000&money 1000000)Award=(long)(100000*a+100000*b+200000*c+200000*d+4000000*e+(money-1000000)*f);System.
23、out.print(利润为+money+元时的奖金是:+Award+元);/*【程序 13】FindNumber.java 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?1.程序分析:在 10 万以内判断,先将该数加上100 后再开方,再将该数加上268 后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:*/private static void FindNumber()for(int i=0;i100000;i+)if(Math.sqrt(i+100)%1=0)&(Math.sqrt(i+268)%1=0)System.
24、out.println(i);/*【程序 14】TestDay.java 题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3 月 5日为例,应该先把前两个月的加起来,然后再加上5 天即本年的第几天,特殊情况,闰年且输入月份大于3 时需考虑多加一天。*/private static void TestDay()int year=inputyear();int month=inputmonth();int day=inputday();int daynumb=0;switch(month)case 1:daynumb=day;System.out.print(year+年+mo
25、nth+月+day+日是本年的第+daynumb+天!);break;case 2:daynumb=31+day;System.out.print(year+年+month+月+day+日是本年的第+daynumb+天!);break;case 3:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+day;else daynumb=31+28+day;System.out.print(year+年+month+月+day+日是本年的第+daynumb+天!);break;case 4:if(year%400=0)|(year%4=0&year
26、%100!=0)daynumb=31+29+31+day;else daynumb=31+28+31+day;System.out.print(year+年+month+月+day+日是本年的第+daynumb+天!);break;case 5:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+31+30+day;else daynumb=31+28+31+30+day;break;case 6:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+31+30+31+day;else daynu
27、mb=31+28+31+30+31+day;break;case 7:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+31+30+31+30+day;else daynumb=31+28+31+30+31+30+day;break;case 8:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+31+30+31+30+31+day;else daynumb=31+28+31+30+31+30+31+day;break;case 9:if(year%400=0)|(year%4=0&year
28、%100!=0)daynumb=31+29+31+30+31+30+31+31+day;else daynumb=31+28+31+30+31+30+31+31+day;System.out.print(year+年+month+月+day+日是本年的第+daynumb+天!);break;case 10:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+31+30+31+30+31+31+30+day;else daynumb=31+28+31+30+31+30+31+31+30+day;System.out.print(year+年+mo
29、nth+月+day+日是本年的第+daynumb+天!);break;case 11:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+31+30+31+30+31+31+30+31+day;else daynumb=31+28+31+30+31+30+31+31+30+31+day;System.out.print(year+年+month+月+day+日是本年的第+daynumb+天!);break;case 12:if(year%400=0)|(year%4=0&year%100!=0)daynumb=31+29+31+30+31+30
30、+31+31+30+31+30+day;else daynumb=31+28+31+30+31+30+31+31+30+31+30+day;System.out.print(year+年+month+月+day+日是本年的第+daynumb+天!);break;static int inputyear()System.out.println(请输入年份:(例如 1992));Scanner sr=new Scanner(System.in);int year=sr.nextInt();if(year 0)System.out.println(年份输入有误!);return inputyear(
31、);return year;static int inputmonth()System.out.println(请输入月份:(例如 11 12));Scanner m=new Scanner(System.in);int month=m.nextInt();if(month 12)System.out.println(月份输入有误!);return inputmonth();return month;static int inputday()System.out.println(请输入日期:(例如 1-31));Scanner d=new Scanner(System.in);int day=
32、d.nextInt();if(day31)System.out.println(日期输入有误!);return inputday();return day;/*【程序 15】TestCompare.java 题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x 上,先将x 与 y 进行比较,如果xy 则将 x 与 y的值进行交换,然后再用x 与 z 进行比较,如果xz 则将 x 与 z 的值进行交换,这样能使x最小。*/private static Object TestCompare()Scanner sc=new Scanner(System.i
33、n);System.out.println(请输入 x:);int x=sc.nextInt();System.out.println(请输入 y:);int y=sc.nextInt();System.out.println(请输入 z:);int z=sc.nextInt();int temp;if(x y)temp=x;x=y;y=temp;if(x z)temp=x;x=z;z=temp;if(y z)temp=y;y=z;z=temp;System.out.println(从小到大的顺序为:+x+y+z);return TestCompare();/*【程序 16】Nine.java
34、 题目:输出9*9 口诀。1.程序分析:分行与列考虑,共9 行 9 列,i 控制行,j 控制列。*/private static void Nine()for(int i=1;i=9;i+)for(int j=1;j=i;j+)System.out.print(j+*+i+=+j*i+);System.out.println();/*【程序 17】MonkeyEatPeach.java 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10 天早上想再吃时,见只剩下一个桃
35、子了。求第一天共摘了多少。1.程序分析:采取逆向思维的方法,从后往前推断。*/private static void MonkeyEatPeach()int sum=1;for(int i=1;i=10;i+)sum=sum*2+1;int day=10-i;System.out.println(第+day+天剩余+sum+个!);System.out.println(即总数为:+sum+个!);/*【程序 18】Prog.java 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c 三人,乙队为x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a 说他不和x比,c 说他不和
36、x,z 比,请编程序找出三队赛手的名单。c VS y a Vs z b Vs x*/*蛋疼*/private static void Prog()char arr1=a,b,c;char arr2=x,y,z;for(int i=0;i arr1.length;i+)for(int j=0;j arr2.length;j+)if(arr1i=a&arr2j=x)|(arr1i=c&arr2j=x)|(arr1i=c&arr2j=z)continue;System.out.println(arr1i+vs +arr2j);/*【程序 19】LingXing.java 题目:打印出如下图案(菱形)
37、*1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。*/private static void LingXing()int arr=1,3,6,8,6,3,1;int arrs=3,2,1,0,1,2,3;for(int i=0;i 4;i+)for(int j=0;j arrsi;j+)System.out.print();for(int j=0;j arri;j+)System.out.print(*);System.out.println();for(int i=4;i arr.length;i+)for(int j=
38、0;j arrsi;j+)System.out.print();for(int j=0;jarri;j+)System.out.print(*);System.out.println();/*【程序 20】TestAdd2.java 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20 项之和。1.程序分析:请抓住分子与分母的变化规律。*/private static Object TestAdd2()double m=2;double n=1;double a;double sum=0;System.out.print(请输入您要输出前多少项之和:(
39、例如:20));Scanner sr=new Scanner(System.in);int b=sr.nextInt();for(int i=0;i b;i+)sum+=m/n;a=m;m=m+n;n=a;System.out.println(sum=+sum);return TestAdd2();/*【程序 21】TestJieCheng.java 题目:求 1+2!+3!+.+20!的和1.程序分析:此程序只是把累加变成了累乘。*/private static Object TestJieCheng()int m,n=1;int sum=0;System.out.print(请输入您要输出
40、前多少项阶乘之和:(例如:20));Scanner sr=new Scanner(System.in);int a=sr.nextInt();for(int i=1;i=a;i+)for(m=1;m 0)return jieCheng(n-1)*n;else return 1;/*【程序 23】TestAge.java 题目:有5 个人坐在一起,问第五个人多少岁?他说比第4 个人大 2 岁。问第4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第2 个人,说比第一个人大两岁。最后问第一个人,他说是10 岁。请问第五个人多大?1.程序分析:利用递归的方法,递归分为
41、回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10 岁),再往回推。*/private static void TestAge()int sum=getAge(5);System.out.println(sum);public static int getAge(int n)int c;if(n=1)c=10;else c=getAge(n-1)+2;return c;/*【程序 24】TestNumber.java 题目:给一个不多于5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。*/*算法 1*/private static Objec
42、t TestNumber()System.out.print(请输入一个不多于5 位的正整数:);Scanner sr=new Scanner(System.in);int numb=sr.nextInt();int temp=numb/10;int i=1;int a;if(temp=1)i+;a=numb-temp*10;/abcd numb=temp;System.out.print(a);temp=temp/10;if(temp=1)i+;a=numb-temp*10;/abc numb=temp;System.out.print(a);temp=temp/10;if(temp=1)i
43、+;a=numb-temp*10;/abcd numb=temp;System.out.print(a);temp=temp/10;if(temp=1)i+;a=numb-temp*10;/abcd numb=temp;System.out.print(a);temp=temp/10;a=numb-temp*10;/abcd numb=temp;System.out.println(a);System.out.println(您输入的数一共:+i+位);return TestNumber();/*算法 2*/public static void test()System.out.println
44、(请输入一个正整数:);Scanner sc=new Scanner(System.in);String num=sc.nextLine();int numLength=num.length();System.out.println(位数:+numLength);for(int i=numLength-1;i=0;i-)System.out.print(num.charAt(i)+t);/*【程序 25】HuiWenShu.java 题目:一个5 位数,判断它是不是回文数。即12321 是回文数,个位与万位相同,十位与千位相同。*/private static Object HuiWenShu
45、()System.out.print(请输人一个5 位数:);Scanner sr=new Scanner(System.in);String numb=sr.nextLine();int i=numb.length();if(i!=5)System.out.print(输入的数位数不对!);return HuiWenShu();if(numb.charAt(4)=numb.charAt(0)&numb.charAt(3)=numb.charAt(1)System.out.print(numb+是回文数);else System.out.print(numb+不是回文数);return Hui
46、WenShu();/*【程序 26】Ex26.java 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if 语句判断第二个字母。*/private static void Ex26()System.out.print(请输入星期值英文的第一个字母,我来帮您判断是星期几:);Scanner sr=new Scanner(System.in);String letter=sr.next();if(letter.length()=1)char weekFirst=letter.char
47、At(0);switch(weekFirst)case m:case M:System.out.println(星期一(Monday);break;case t:case T:System.out.print(由于星期二(Tuesday)与星期四(Thursday)均以字母T 开头,故需输入第二个字母才能正确判断:);letter=sr.next();if(letter.length()=1)char weekSecond=letter.charAt(0);if(weekSecond=U|weekSecond=u)System.out.println(星期二(Tuesday);break;el
48、se if(weekSecond=H|weekSecond=h)System.out.println(星期四(Thursday);break;else System.out.println(输入错误,不能识别的星期值第二个字母,程序结束!);break;else System.out.println(输入错误,只能输入一个字母,程序结束!);break;case w:case W:System.out.println(星期三(Wednesday);break;case f:case F:System.out.println(星期五(Friday);break;case s:case S:Sys
49、tem.out.print(由于星期六(Saturday)与星期日(Sunday)均以字母S 开头,故需输入第二个字母才能正确判断:);letter=sr.next();if(letter.length()=1)char weekSecond=letter.charAt(0);if(weekSecond=A|weekSecond=a)System.out.println(星期六(Saturday);break;else if(weekSecond=U|weekSecond=u)System.out.println(星期日(Sunday);break;else System.out.printl
50、n(输入错误,不能识别的星期值第二个字母,程序结束!);break;else System.out.println(输入错误,只能输入一个字母,程序结束!);break;default:System.out.println(输入错误,不能识别的星期值第一个字母,程序结束!);break;else System.out.println(输入错误,只能输入一个字母,程序结束!);/*【程序 27】SuShu.java 题目:求 100 之内的素数*/private static void FindPrimeNumber1()int count=0;int numb;System.out.print