1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int m,n,i,k; 6 scanf("%d%d",&m,&n); 7 8 //原矩阵 9 int **A = (int**)malloc(sizeof(int*) * m); 10 for(i=0; i<m; i++) 11 { 12 A[i] = (int*)malloc(sizeof(int) * n); 13 } 14 for(i=0; i<m ; i++) 15 { 16 for(k=0; k<n; k++) 17 { 18 scanf("%d", &A[i][k]); 19 } 20 } 21 printf("\n原矩阵\n"); 22 for(i=0; i<m ; i++) 23 { 24 for(k=0; k<n; k++) 25 { 26 printf("%-3d", A[i][k]); 27 } 28 printf("\n"); 29 } 30 31 //转置矩阵 32 int **AT = (int**)malloc(sizeof(int*) * n); 33 for(i=0; i<n; i++) 34 { 35 AT[i] = (int*)malloc(sizeof(int) * m); 36 } 37 for(i=0; i<n ; i++) 38 { 39 for(k=0; k<m; k++) 40 { 41 AT[i][k] = A[k][i]; 42 } 43 } 44 printf("\n转置矩阵\n"); 45 for(i=0; i<n ; i++) 46 { 47 for(k=0; k<m; k++) 48 { 49 printf("%-3d", AT[i][k]); 50 } 51 printf("\n"); 52 } 53 54 //释放空间 55 for(i=0; i<m; i++) 56 { 57 free(A[i]); 58 } 59 free(A); 60 61 for(i=0; i<n; i++) 62 { 63 free(AT[i]); 64 } 65 free(AT); 66 67 return 0; 68 }