1. 程式人生 > 實用技巧 >C語言動態二維陣列矩陣轉置

C語言動態二維陣列矩陣轉置

 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 }