当前位置:文档之家› 浙大JAVA 实验题答案11answer

浙大JAVA 实验题答案11answer

实验11 数组作为方法的参数1.程序填空题,不要改变与输入输出有关的语句。

60030 编写排序函数(方法)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将它们从小到大排序后输出。

要求将排序编写为一个sort()方法。

例:括号内是说明输入3 (repeat=3)4 5 1 7 63 1 2 35 5 4 3 2 1输出1 5 6 71 2 31 2 3 4 5import java.util.Scanner;public class Test60030{public static void main(String []args){int ri, repeat;int i, n, a[];Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){n=in.nextInt();a=new int[n];for(i=0; i<n; i++)a[i]=in.nextInt();sort(a);for(i=0; i<n; i++)System.out.print(a[i]+" ");System.out.println();}}/*---------*///说明:数组作参数时,传递的是地址,形参数组和实参数组共用同一块内存,//方法sort()中对形参数组b排序,实际上就是对实参数组a排序,//所以不需要返回值。

static void sort(int b[]){int i,j,k,temp;for(i=0;i<b.length-1;i++) { //选择法递增排序k=i;for(j=i+1;j<b.length;j++)if(b[k]>b[j]) k=j;if(i!=k){temp=b[i];b[i]=b[k]; b[k]=temp;}}}}60031 判断两个矩阵是否相同(方法)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入 1 个正整数n(1≤n≤6), 再读入2个 n 阶方阵 a和b , 判断2个方阵是否相同。

要求:编写判断函数(方法)judge()。

例:括号内是说明输入:2 (repeat=2)3 (n=3)1 2 3 4 5 6 7 8 9 (a矩阵)1 1 1 1 1 1 1 1 1 (b矩阵)21 2 3 41 2 3 4输出:NoYesimport java.util.Scanner;public class Test60031{public static void main(String []args){int ri, repeat;int a[][],b[][],i,j,n;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){n=in.nextInt();a=new int[n][n]; b=new int[n][n];for(i=0; i<n; i++)for(j=0;j<n;j++)a[i][j]=in.nextInt();for(i=0; i<n; i++)for(j=0;j<n;j++)if(judge(a,b))System.out.println("Yes");elseSystem.out.println("No");}}/*--------------------*/static boolean judge(int a[][],int b[][]){for(int i=0;i<a.length; i++)for(int j=0;j<a[i].length;j++)if(a[i][j]!=b[i][j]) return false;return true;}}60032 编写函数求矩阵最大值输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入 2 个正整数 m和n(1≤m,n≤6), 再读入1个m×n 阶矩阵 a , 计算该矩阵元素的最大值。

要求:编写max(),返回矩阵元素的最大值。

例:括号内是说明输入:1 (repeat=1)3 2 (m=3,n=2)23 465567 7889 4输出:max=567import java.util.Scanner;public class Test60032{public static void main(String []args){int ri, repeat;int a[][],i,j,m,n;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){m=in.nextInt(); n=in.nextInt();a=new int[m][n];for(i=0; i<m; i++)for(j=0;j<n;j++)System.out.println("max="+max(a));}}/*---------*/static int max(int b[][]){int max=b[0][0];for(int i=0;i<b.length;i++)for(int j=0;j<b[i].length;j++)if(max<b[i][j]) max=b[i][j];return max;}}60033 矩阵相加(方法)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入 1 个正整数n(1≤n≤6), 再读入2个 n 阶方阵 a和b , 计算矩阵的和。

要求:(1)编写计算矩阵和的函数(方法)add()。

(2)编写输出矩阵的方法prt()。

矩阵元素输出使用:System.out.print(a[i][j]+" ");例:括号内是说明输入:1 (repeat=1)3 (n=3)1 2 3 4 5 6 7 8 9 (a矩阵)1 1 1 1 1 1 1 1 1 (b矩阵)输出:A Matrix1 2 34 5 67 8 9B Matrix1 1 11 1 11 1 1A+B Matrix2 3 45 6 78 9 10import java.util.Scanner;public class Test60033{public static void main(String []args){int ri, repeat;int a[][],b[][],c[][],i,j,n;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){n=in.nextInt();a=new int[n][n]; b=new int[n][n];c=new int[n][n];for(i=0; i<n; i++)for(j=0;j<n;j++)a[i][j]=in.nextInt();for(i=0; i<n; i++)for(j=0;j<n;j++)b[i][j]=in.nextInt();add(a,b,c);prt("A Matrix",a);prt("B Matrix",b);prt("A+B Matrix",c);}}/*----加法-----*/static void add(int x[][],int y[][],int z[][]){for(int i=0;i<x.length;i++)for(int j=0;j<x[i].length;j++)z[i][j]=x[i][j]+y[i][j];}/*----输出-----*/static void prt(String s,int a[][]){System.out.println(s);for(int i=0; i<a.length; i++){for(int j=0;j<a[i].length;j++)System.out.print(a[i][j]+" ");System.out.println();}}}2.编程题60006 编程:简化的插入排序(提示:本题只需考虑整数升序排列的情况)输入一个正整数n (n>0),做n 次下列运算:输入一组(5个)有序的整数,再输入一个整数x,把x 插入到这组数据中,使该组数据(6个数)仍然有序。

说明:1)源程序中不得出现package关键字;2)程序中的第一个大括号“{”必须位于类名所在行。

3)类名与变量名由编程者自取。

4)指明为整数或整数的数据,不要用浮点类型。

输入输出示例:括号内为说明输入:2 (n=2,后面将输入2组数据和对应的x)1 2 4 5 7(第一组有序整数)3 (待插入整数x=3)1 2 5 7 9(第二组有序整数)-10 (待插入整数x=-10)输出(输出的每个数后有一个空格,每组数占一行):1 2 3 4 5 7 (插入后的第一组6个有序数)-10 1 2 5 7 9 (插入后的第二组6个有序数)import java.util.Scanner;public class Test60006 {public static void main(String []args){int ri,n;int a[],x,i,j;Scanner in=new Scanner(System.in);n=in.nextInt();for(ri=1; ri<=n; ri++){a=new int[6]; //增加一个元素,保存插入的整数for(i=0; i<5; i++) //i<5可写成:i<a.length-1a[i]=in.nextInt();x=in.nextInt();//1.找到插入点 ifor(i=0;i<5;i++) //如果插入到最前面,i=0时就停止循环了if(a[i]>=x) break; //如果插入到最后面,循环正常结束,i=5 //2.插入点及其后元素后移for(j=4;j>=i;j--) //j=4可写成:j=a.length-2a[j+1]=a[j]; //如果插入到最后面,i=5,不会执行该循环//3.插入整数a[i]=x;for(i=0; i<a.length; i++)System.out.print(a[i]+" ");System.out.println();}}}60007 编程:查找指定元素编程,输入一个正整数n (n>0),做n 次下列运算:输入6个整数,将它们存入数组a 中,再输入一个整数x,然后在数组a 中查找与x 相同的元素,如果找到,输出x 在数组a 中对应元素的最小下标,如果没有找到,输出相应信息。

相关主题