
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 }
