您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Java面向对象程序设计课后习题参考答案
1习题3_4publicclassSan_4{//编写一个应用程序求1!+2!+...+20!/***@paramargs//本题考查对循环的运用和对算法的编写*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinta;doubleb=1,sum=0;//定义变量for(a=1;a=20;a++){//for循环实现该功能b=b*a;//当a=1时,b=b*a=1,依此类推sum=sum+b;//当a=1时,sum=sum+b=1,依次类推}for(intw=1;w=19;w++){//for循环打印出阶乘之和的形式来System.out.print(w+!++);}System.out.println(20!+=+sum);//最终输出阶乘之和doublesum1=0,a1=1;inti=1;while(i=20)//用while循环实现该功能{sum1=sum1+a1;i++;a1=a1*i;}System.out.println(sum1=+sum1);}}输出结果:1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+11!+12!+13!+14!+15!+16!+17!+18!+19!+20!=2.5613274941118203E18sum1=2.5613274941118203E18习题3_5publicclassSan_5{//求100以内的素数/***@paramargs//本题考查对for循环、break语句、if语句的运用*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinti,j;for(i=2;i=100;i++){//for循环从2开始,逐渐增1for(j=2;j=i/2;j++){//for循环从2开始,逐步增1if(i%j==0){//如果i除以j的余数为0,则终止本次for循环break;}}if(ji/2){//如果ji/2,输出iSystem.out.print(+i);}}}}2输出结果:2357111317192329313741434753596167717379838997习题3_6publicclassSan_6{//分别用while和for循环计算1+1/2!+1/3!+1/4!...的前20项和/***@paramargs//本题考查同学们对while循环、for循环以及对输出字符串格式的运用*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinti=1,k;doublej=1,m=1,sum1=0,sum2=0;while(i=20){//用while循环实现sum1=sum1+j;i++;j=j*(1.0/i);}System.out.print(1+);for(intr=2;r=19;r++){System.out.print(1/+r+!++);}System.out.print(1/20!+=+sum1);System.out.println();System.out.print(1+);for(intr=2;r=19;r++){System.out.print(1/+r+!++);}for(k=1;k=20;k++){//用for循环实现m*=(1.0/k);sum2+=m;}System.out.println(1/20!+=+sum2);}}计算结果:1+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13!+1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.71828182845904551+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13!+1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.7182818284590455习题3_7publicclassSan_7{//一个数如果恰好等于它的因子之和,这个数就成为”完数“。//编写一个应用程序求1000以内的所有完数。/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinti,j,sum;for(i=1;i=1000;i++){for(j=1,sum=0;ji;j++){3if(i%j==0){//当i除以j的余数为0时,执行sum=sum+jsum=sum+j;}}if(sum==i){//如果sum==i,执行下列输出语句System.out.println(完数:+i);}}}}计算结果:完数:6完数:28完数:496习题3_8importjava.util.Scanner;publicclassSan_8{//编写应用程序,计算两个非零正整数的//最大公约数和最小公倍数,要求两个正整数从键盘输入/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinta,b,c,d=0,e=0;System.out.println(请从键盘输入两个正整数:);Scannernihao=newScanner(System.in);System.out.print(你输入的第一个数为:);a=nihao.nextInt();System.out.print(你输入的第二个数为:);b=nihao.nextInt();if(a==0||b==0){//当输入的数有零存在时,输出错误提示信息System.out.println(输入有错,请确认后重新输入!!);}else{for(c=1;c=a;c++){if((a%c==0)&&(b%c==0)){//当a除以c,b除以c的余数皆为0时d=c;//将c赋给d//将a与c,b与c的商之积与上面得到的最大公约数相乘e=d*(a/c)*(b/c);//也可以改写为:e=a*b/c}}System.out.println(这两个数的最大公约数为:+d);System.out.println(这两个数的最小公倍数为:+e);}}}计算结果:请从键盘输入两个正整数:你输入的第一个数为:45你输入的第二个数为:604这两个数的最大公约数为:15这两个数的最小公倍数为:180习题3_9publicclassSan_9{//求满足1+2!+3!+...+n!≤9999的最大整数n/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubintn=1;longsum=0,a=1;while(true){sum=sum+a;if(sum9999){//当sum9999时,跳出while循环break;}n++;a=n*a;}System.out.println(满足条件的最大整数是:+(n-1));System.out.println(1至+(n-1)+的阶乘和为:+sum);}}计算结果:满足条件的最大整数是:71至7的阶乘和为:46233习题9_6publicclassA{publicstaticvoidmain(String[]args){Strings=aBcDeFgH;Stringt=你好!;Stringv=我是中国人;Stringa=s.toUpperCase();//将小写字母转换为大写字母Stringb=s.toLowerCase();//将大写字母转换为小写字母System.out.println(a);System.out.println(b);System.out.println(t.concat(v));//将字符串v连接到字符串t之后}}输出结果:ABCDEFGHabcdefgh你好!我是中国人习题9_7publicclassB{publicstaticvoidmain(String[]args){Stringa=书山有路勤为径;charb=a.charAt(0);//输出当前字符串的第一个字符charc=a.charAt(a.length()-1);//输出当前字符串的最后一个字符5System.out.println(b);System.out.println(c);}}输出结果:书径习题9_8importjava.util.Calendar;importjava.util.Scanner;publicclassC{/***@paramargs*输出某年某月的日历页,通过键盘输入年份和月份*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubintm,n;System.out.println(请从键盘输入年份:);Scannerym=newScanner(System.in);m=ym.nextInt();//读入年份System.out.println(请从键盘输入月份:);n=ym.nextInt();//读入月份CalendarBeancb=newCalendarBean();cb.setYear(m);cb.setMonth(n);String[]a=cb.getCalendar();//返回号码的一维数组char[]str=日一二三四五六.toCharArray();for(charc:str){System.out.printf(%4c,c);}for(inti=0;ia.length;i++){//输出一维数组if(i%7==0)System.out.println();//换行System.out.printf(%4s,a[i]);}}}packagext9_8;importjava.util.Calendar;publicclassCalendarBean{String[]day;intyear=2008,month=0;publicvoidsetYear(intyear){this.year=year;}publicvoidsetMonth(intmonth){6this.month=month;}publicString[]getCalendar(){String[]a=newString[42];Calendar日历=Calendar.getInstance();日历.set(year,month-1,1);int星期几=日历.get(Calendar.DAY_OF_WEEK)-1;intday=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)day=31;if(month==4||month==6||month==9||month==11)day=30;if(month==2){if(((year%4==0)&&(year%100!=0))||(year%400==0))day=29;elseday=28;}for(inti=0;i星期几;i++)a[i]=;for(inti=星期几,n=1;i星期几+day;i++){a[i]=String.valueOf(n);n++;}for(inti=星期几+day;ia.length;i++)a[i]=;returna;}}输出结果:请从键盘输入年份:2011请从键盘输入月份:12日一二三四五六123456789101112131415161718192021
本文标题:Java面向对象程序设计课后习题参考答案
链接地址:https://www.777doc.com/doc-6915768 .html