2019-2020年java基础50道经典练习题及答案.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2019-2020年java基础50道经典练习题及答案.pdf》由会员分享,可在线阅读,更多相关《2019-2020年java基础50道经典练习题及答案.pdf(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、沃 克IT教 育JAVA基础编程练习题整理:Lemon【程 序1题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.public class Proglpublic static void main(String args)int n=10;System.out.println(第+n+个月兔子总数为+fun(n);private static int fun(int n)if(n=l|n=2)return 1;elsereturn fu
2、n(n-1 )+fun(n-2);【程 序2】题目:判断101-200之间有多少个素数,并输出所有素数。程序分析:判断素数的方法:用一个数分别去除2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。public class Prog2public static void main(String args)int m=1;int n=1000;int count=0;统计素数个数for(int i=m;in;i+)if(isPrime(i)count+;System.out.print(i+);if(count%10=0)System.out.printin();Syste
3、m,out.println();System.out.println(在+m+和+n+之间共有+count+个素数”);/判断素数private static boolean isPrime(int n)boolean flag=true;if(n=l)flag=false;elsefor(int i=2;i=Math.sqrt(n);i+)if(n%i)=O|n=l)flag=false;break;elseflag=true;return flag;【程 序3】题目:打印出所有的“水仙花数,所谓 水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数,因为15
4、3=1的三次方+5的三次方+3的三次方。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。public class Prog3public static void main(String args)for(int i=100;i 1000;i+)if(isLotus(i)System.out.print(i+);System,out.println();/判断水仙花数private static boolean isLotus(int lotus)int m=0;int n=lotus;int sum=0;m=n/100;n-=m*100;sum=m=n/10;n-
5、=m*10;sum+=m*m*m+n*n*n;if(sum=lotus)return true;elsereturn false;【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。如果n k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。如果n不能被k整除,则用k+1作为k的值,重复执行第一步。public class Prog4public static void main(St
6、ring args)int n=13;decompose(n);private static void decompose(int n)System.out.print(n+=);for(int i=2;i=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。程序分析:(ab)?a:b这是条件运算符的基本例子。public class Prog5public static void main(String args)int n=-1;tryn=Integer.parselnt(args 0);catch(ArrayIndexOutOfBoundsException e)Sy
7、stem.out.println(请输入成绩);return;grade(n);|/成绩等级计算private static void grade(int n)if(n100|n=90)?,属于 A 等:(n60)?分,属于B 等:分,属于C 等/System,out.println(n+str);【程序6】题目:输入两个正整数m 和 n,求其最大公约数和最小公倍数。程序分析:利用辗除法。public class Prog6public static void main(String args)int m,n;try(m=Integer.parseInt(argsO);n=Integer.pa
8、rselnt(args 1 );catch(ArrayIndexOutOfBoundsException e)System.out.printing 输入有误);return;max_min(m,n);/求最大公约数和最小公倍数private static void max_min(int m,int n)int temp=1;int yshu=1;int bshu=m*n;if(nm)temp=n;n=m;m=temp;while(m!=O)temp=n%m;n=m;m=temp;yshu=n;bshu/=n;System.out.println(m+和+n+”的最大公约数为+yshu);S
9、ystem.out.println(m+和+n+”的最小公倍数为+bshu);【程 序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。程序分析:利用while语句,条件为输入的字符不为import java.util.Scanner;public class Prog7_lpublic static void main(String args)System.out.print(请输入一串字符:);Scanner scan=new Scanner(System.in);String str=scan.nextLine。;/将一行字符转化为字符串scan.close()
10、;count(str);)/统计输入的字符数private static void count(String str)String El=u4e00-u9fa5;/汉字String E2=a-zA-Z;String E3=0-9;String E4=s;/空格int countChinese=0;int countLetter=0;int countNumber=0;int countSpace=0;int countOther=0;char array_Char=str.toCharArrayO;/将字符串转化为字符数组String array_String=newStringarray_C
11、har.length;/汉字只能作为字符串处理for(int i=O;iarray_Char.length;i+)array_Stringi=String.valueOf(array_Chari);/遍历字符串数组中的元素for(String s:array_String)if(s.matches(El)countChin ese+;else if(s.matches(E2)countLetter+;else if(s.matches(E3)countNumber+;else if(s.matches(E4)countSpace+;elsecountOther+;System.out.prin
12、tin(输入的汉字个数:+countChinese);System.out.printing输入的字母个数:+countLetter);System.out.printin(输入的数字个数:+countNumber);System.out.printin(输入的空格个数:+countSpace);System.out.printin(输入的其它字符个数:+countSpace);import java.util.*;public class Prog7_2public static void main(String args)System.out.println(请输入一行字符:);Scann
13、er scan=new Scanner(System.in);String str=scan.nextLineQ;scan.close();count(str);/统计输入的字符private static void count(String str)List list=new ArrayList();char array_Char=str.toCharArray();for(char c:array_Char)list.add(String.valueOf(c);/将字符作为字符串添加到list表中Collections.sort(list);/排序for(String s:list)int
14、 begin=list.indexOf(s);int end=list.lastlndexOf(s);索引结束统计字符数if(list.get(end)=s)System.out.println(字符+s+H,有+(end-begin+l)+个);【程 序8】题目:求s=a+aa+aaa+aaaa+aa.a的值,其 中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。程序分析:关键是计算出每一项的值。import java.util.Scanner;public class Prog8public static void main(Strin
15、g args)System.out.print(求 s=a+aa+aaa+aaaa+的值,请输入a的值:);Scanner scan=newScarmer(System.in).useDelimiter(s*);/以空格作为分隔符int a=scan.nextint();int n=scan.nextlntO;scan.close。;/关闭扫描器System.out.println(expressed(2,5)+add(2,5);/求和表达式private static String expressed(int a,int n)StringBuffer sb=new StringBuffer(
16、);StringBuffer subSB=new StringBuffer();for(int i=1 ;in+1 ;i+)subSB=subSB.append(a);sb=sb.append(subSB);if(in)sb=sb.append(+);sb.append(=);return sb.toStringO;|/求和private static long add(int a,int n)long sum=0;long subSUM=0;for(int i=1 ;in+1 ;i+)subSUM=subSUM*10+a;sum=sum+subSUM;return sum;【程 序9】题目:
17、一个数如果恰好等于它的因子之和,这个数就称为“完数。例如6=1+2+3.编程找出1000以内的所有完数。public class Prog9public static void main(String args)int n=10000;compNumber(n);/求完数private static void com pN um ber(int n)int count=0;System.out.println(n+以内的完数:);for(int i=1;in+1;i+)int sum =0;for(int j=1;ji/2+1;j+)if(i%j)=O)sum +=j;if(sum=i)Sys
18、tem.out.print(i+);if(count+)%5=0)System,out.println();【程 序10题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求 它 在 第 10次落地时,共经过多少米?第 10次反弹多高?import java.util.Scanner;public class ProglOpublic static void main(String args)System.out.print(请输入小球落地时的高度和求解的次数:);Scanner scan=newScanner(System.in).useD elimiter(s);int
19、 h=scan.nextlntO;int n=scan.nextlnt();scan.closeQ;distance(h,n);)/小球从h 高度落下,经 n 次反弹后经过的距离和反弹的高度private static void distance(int h,int n)double length=0;for(int i=0;in;i+)length+=h;h/=2.0;System.out.printing经过第+n+次反弹后,小球共经过+length+米,+第+n+次反弹高度为+h+米)【程 序U 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:
20、可填在百位、十位、个位的数字都是1、2、3、4O组成所有的排列后再去掉不满足条件的排列。public class Progl 1public static void main(String args)int count=0;int n=0;for(int i=l;i5;i+)for(int j=l;j5;j+)if(j=i)continue;for(int k=l;k1000000)profit=profit_sub-1000000;profit_sub=1000000;prize+=profit*0.01;if(profit600000)(profit=profit_sub-600000;p
21、rofit_sub=600000;prize+=profit*0.015;if(profit400000)profit=profit_sub-400000;profit_sub=400000;prize+=profit*0.03;if(profit200000)profit=profit_sub-200000;profit_sub=200000;prize+=prize*0.05;if(profit100000)!profit=profit_sub-100000;profit_sub=100000;prize+=profit*0.075;prize+=profit_sub*0.1;return
22、 prize;【程 序13题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上1。后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。public class Progl3public static void main(String args)int n=0;for(int i=0;i 100001;i+)if(isCompSqrt(i+100)&isCompSqrt(i+268)n=i;break;System.out.println(所求的数是:+n);)/判断完全平方数priva
23、te static boolean isCompSqrt(int n)boolean isComp=false;for(int i=1 ;iMath.sqrt(n)+1 ;i+)if(n=Math.pow(i,2)isComp=true;break;)return isComp;【程 序 14题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。import java.util.Scanner;public class Progl4public static void
24、 main(String args)Scanner scan=newScanner(System.in).useDelimiter(D);/匹配非数字System.out.print(请输入当前日期(年-月-日)int year=scan.nextlntQ;int month=scan.nextlnt();int date=scan.nextlnt();scan.closeQ;System,out.printin(今天是+year+年的第“analysis(year,month,date)+天”);/判断天数private static int analysis(int year,int mo
25、nth,int date)int n=0;int month_date=new int0,31,28,31,30,31,30,31,31,30,31,30);if(year%400)=0|(year%4)=0)&(year%100)!=0)month_date2=29;for(int i=0;iy则将x 与 y 的值进行交换,然后再用x 与 z 进行比较,如果 xz则将x 与 z 的值进行交换,这样能使x 最小。import java.util.Scanner;public class Progl5public static void main(String args)Scanner scan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2019 2020 java 基础 50 道经 练习题 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内