浙大JAVA 实验题答案08answer.docx
- 文档编号:7526762
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:14
- 大小:17.35KB
浙大JAVA 实验题答案08answer.docx
《浙大JAVA 实验题答案08answer.docx》由会员分享,可在线阅读,更多相关《浙大JAVA 实验题答案08answer.docx(14页珍藏版)》请在冰豆网上搜索。
浙大JAVA实验题答案08answer
实验8Method的使用
1.程序填空题,不要改变与输入输出有关的语句。
50001
输入一个正整数repeat(0 输入1个正整数n,计算s的前n项的和(保留4位小数)。 s=1+1/2! +....+1/n! 要求定义并调用函数fact(n)计算n的阶乘。 例: 括号内是说明 输入: 2(repeat=2) 2(n=2) 10(n=10) 输出: 1.5 1.7183 importjava.util.Scanner; publicclassTest50001{ publicstaticvoidmain(String[]args){ intri,repeat; inti,n; doubles; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ n=in.nextInt(); /*-----------*/ s=0; for(i=1;i<=n;i++) s+=1.0/fact(i); } } /*---------------*/ staticdoublefact(intn){ inti; doublef=1; for(i=1;i<=n;i++) f*=i; returnf; } } 50002 输入一个正整数repeat(0 输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。 要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。 例如,fn(3,2)的返回值是33。 例: 括号内是说明 输入 2(repeat=2) 23(a=2,n=3) 85(a=8,n=5) 输出 246(2+22+222) 98760(8+88+888+8888+88888) importnner; publicclassTest50002{ publicstaticvoidmain(Stringargs[]){ intri,repeat; inti,n,a; longsn; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ a=in.nextInt(); n=in.nextInt(); /*------------*/ sn=0; for(i=1;i<=n;i++) sn+=fn(a,i); } } /*------------*/ staticintfn(inta,intn){ ints=0; for(inti=1;i<=n;i++) s=s*10+a; returns; } } 50003 输入一个正整数repeat(0 读入1个整数,统计并输出该数中2的个数。 要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。 例如,countdigit(10090,0)的返回值是3。 例: 括号内是说明 输入: 3(repeat=3) -21902 2 345543 输出: count=2(-21902中有2个2) count=1(有1个2) count=0(345543中没有2) import publicclassTest50003{ publicstaticvoidmain(Stringargs[]){ intri,repeat; intcount; longn; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ n=in.nextInt(); /*---------*/ n=Math.abs(n); count=countdigit(n,2); } } /*------------*/ staticintcountdigit(longnumber,intdigit){ //统计整数number中数字digit的个数 inta,c=0; while(number>0){ a=(int)(number%10); if(a==digit)c++; number=number/10; } returnc; } } 50004 输入一个正整数repeat(0 输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 要求定义并调用函数prime(m)判断m是否为素数。 例: 括号内是说明 输入 4(repeat=4) 12917 输出 NO(1不是素数) YES(2是素数) NO(9不是素数) YES(17是素数) import publicclassTest50004{ publicstaticvoidmain(Stringargs[]){ intri,repeat,n; booleanflag; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ n=in.nextInt(); /*---------*/ flag=prime(n); if(flag) else } } /*------------*/ staticbooleanprime(intm){ booleanflag=true; if(m==1)flag=false; for(inti=2;i<=m-1;i++) if(m%i==0) {flag=false;break;} returnflag; } } 50005 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 要求定义并调用函数prime(m)判断m是否为素数。 例: 括号内是说明 输入: 3(repeat=3) 110(m=1,n=10) 2035(m=20,n=35) 1416(m=14,n=16) 输出: count=4,sum=17(1到10之间有4个素数: 2,3,5,7) count=3,sum=83(20到35之间有3个素数: 23,29,31) count=0,sum=0(14到16之间没有素数) importjava.util.Scanner; publicclassTest50005{ publicstaticvoidmain(Stringargs[]){ intri,repeat; intcount,i,m,n,sum; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ m=in.nextInt(); n=in.nextInt(); /*---------*/ count=0; sum=0; for(i=m;i<=n;i++) if(prime(i)){count++;sum+=i;} sum="+sum); } } /*------------*/ staticbooleanprime(intm){ booleanflag=true; if(m==1)flag=false; for(inti=2;i<=m-1;i++) if(m%i==0) {flag=false;break;} returnflag; } } 50006 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=10000),输出m和n之间所有的Fibonacci数。 Fibonacci序列(第1项起): 1123581321...... 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。 例如,fib(7)的返回值是13。 "); 例: 括号内是说明 输入: 3(repeat=3) 110(m=1,n=10) 20100(m=20,n=100) 10006000(m=1000,n=6000) 输出: 112358(1到10之间的Fibonacci数) 21345589(20到100之间的Fibonacci数) 159********1(1000到6000之间的Fibonacci数) import publicclassTest50006{ publicstaticvoidmain(Stringargs[]){ intri,repeat; inti,m,n; longf; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ m=in.nextInt(); n=in.nextInt(); /*---------*/ i=1; f=1; while(f<=n){ if(f>=m)System.out.print(f+""); i++; f=fib(i); } } } /*------------*/ staticlongfib(intn){//返回第n项Fibonacci数 inti; longa=1,b=1,f=1; for(i=3;i<=n;i++){//从第3项开始计算 f=a+b; a=b; b=f; } returnf; } } 50007 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=10000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)。 要求定义并调用函数factorsum(number),它的功能是返回number的因子和。 例如,factorsum(12)的返回值是16(1+2+3+4+6)。 "); 例: 括号内是说明 输入: 2(repeat=2) 20500(m=100,n=400) 1100(m=1,n=100) 输出: 28496 1628 import publicclassTest50007{ publicstaticvoidmain(Stringargs[]){ intri,repeat; inti,m,n; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ m=in.nextInt(); n=in.nextInt(); /*---------*/ for(i=m;i<=n;i++) if(i==factorsum(i)) System.out.print(i+""); } } /*---------*/ staticintfactorsum(intnumber){//返回number的因子和 intsum=0; if(number==1)sum=1; for(inti=1;i<=number-1;i++) if(number%i==0)sum+=i; returnsum; } } 50008 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=1000),输出m到n之间的所有满足各位数字的立方和等于它本身的数。 要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。 "); 例: 括号内是说明 输入: 2(repeat=2) 100400(m=100,n=400) 1100(m=1,n=100) 输出: 153370371(1*1*1+5*5*5+3*3*3=153;3*3*3+7*7*7=370;3*3*3+7*7*7+1*1*1=371) 1 import publicclassTest50008{ publicstaticvoidmain(Stringargs[]){ intri,repeat; inti,m,n; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ m=in.nextInt(); n=in.nextInt(); /*---------*/ for(i=m;i<=n;i++) if(is(i))System.out.print(i+""); } } /*---------*/ //判断number的各位数字之立方和是否等于它本身 staticbooleanis(intnumber){ intsum=0,n,digit; n=number; while(n>0){ digit=n%10; n=n/10; sum+=digit*digit*digit; } if(number==sum)returntrue; elsereturnfalse; } } 50009 输入一个正整数repeat(0 输入一个整数,将它逆序输出。 要求定义并调用函数reverse(number),它的功能是返回number的逆序数。 例如reverse(12345)的返回值是54321。 例: 括号内是说明 输入 4(repeat=4) 123456-100-299 输出 654321 -1 -2 99 import publicclassTest50009{ publicstaticvoidmain(Stringargs[]){ intri,repeat; longn,res; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ n=in.nextInt(); /*---------*/ res=reverse(n); } } /*---------*/ staticlongreverse(longnumber){//返回number的逆序数 intflag=1; longa=0,digit; if(number<0){ flag=-1; number=-number; } while(number>0){ digit=number%10;//分离出个位数字 a=a*10+digit;//形成当前的逆序数 number=number/10; } returnflag*a; } } 50011 输入一个正整数repeat(0 输入三个整数a、b和c,输出其中较大的数。 要求定义和调用函数max(a,b,c)找出a、b中较大的数,函数形参a、b和c的类型是int。 输入输出示例: 括号内是说明 输入 3(repeat=3) 输入: 589(a=5,b=8) -1-10-5(a=-1,b=-10) 111(a=1,b=1) 输出: max(5,8,9)=9 max(-1,-10,-5)=-1 max(1,1,1)=1 import publicclassTest50011{ publicstaticvoidmain(Stringargs[]){ intri,repeat; inta,b,c,maximun; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ a=in.nextInt(); b=in.nextInt(); c=in.nextInt(); /*-----------------*/ maximun=maximun(a,b,c); Sy } } /*-------------------*/ staticintmaximun(inta,intb,intc){ intmax=a; if(max if(max returnmax; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙大JAVA 实验题答案08answer 浙大 JAVA 实验 答案 08 answer