如何解决C矩阵转置问题中的输出?

时间:2019-03-30 03:05:51

标签: c

我尝试使用用户输入的值将4x5矩阵转置为5x4矩阵。 矩阵的最后一行似乎未正确转置。

我尝试过切换我的for循环的参数,但是我确定我做得对。

int MATRANS(int original[4][5], int transpose[5][4])
{
    int ROW, COL;

    for (ROW = 1; ROW <=4; ROW++)                                  
    {
        for (COL = 1; COL <= 5; COL++)
        {
            transpose[COL][ROW]= original[ROW][COL];
        }
    }
}
//Printing Matrix Z//
printf("Transposed Matrix:\n");
for (row=1; row< 6; row++)
{  
    for (col=1; col < 5; col++)
    {
        printf("%d ", matrixZ[row][col]);
    }
    printf("\n");
}

The output when you enter all 1's is 

1111
1111
1111
1111
1251

when I expect it to be 

1111
1111
1111
1111
1111

2 个答案:

答案 0 :(得分:0)

虽然您给出了打印matrixZ 'for(I = 1; I <6; I ++)',这意味着循环将迭代5次。

并且在matrans中它是i <= 4,这意味着它将迭代4次。 对于在给定位置的另一个for循环也是如此。 col <= 5,另一个col <5

答案 1 :(得分:0)

问题是您的for循环从1开始而不是0。

int MATRANS(int original[4][5], int transpose[5][4]) {
    int ROW, COL; 
    for (ROW = 0; ROW <4; ROW++) { 
        for (COL = 0; COL < 5; COL++){ 
            transpose[COL][ROW]= original[ROW][COL]; 
        } 
    } 
}