浙大JAVA实验题答案09answer

上传人:无*** 文档编号:149854430 上传时间:2022-09-08 格式:DOC 页数:8 大小:52.50KB
返回 下载 相关 举报
浙大JAVA实验题答案09answer_第1页
第1页 / 共8页
浙大JAVA实验题答案09answer_第2页
第2页 / 共8页
浙大JAVA实验题答案09answer_第3页
第3页 / 共8页
点击查看更多>>
资源描述
实验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; /找最小数,与第一个数交换 for(i=0; iai) index=i; t=aindex; aindex=a0;a0=t; /交换 index=0; /找最大数,与最后一个数交换 for(i=0; in; i+) if(aindexai) index=i; t=aindex; aindex=an-1;an-1=t; /交换 for(i=0; in; i+) System.out.print(ai+ ); System.out.println(); 说明:不能把两个循环合成一个,否则当数组元素为“5 4 3 2 1”时出错。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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