欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2019-2020年java基础50道经典练习题及答案.pdf

    • 资源ID:87919215       资源大小:5.03MB        全文页数:70页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2019-2020年java基础50道经典练习题及答案.pdf

    沃 克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 fun(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();System,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是一个 水仙花数,因为153=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-=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(String 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)System.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.parselnt(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);System.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();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_Char.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.printin(输入的汉字个数:+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(请输入一行字符:);Scanner 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 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(String 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();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】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数。例如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)System.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 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个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是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;profit_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 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);)/判断完全平方数private 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 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 month,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=newScanner(System.in),useDelimiter(D);System.out.print(请输入三个数:);int x=scan.nextlnt();int y=scan.nextlntQ;int z=scan.nextint();scan.closeO;System.out.printin(排序结果:+sort(x,y,z);/比较两个数的大小private static String sort(int x,int y,int z)String s=null;if(xy)int t=x;x=y;y=t;if(xz)int t=x;x=z;z=t;if(yz)int t=z;z=y;y=t;s=x+y+z;return s;【程 序16题目:输出9*9 口诀。程序分析:分行与列考虑,共9行9列,i控制行,j控 制 歹!。public class Progl6public static void main(String args)for(int i=1 ;i 10;i+)for(int j=l;j0;i)m=2*m+2;System.out.println(小猴子共摘了+m+桃子);【程 序18题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。import java.util.ArrayList;public class Progl8String a,b,c;/甲队成员public static void main(String args)Stringf racer=x,y,z;/乙队成员ArrayList arrayList=newArrayLi st();for(int i=0;i3;i+)for(int j=0;j3;j+)for(int k=0;k3;k+)Prog 18 prog 18=newProg 18(raceri,racerj,racerk);if(!progl8.a.equals(progl8.b)&!progl8.a.equals(progl8.c)&!prog 18.b.equals(prog 18.c)&!progl8.a.equals(x)&!progl8.c.equals(x)&!progl8.c.equals(z)arrayList.add(prog 18);for(Object obj:array List)System,out.println(obj);/构造方法private Progl8(String a,String b,String c)this,a=a;this.b=b;this.c=c;)public String toString()return a的对手是+a+b的对手是+b+c的对手是+c;【程 序 19题目:打印出如下图案(菱形)*程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利 用 双 重for循环,第一层控制行,第二层控制列。public class Progl9public static void main(String args)int n=5;printStar(n);)/打印星星private static void printStar(int n)/打印上半部分for(int i=O;in;i+)for(int j=0;j2*n;j+)if(j=n-i&j=n+i)System.out.print(*);)System.out.printin();/打印下半部分for(int i=l;in;i+)System.out.print();for(int j=0;j2*n-i;j+)if(j=i&j2*n-i-l)System.out.print(*);System.out.printin();【程序20题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。程序分析:请抓住分子与分母的变化规律。public class Prog20(public static void main(String args)double nl=1;double n2=1;double fraction=nl/n2;double Sn=0;for(int i=0;i20;i+)double tl=nl;double t2=n2;nl=tl+t2;n2=tl;fraction=nl/n2;Sn+=fraction;System,out.print(Sn);【程序21】题目:求 l+2!+3!+.+20!的和程序分析:此程序只是把累加变成了累乘。public class Prog21public static void main(String args)long sum=0;for(int i=0;i20;i+)sum+=factorial(i+l);System,out.println(sum);|/阶乘private static long factorial(int n)int mult=1;for(int i=1;in+1;i+)mult*=i;return mult;【程序22题目:利用递归方法求5!。程序分析:递归公式:fn=fn*4!public class Prog22public static void main(String args)System.out.println(fact(10);/递归求阶乘private static long fact(int n)if(n=l)return 1;elsereturn fact(n-l)*n;【程序23题目:有 5 个人坐在一起,问第五个人多少岁?他说比第4 个人大2岁。问第4 个人岁数,他说比第3 个人大2 岁。问第三个人,又说比第2 人大两岁。问第2 个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(1。岁),再往回推。public class Prog23public static void main(String args)System.out.println(getAge(5,2);/求第m 位同志的年龄private static int getAge(int m,int n)if(m=l)return 10;elsereturn getAge(m-l,n)+n;【程序24】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。public class Prog24public static void main(String args)int n=Integer.parseInt(argsO);int i=0;int a=new int5;doai=n%10;n/=10;+i;while(n!=0);System.out.print(这是一个+i+”位数,从个位起,各位数字依次为:);for(int j=O;ji;j+)System.out.print(aj+);【程序25题目:一个5 位数,判断它是不是回文数。即 12321是回文数,个位与万位相同,十位与千位相同。import java.io.*;public class Prog25public static void main(String args)int n=0;System.out.print(请输入一个 5 位 数:);BufferedReader bufin=new BufferedReader(newInputStr eamReader(System.in);try(n=Integer.parseInt(bufin.readLine();catch(IOException e)e.printStackT rac e();finallytry(bufin.closeQ;catch(IOException e)e.printStackTrace();palin(n);private static void palin(int n)int m=n;int a=new int5;if(n99999)System.out.println(输入的不是 5 位数!);return;elsefor(int i=0;i5;i+)ai=n%10;n/=10;if(a0=a4&al=a3)System.out.println(m+是一个回文数);elseSystem.out.println(m+不是回文数);【程 序26】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。import java.io.*;public class Prog26public static void main(String args)String str=new StringQ;BufferedReader bufln=new BufferedReader(newInputStr eamReader(System.in);System.out.print(请输入星期的英文单词前两至四个字母):);try(str=bufIn.readLine();catch(IOException e)e.printStackTrace();finally(try(bufln.close();catch(IOException e)e.printStackTrace();week(str);private static void week(String str)int n=-1;if(str.trim().equalsIgnoreCase(Mo)|str.trimQ.equalsIgnoreCase(Mon)|str.trim().equalsIgnoreCase(Mond)n=1;if(str.trim().equalsIgnoreCase(Tu)|str.trimQ.equalsIgnoreCase(Tue)|str.trimQ.equalsIgnoreCase(Tues)n=2;if(str.trim().equalsIgnoreCase(We)|str.trimQ.equalsIgnoreCase(Wed)|str.trim().equalsIgnoreCase(Wedn)n=3;if(str.trim().equalsIgnoreCase(Th)|str.trimQ.equalsIgnoreCase(Thu)|str.trimQ.equalsIgnoreCase(Thur)n=4;if(str.trim().equalsIgnoreCase(Fr)|str.trimQ.equalsIgnoreCase(Fri)|str.trim().equalsIgnoreCase(Frid)n=5;if(str.trim().equalsIgnoreCase(Sa)|str.trimQ.equalsIgnoreCase(Sat)|str.trim().equalsIgnoreCase(Satu)n=2;if(str.trim().equalsIgnoreCase(Su)|str.trim().equalsIgnoreCase(Sun)|str.trimQ.equalsIgnoreCase(Sund)n=0;switch(n)case 1:System.out.printin(星期一);break;case 2:System.out.printing 星期二);break;case 3:System.out.printing 星期三);break;case 4:System.out.printing 星期四);break;case 5:System.out.printing 星期五);break;case 6:System.out.printin(星期六);break;case 0:System.out.printin(星期日);break;default:System.out.printing输入有误!break;【程 序27题目:求100之内的素数public class Prog27(public static void main(String args)int n=100;System.out.print(n+以内的素数:);for(int i=2;in+l;i+)if(isPrime(i)System.out.print(i+);|/求素数private static boolean isPrime(int n)boolean flag=true;for(int i=2;iMath.sqrt(n)+1 ;i+)if(n%i=O)flag=false;break;|return flag;【程序28】题目:对10个数进行排序程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。public class Prog28(public static void main(String args)int a=new int31,42,21,50,12,60,81,74,101,93);for(int i=0;i10;i+)for(int j=0;jaj+l)int temp=aj;aj=aj+l;aj+l=temp;for(int i=0;ia.length;i+)System.out.print(ai+);【程序29题目:求一个3*3矩阵对角线元素之和程序分析:利用双重for循环控制输入二维数组,再 将 累 加 后输出。public class Prog29(public static void main(String args)int a=new int 100,2,3,45,6,17,8,9);matrSum(a);)private static void matrSum(int a)int suml=0;int sum2=0;for(int i=0;ia.length;i+)for(int j=0;jai.length;j+)if(i=j)suml+=aij;if(j=a.length-i-1)sum2+=aij;System.out.println(矩阵对角线之和分别是:+suml+和+sum2);【程 序30题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。import java.util.Scanner;public class Prog30public static void main(String args)int A=new int口0,8,7,5,9,1,2,4,3,12;int B=sort(A);print(B);System,out.println();System.out.print(请输入10个数的数组:);Scanner scan=new Scanner(System.in);int a=scan.nextlntO;scan.closeQ;int C=insert(a,B);print(C);/选择排序private static int sort(int A)int B=new intA.length;for(int i=O;iA.length-1;i+)int min=Ai;for(int j=i+1;jAj)int temp=min;min=Aj;Aj=temp;Bi=min;B A.length-1=AA.length-l;return B;/打印private static void print(int A)for(int i=O;iO;i)if(aAi)Bi+1=a;for(int j=O;j=i;j+)Bj=Aj;for(int k=i+2;kB.length;k+)Bk=Ak-1;break;return B;【程 序31】题目:将一个数组逆序输出。程序分析:用第一个与最后一个交换。public class Prog31public static void main(String args)int A=new intl,2,3,4,5,6,7,8,9,;print(A);System,out.println();int B=reverse(A);print(B);)private static int reverse(int A)for(int i=O;iA.length/2;i+)int temp=AA.length-i-l;AA.length-i-l=Ai;Ai=temp;return A;)private static void print(int A)for(int i=O;iA.length;i+)System.out.print(Ai+);【程序32题目:取一个整数a 从右端开始的47 位。程序分析:可以这样考虑:先使a 右移4 位。设置一个低4 位全为1,其余全为0 的数。可用(04)将上面二者进行&运算。import java.util.Scanner;public class Prog32public static void main(String msg)/输入一个长整数Scanner scan=new Scanner(System.in);long 1 =scan.nextLongO;scan.closeQ;/以下截取字符String str=Long.toString(l);char c

    注意事项

    本文(2019-2020年java基础50道经典练习题及答案.pdf)为本站会员(无***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开