浙大JAVA-实验题答案09answer_第1页
浙大JAVA-实验题答案09answer_第2页
浙大JAVA-实验题答案09answer_第3页
浙大JAVA-实验题答案09answer_第4页
浙大JAVA-实验题答案09answer_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验9-1 Method的使用(二)1. 程序填空题,不要改变与输入输出有关的语句。50010 十进制转换二进制输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入1 个正整数n,将其转换为二进制后输出。要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。输出语句:System.out.print(t); /t为某位二进制数例:括号内是说明输入:3 (repeat=3)151000输出:111111001000import java.util.Scanner;public class Test50010 public static void main(String args) int ri,repeat; int i,n; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1;ri0); System.out.print(t); /本方法无返回值,需要在方法体中输出结果 说明:本题中方法dectobin(n)的输出虽然与要求有所出入,但上传是正确的。以下用递归算法实现方法的设计:50001 求1 + 1/2! +.+ 1/n!输入一个正整数repeat (0repeat10),做repeat次下列运算:输入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.7183import java.util.Scanner;public class Test50001 public static void main(String args) int ri,repeat;int i,n;double s;Scanner in=new Scanner(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.);/*-*/static double fact(int n) /递归方法if(n=1)return 1;else return n*fact(n-1); 50002 求aaaaaaaaa输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2个正整数a和n, 求a+aa+aaa+aaa(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aaa(n个a)。例如,fn(3,2)的返回值是33。例:括号内是说明输入2 (repeat=2)2 3 (a=2, n=3)8 5 (a=8, n=5)输出246 (2+22+222)98760 (8+88+888+8888+88888) import java.util.Scanner;public class Test50002 public static void main(String args) int ri, repeat; int i, n,a; long sn; Scanner in=new Scanner(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 int fn(int a,int n) /递归方法if (n=1)return a;else return fn(a,n-1)*10+a;50006 输出 Fibonacci 序列输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2 个正整数m和n(1=m,n=10000),输出m 和n之间所有的Fibonacci数。Fibonacci 序列(第1项起):1 1 2 3 5 8 13 21 .要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。输出语句:System.out.print(f+ );例:括号内是说明输入:3 (repeat=3)1 10 (m=1, n=10)20 100 (m=20, n=100)1000 6000 (m=1000, n=6000)输出:1 1 2 3 5 8 (1到10之间的Fibonacci数)21 34 55 89 (20到100之间的Fibonacci数)1597 2584 4181 (1000到6000之间的Fibonacci数)import java.util.Scanner;public class Test50006 public static void main(String args) int ri,repeat; int i, m, n; long f; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) m=in.nextInt(); n=in.nextInt(); /*-*/ i=1; f=1; while(f=m) System.out.print(f+ ); i+; f=fib(i); System.out.println(); /*-*/ static long fib(int n) /递归方法if(n=1|n=2) return 1;else return fib(n-1)+fib(n-2); 实验9-2 一维数组的使用1. 求平均值输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数n (1n10),再输入n个整数,输出平均值。例:括号内是说明输入2 (repeat=2) 3 1 2 -65 12 2 5 4 0 输出aver=-1.0aver=4.6import java.util.Scanner;public class Test60001public static void main(String args)int ri, repeat;int i, n, sum,a;float aver;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri=repeat; ri+) n=in.nextInt(); a=new intn; for(i=0; in; i+) ai=in.nextInt(); /这个循环输入数组各元素 /*-*/ sum=0; for(i=0; in; i+) /这个循环实现累加 sum+=ai; aver=(float)sum/n; /求平均值,注意要先把sum转换成float,再计算 System.out.println(aver=+aver);2. 求最大值及其下标输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数n (1n10),再输入n个整数,输出最大值极其下标(设最大值惟一,下标从0开始)。例:括号内是说明输入3 (repeat=3) 3 1 6 43 10 8 15 1 2 5 4 0 输出max=6,index=1 (最大值6的下标是1)max=10,index=0 (最大值10的下标是0)max=5,index=2 (最大值5的下标是2)import java.util.Scanner;public class Test60002 public static void main(String args) int ri, repeat; int i, index, n, a; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n=in.nextInt(); a=new intn ; for(i=0; in; i+) ai=in.nextInt(); /*-*/ index=0; /用index保存最大数的下标,开始假设a0是最大数 for(i=1; in; i+) if(aindexai) index=i; /ai与当前最大数aindex比较,若ai更大,index变为i System.out.println(max=+aindex+,index=+index); 3. 逆序输出输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数n (1n10),再输入n个整数,按逆序输出这些数。例:括号内是说明输入2 (repeat=2) 4 10 8 1 25 1 2 5 4 0 输出2 1 8 100 4 5 2 1import java.util.Scanner;public class Test60003 public static void main(String args) int ri, repeat; int i, n, temp,a; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n=in.nextInt(); a=new intn; for(i=0; in; i+) ai=in.nextInt(); /*-*/ for(i=0; in/2; i+) /ai与an-1-i交换,注意交换次数 temp=ai; ai=an-1-i; an-1-i=temp; for(i=0; in; i+)/输出一个数组 System.out.print(ai+ ); System.out.println(); 4. 交换最小值和最大值输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。例:括号内是说明输入3 (repeat=3) 5 4 3 5 1 24 1 5 6 75 5 4 3 2 1 输出1 3 2 4 51 5 6 71 4 3 2 5import java.util.Scanner;public class Test60004 public static void main(String args) int ri, repeat; int i, index, n, t,a; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n=in.nextInt(); a=new intn; for(i=0; in; i+) ai=in.nextInt(); /*-*/ index=0; /找最小数,与第一个数交换

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论