实验9-1 Method的使用(二)1.程序填空题,不要改变与输入输出有关的语句。
50010 十进制转换二进制输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入1 个正整数n,将其转换为二进制后输出。
要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。
例如,调用dectobin(10),输出1010。
输出语句:..+ 1/n!输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入1 个正整数n,计算 s 的前n项的和(保留 4 位小数)。
s = 1 + 1/2! +....+ 1/n!要求定义并调用函数fact(n)计算n的阶乘。
例:括号内是说明输入:2 (repeat=2)2 (n=2)10 (n=10)输出:import class Test50001 {public static void main(String[] args) {int ri,repeat;int i,n;double s;Scanner in=new Scanner;repeat=();for(ri=1;ri<=repeat;ri++){n=();/*-----------*/s=0;for(i=1;i<=n;i++)s+=fact(i);}}/*---------------*/static double fact(int n) {....要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。
例如,fib(7)的返回值是13。
输出语句:" ");例:括号内是说明输入:3 (repeat=3)1 10 (m=1, n=10)20 100 (m=20, n=100)1000 6000 (m=1000, n=6000)输出:1 123 5 8 (1到10之间的Fibonacci数)21 34 55 89 (20到100之间的Fibonacci数)1597 2584 4181 (1000到6000之间的Fibonacci数)import class Test50006{public static void main(String args[]){int ri,repeat;int i, m, n;long f;Scanner in=new Scanner;repeat=();for(ri=1; ri<=repeat; ri++){m=();n=();/*---------*/i=1;f=1;while(f<=n){if(f>=m) " ");i++;f=fib(i);}}}/*------------*/static long fib(int n){ //递归方法if(n==1||n==2) return 1;else return fib(n-1)+fib(n-2);}}实验9-2 一维数组的使用1.求平均值输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n (1<n≤10),再输入n个整数,输出平均值。
例:括号内是说明输入2 (repeat=2)3 1 2 -65 12 2 5 4 0输出aver=aver=import class Test60001{public static void main(String []args){int ri, repeat;int i, n, sum,a[];float aver;Scanner in=new Scanner;repeat=();for(ri=1; ri<=repeat; ri++){n=();a=new int[n];for(i=0; i<n; i++)a[i]=();//这个循环输入数组各元素/*--------------*/sum=0;for(i=0; i<n; i++) //这个循环实现累加sum+=a[i];aver=(float)sum/n; //求平均值,注意要先把sum转换成float,再计算"aver="+aver);}}}2.求最大值及其下标输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n (1<n≤10),再输入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 class Test60002{public static void main(String []args){int ri, repeat;int i, index, n, a[];Scanner in=new Scanner;repeat=();for(ri=1; ri<=repeat; ri++){n=();a=new int[n] ;for(i=0; i<n; i++)a[i]=();/*--------------*/index=0; //用index保存最大数的下标,开始假设a[0]是最大数for(i=1; i<n; i++)if(a[index]<a[i]) index=i;//a[i]与当前最大数a[index]比较,若a[i]更大,index变为i"max="+a[index]+",index="+index);}}}3.逆序输出输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n (1<n≤10),再输入n个整数,按逆序输出这些数。
例:括号内是说明输入2 (repeat=2)4 10 8 1 25 1 2 5 4 0输出2 1 8 100 4 5 2 1import class Test60003{public static void main(String []args){int ri, repeat;int i, n, temp,a[];Scanner in=new Scanner;repeat=();for(ri=1; ri<=repeat; ri++){n=();a=new int[n];for(i=0; i<n; i++)a[i]=();/*--------------*/for(i=0; i<n/2; i++){ //a[i]与a[n-1-i]交换,注意交换次数temp=a[i];a[i]=a[n-1-i];a[n-1-i]=temp;}for(i=0; i<n; i++)//输出一个数组" ");}}}4.交换最小值和最大值输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
例:括号内是说明输入3 (repeat=3)5 4 3 5 1 24 156 75 5 4 3 2 1输出1 32 4 51 5 6 71 4 32 5import class Test60004{public static void main(String []args){int ri, repeat;int i, index, n, t,a[];Scanner in=new Scanner;repeat=();for(ri=1; ri<=repeat; ri++){n=();a=new int[n];for(i=0; i<n; i++)a[i]=();/*--------------*/index=0; //找最小数,与第一个数交换for(i=0; i<n; i++)if(a[index]>a[i]) index=i;t=a[index]; a[index]=a[0];a[0]=t; //交换index=0; //找最大数,与最后一个数交换for(i=0; i<n; i++)if(a[index]<a[i]) index=i;t=a[index]; a[index]=a[n-1];a[n-1]=t; //交换for(i=0; i<n; i++)" ");}}}说明:不能把两个循环合成一个,否则当数组元素为“5 4 3 2 1”时出错。