import java.util.Scanner; // 一维数组行优先存储的矩阵转置 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int n = in.nextInt();// 行 int m = in.nextInt();// 列 int[] arr = new int[n * m]; int index = 0; while (in.hasNextInt()) { // 一维数组行优先存储 arr[index++] = in.nextInt(); } int[] res = new int[n * m]; // 遍历arr,转置,再存到一维数组res中 for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { // 原矩阵位置:i*cols + j // 转置矩阵位置:j*rows + i res[j*n+i] = arr[i*m+j]; } } // 遍历转换后的一维数组,行、列转换 int index_new = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { System.out.printf("%d ",res[index_new++]); } System.out.println(); } } }