实验10  排序和二维数组的使用
1. 程序填空题,不要改变与输入输出有关的语句
60005 排序
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。
例:括号内是说明
输入
3  (repeat=3)
4 5 1 7 6
3 1 2 3
5 5 4 3 2 1
输出
7 6 5 1
3 2 1
5 4 3 2 1
import java.util.Scanner;
public class Test60005{
  public static void main(String []args){
      int ri, repeat;
      int i, index, k, n, temp,a[];
      Scanner in=new Scanner(System.in);
      Int();
      for(ri=1; ri<=repeat; ri++){
        Int();
        a=new int[n];
        for(i=0; i<n; i++)
            a[i]=in.nextInt();
        /*---------*/
      for(i=0;i<n-1;i++) { //选择法递减排序
          index=i;
          for(k=i+1;k<n;k++){
              if(a[k]>a[index]) index=k;  //最大值的下标
          }
          if(i!=index){
              temp=a[i];a[i]=a[index]; a[index]=temp;
          }
      }
        for(i=0; i<n; i++)
            System.out.print(a[i]+" ");
        System.out.println();
      }
  }
}
或:
      for(i=0;i<a.length-1;i++){ //冒泡法递减排序
          for(k=0;k<a.length-1-i;k++){
              if(a[k]<a[k+1]){
                      temp=a[k];a[k]=a[k+1];a[k+1]=temp;
                  }
              }
        }
60011 矩阵运算
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和.(副对角线为从矩阵的右上角至左下角的连线)
例:括号内是说明
输入:
1  (repeat=1)
4  (n=4)
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
sum=35  (2+3+4+5+6+7+8=35)
import java.util.Scanner;
public class Test60011{
  public static void main(String []args){
      int ri, repeat;
      int a[][],i,j,n,sum;
      Scanner in=new Scanner(System.in);
      Int();
      for(ri=1; ri<=repeat; ri++){
        Int();
        a=new int[n][n];
        for(i=0; i<n; i++)
            for(j=0;j<n;j++)
            a[i][j]=in.nextInt();
        /*---------*/
        sum=0;
        for(i=0; i<n-1; i++)    //i<n-1 排除最后一行
            for(j=0;j<n-1;j++){ //j<n-1 排除最后一列
                if((i+j)!=(n-1)) sum+=a[i][j]; //非副对角线元素才加入
            }             
        System.out.println("sum="+sum);
      }
  }
}
60012 加法口诀表
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入 1 个正整数 n(1≤n≤10), 输出一张 20 以内的加法口诀表. 加数与被加数都不大于 n, 分列第一行和第一列.(将加数、被加数、和放入一个二维数组中, 再输出该数组)
例:括号内是说明
输入:
1      (repeat=1)
3      (n=3)
输出:
+  1  2  3 
1  2 
2  3  4 
3  4  5  6 
import java.util.Scanner;
public class Test60012{
  public static void main(String []args){
      int ri, repeat;
      int i,j,n,a[][]=new int[10][10];
java做什么的      Scanner in=new Scanner(System.in);
      Int();
      for(ri=1; ri<=repeat; ri++){
        Int();
        /*---------*/
          for(i=1;i<=n;i++) { //给第0行和第0列所有元素赋值,a[0][0]不用赋值
            a[0][i]=i; //0行为被加数,从第1列开始赋值1,2,...,n
              a[i][0]=i; //0列为加数,从第1行元素开始赋值1,2,...,n
          }
        for(i=1;i<=n;i++) //计算和,从第1行第1列开始
            for(j=1;j<=i;j++){
                a[i][j]=i+j;
                // a[i][j]=a[i][0]+a[0][j]; //所在行第0列元素+所在列第0行元素
            }
        for( i=0; i<=n; i++ ){
            for( j=0; j<=n; j++ )
                if(i==0&&j==0) System.out.print( "+  ");//在第0行第0列上输出"+  "
                else if(i==0||j<=i) System.out.print(a[i][j]+"  "); 
                    //输出第0行和下三角阵各元素
            System.out.println();
        }
      }
  }
}
60013 判断上三角矩阵
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入1 个正整数 n (1≤n≤6)和n 阶方阵a中的元素,如果a是上三角矩阵, 输出"YES", 否则, 输出"NO"。(上三角矩阵,即主对角线以下的元素都为0, 主对角线为从矩阵的左上角至右下角的连线)
例:括号内是说明
输入:
2      (repeat=2)
3  1  2  3  0  4  5  0  0  6 (n=3)
2  1  0  -8  2  (n=2)
输出:
YES
NO
import java.util.Scanner;
public class Test60013{
  public static void main(String []args){
      int ri, repeat;
      int a[][],i,j,n;
      boolean flag;
      Scanner in=new Scanner(System.in);
      Int();
      for(ri=1; ri<=repeat; ri++){
        Int();
        a=new int[n][n]
        for (i=0;i<n;i++)
            for (j=0;j<n;j++)
                  a[i][j]=in.nextInt();
        /*---------*/
        flag=true;
        for(i=1;i<n;i++) //上三角矩阵中值为0的元素位置:1~n-1,0~i-1
            for(j=0;j<i;j++)
                if(a[i][j]!=0) flag=false;//若有一个元素非0,则不是上三角矩阵
 
        if(flag)  System.out.println("YES");
        else  System.out.println("NO");
      }
  }
}
60014 求矩阵每行元素之和
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数 m 和 n (1≤m, n),然后输入该m 行 n 列矩阵a中的元素,分别求出
各行元素之和, 并存入一维数组row中, 再输出row.
例:括号内是说明
输入:
1    (repeat=1)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。