java基础练习题及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

【程序1】題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?刚开始真的无从下手,这么难的,怎么可以说是基础呢,感觉这些应该是逻辑分析很强的,第一个月只有一对兔子,第二个月还是只有一对兔子,第三个月,就有两对了,第四个月3对,第五个月5对,第六个月8对,第七个月是13对。。。。。。规律出来了,你们发了没?[java]viewplaincopy1.publicclassExample1{2.publicstaticvoidmain(Stringargs[]){3.//i是表示月份的,这里计算了36个月,也就是三年,兔子的数量4.inti;5.longarr[]=newlong[36];//这个数组时用来计算每月有兔子的对数6.arr[0]=arr[1]=1;7.System.out.println(第1个月有兔子1对+,+总数是+2);8.System.out.println(第2个月有兔子1对+,+总数是+2);9.for(i=2;i=35;i++){10.arr[i]=arr[i-1]+arr[i-2];11.System.out.println(第+i+个月有兔子+arr[i]+对+,+总数是+2*arr[i]);12.//规律是每个数字都是前面两个数字之和13.}14.}15.16.}OK,用时45分钟。【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数。也就是素数只有两个因子。[java]viewplaincopy1.publicclassExample2{2.publicstaticvoidmain(Stringargs[]){3.inti,j,n,m,x;//n是用来存储余数的;m是用来统计具体一个数的因子;4.n=0;m=0;x=0;//x是用来统计101~200之前素数的个数5.for(i=101;i=200;i++){//两重循环6.for(j=1;j=i;j++){7.n=i%j;//去余数,如果余数为零,就是该数的因子8.if(n==0){m=m+1;}//统计某数有多少个因子9.}10.if(m==2){System.out.print(i+);x=x+1;}//如果某数的因子只有两个,那它就一定是素数,那这个数就应该输出11.m=0;//一定要清零,不然会继续累加12.}13.System.out.println();14.System.out.println(在101~200之間一共有素數:+x+個);15.}16.}我好笨啊,这题我做了两个钟头,最终还是解决了。加油【程序3】题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。想当年,做这些题都是网上找答案,如今事过境迁,不会也得会。[java]viewplaincopy1.publicclassExample3{2.publicstaticvoidmain(Stringargs[]){3.inta,sum;//表示100~9994.inti,j,k;//分别表示百位、十位、各位5.for(a=100;a=999;a++){6.i=a/100;7.j=(a-i*100)/10;8.k=a-i*100-j*10;9.sum=i*i*i+j*j*j+k*k*k;10.//java的运算符,立方要这样写,写成i^3这样,竟然运算不出来11.//如果遇到高次的话可以使用循环算出来12.if(sum==a)13.{System.out.println(sum);14.}15.16.}还是有学到点东西,应该还有别的方法。那我就试试吧。[java]viewplaincopy1.publicclassExample4{2.publicstaticvoidmain(Stringargs[]){3.intsum;4.inti,j,k;//分别表示百位、十位、各位5.for(i=1;i=9;i++){6.for(j=0;j=9;j++){7.for(k=0;k=9;k++){8.sum=i*i*i+j*j*j+k*k*k;9.if(i*100+j*10+k==sum){10.System.out.println(sum);11.}12.}13.}14.}15.16.}17.}【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。[java]viewplaincopy1.importjava.util.*;2.publicclassExample4{3.publicstaticvoidmain(String[]args){4.intx;5.Scannerin=newScanner(System.in);//定义从键盘输入6.System.out.print(请输入一个正整数:);//提示7.x=in.nextInt();//将从键盘输入的数赋值给x8.newPrimeSplit(x);//匿名初始化一个对象,还有参数的构造函数9.}10.}11.classPrimeSplit{12.intk=2;//将最小的质数赋值给k13.publicPrimeSplit(intx){//小于等于1的数不可以分解14.if(x=1){15.System.out.println(x+是无效的被分解数);16.}17.elseif(x==2){18.System.out.println(x+分解后的质因数为:1*+x);//如果输入的是最小质数2,19.}else{20.System.out.print(x+分解后的质因数为:1);//1是所有的正整数的质数21.while(k=x){//输入的数可以被k整除22.if(x%k==0){23.System.out.print(*+k);//将k添加到结果中24.x=x/k;//除以最小质数后重新循环25.}26.else{27.k++;28.}29.}30.}31.}32.}【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。[java]viewplaincopy1.publicclassExample5{2.publicstaticvoidmain(Stringargs[]){3.intscore=90;//分数的值可以随便修改4.if(score=90){5.System.out.println(A);6.}7.elseif(score=60){8.System.out.println(B);9.}10.else{11.System.out.println(C);12.}13.14.}15.}【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。[java]viewplaincopy1.publicclassExample6{2.publicstaticvoidmain(Stringargs[]){3.gcdlcma=newgcdlcm();4.System.out.println(兩數的最大公約數是:+a.gcd(10,16));5.System.out.println(兩數的最小公倍數是:+a.lcm(16,10));6.}7.}8.classgcdlcm{9.intgcd(intm,intn){10.if(mn){//這個判斷是爲了將大數放在前面11.inttemp=n;12.n=m;13.m=temp;14.}15.if(m%n==0){16.returnn;17.}18.else{19.m%=n;20.returngcd(m,n);21.//這裡也可以寫成gcd(n,m),就省掉了前面的判斷了,會快一點22.}23.}24.intlcm(intm,intn){25.inti=1;26.if(mn){//這個判斷是爲了將大數放在前面27.inttemp=n;28.n=m;29.m=temp;30.}31.intlcm=m;32.while(lcm%n!=0){33.lcm=m*i;34.i++;35.}36.returnlcm;37.}38.}【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。[java]viewplaincopy1.importjava.util.Scanner;2.3.publicclassExample{4.publicstaticvoidmain(String[]args){5.//TODOAuto-generatedmethodstub6.intabcCount=0;//英文字母个数7.intspaceCount=0;//空格键个数8.intnumCount=0;//数字个数9.intotherCount=0;//其他字符个数10.Scannerscan=newScanner(System.in);11.Stringstr=scan.nextLine();12.char[]ch=str.toCharArray();13.for(inti=0;ich.length;i++){14.if(Character.isLetter(ch[i])){15.//判断是否字母16.abcCount++;17.}18.elseif(Character.isDigit(ch[i])){19.//判断是否数字20.numCount++;21.}22.elseif(Character.isSpaceChar(ch[i])){23.//判断是否空格键24.spaceCount++;25.}26.else{27.//以上都不是则认为是其他字符28.otherCount++;29.}30.}31.System.out.println(字母个数:+abcCount);32.System.out.println(数字个数:+numCount);33.System.out.println(空格个数:+spaceCount);34.System.out.println(其他字符个数:+otherCount);35.}36.37.}【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为完数。例如6=1+2+3.编程找出1000以内的所有完数。【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?【程序12】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?【程序13】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?【程序14】题目:输入某年某

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功