浙大JAVA实验题答案09answer.docx
- 文档编号:8075675
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:10
- 大小:17.82KB
浙大JAVA实验题答案09answer.docx
《浙大JAVA实验题答案09answer.docx》由会员分享,可在线阅读,更多相关《浙大JAVA实验题答案09answer.docx(10页珍藏版)》请在冰豆网上搜索。
浙大JAVA实验题答案09answer
浙大JAVA■实验题答案09answer
实验9-1Method的使用
(二)
1.程序填空题,不要改变与输入输出有关的语句。
50010十进制转换二进制
输入一个正整数repeat(0 输入1个正整数n,将其转换为二进制后输出。 dectobin(10),输 要求定义并调用函数dectobin(n),它的功能是输出n的二进制。 例如,调用出1010。 输出语句: System.out.print(t);〃t为某位二进制数 例: 括号内是说明 输入: 3(repeat=3) 15 100 0 输出: 1111 1100100 0 importjava.util.Scanner; publicclassTest50010{ publicstaticvoidmain(Stringargs[]){ intri,repeat; inti,n; Scannerin=newScanner(System.in);repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ n=in.nextInt(); dectobin(n); System.out.println();} } staticvoiddectobin(intn){ Stringt="";//保存二进制数 do{ n=n/2;II获得除2后的商 }while(n>0); System.out.print(t);//本方法无返回值,需要在方法体中输出结果 } } 说明: 本题中方法dectobin(n)的输出虽然与要求有所出入,但上传是正确的 以下用递归算法实现方法的设计: 50001求1+1/2! +....+1/n! 输入一个正整数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.51.7183importjava.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); System.out.println((long)(s*10000+0.5)/10000.); } */ /* staticdoublefact(intn){//递归方法 if(n==1)return1; elsereturnn*fact(n-1); } } 50002求a+aa+aaa+aa…a 输入一个正整数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) importjava.util.Scanner; 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); } } /* System.out.println(sn); */ static intfn(inta,intn){//递归方法 if(n==1)returna; elsereturnfn(a,n-1)*10+a; 50006输出Fibonacci序列 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,*=10000),输出m和n之间所有的Fibonacci数。 Fibonacci序列(第1项起): 1123581321…… 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。 例如,fib⑺的返回值是13。 输出语句: System.out.print(f+""); 例: 括号内是说明 输入: 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数) 159725844181(1000至U6000之间的Fibonacci数) importjava.util.Scanner; 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(fv=n){ if(f>=m)System.out.print(f+""); i++; f=fib(i); System.out.println();} } static longfib(intn){//递归方法 if(n==1||n==2)return elsereturnfib(n-1)+} 1; fib(n-2); 实验9-2一维数组的使用 1.求平均值 输入一个正整数repeat(0 输入一个正整数n(1 例: 括号内是说明 输入 2(repeat=2) 312-6 5122540 输出 aver=-1.0 aver=4.6 importjava.util.Scanner; publicclassTest60001{ publicstaticvoidmain(String[]args){ intri,repeat; inti,n,sum,a[]; floataver; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){n=in.nextInt();a=newint[n]; for(i=0;i a[i]=in.nextInt();//这个循环输入数组各元素 sum=O; for(i=0;i sum+=a[i]; aver=(float)sum/n;//求平均值,注意要先把sum转换成float,再计算 System.out.println("aver="+aver); } } } 2.求最大值及其下标 输入一个正整数repeat(0 输入一个正整数n(1 括号内是说明 输入 3(repeat=3) 3164 31081 512540 输出 max=6,index=1(最大值6的下标是1) max=10,index=0(最大值10的下标是0) max=5,index=2(最大值5的下标是2) importjava.util.Scanner; publicclassTest60002{ publicstaticvoidmain(String[]args){ intri,repeat; inti,index,n,a[]; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ n=in.nextInt(); a=newint[n];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙大 JAVA 实验 答案 09 answer