题目要求如下
注意:二维矩阵转置时for循环里面列的初始值为行数,如果for从0开始循环将会把转置后的矩阵再次转置回原矩阵。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int flag = 0;
Scanner scan=new Scanner(System.in);
int b = scan.nextInt();
int [][] a = new int[b][b];
for(int i = 0;i<b;i++) //初始化二维数组
for(int j = 0;j<b;j++)
{
a[i][j] = i * b + j + 1;
}
for(int i = 0;i<b;i++) //矩阵转置
for(int j = i;j<b;j++)
{
int temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
for(int i = 0;i<b;i++) //二维矩阵输出
for(int j = 0;j<b;j++)
{
if(flag%3==0 && flag!=0)
System.out.println();
System.out.printf("%4d",a[i][j]);
flag++;
}
System.out.println();
}
}