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 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM