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 }

 

posted @ 2020-10-07 16:34  AN_drew  阅读(1221)  评论(0)    收藏  举报