急!C语言二维矩阵转置

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:04:58
下面是小弟写的(MatMain已经成功从文件读出来):
/*假设MatMain[3][4]:
1 2 3 4
5 6 7 8
3 2 1 4
*/
/*转置以后MatTransp[4][3]
1 5 3
2 6 2
3 7 1
4 8 4
*/

void Transpose (int Mat[MAXSIZE][MAXSIZE],int Transp[MAXSIZE][MAXSIZE],int RM,int CM,int *RT,int *CT) {

RT = &CM;
CT = &RM;
int r,c;
for(r=0;r<(*RT);r++){
for(c=0;c<(*CT);c++){
Transp[r][c]=Mat[c][r];
}
}

}

int main()
{
int RsizeM, CsizeM;
int RsizeTr, CsizeTr;
int MatMain[MAXSIZE][MAXSIZE];
int MatTransp[MAXSIZE][MAXSIZE];

Transpose(MatMain, MatTransp, RsizeM, CsizeM, &RsizeTr, &CsizeTr);
PrMat(fpout, MatTransp, RsizeTr, CsizeTr);
//PrMat函数作用是打印矩阵到屏幕

}
-------------------------------------------------------
运行时候显示4[main]_cygtls::handle_exceptions: Error while dumping state <probably corrupted stack>
Segmentation fault(core d

1 #include <stdio.h>
2 #define MAXSIZER 3
3 #define MAXSIZEL 4
4 void Transpose (int Mat[MAXSIZER][MAXSIZEL],int Transp[MAXSIZEL][MAXSIZER],int RM,int CT) {
5
6 int r,c;
7 for(r=0;r<(RM);r++){
8 for(c=0;c<(CT);c++){
9 Transp[c][r]=Mat[r][c];
10 }
11 }
12
13 }
14
15 void PrMat(int a[MAXSIZEL][MAXSIZER])
16 {
17 int i,j;
18 for (i=0;i<MAXSIZEL;++i){
19 for (j=0;j<MAXSIZER;++j)
20 printf("%d\t",a[i][j]);
21 putchar('\n');
22 }
23 }
24
25 int main()
26 {
27 //int RsizeM, CsizeM;
28 //int RsizeTr, CsizeTr;
29 int MatMain[MAXSIZER][MAXSIZEL]={1,2,3,4,5,6,7,8,9,10,11,12};
30 int MatTransp[MAXSIZEL][MAXSIZER];
31
32 Transpose(MatMain, Ma