C中的矩阵乘法返回意外结果

时间:2016-02-19 01:00:37

标签: c matrix-multiplication

嗯,这里有一些简单的代码来创建1X的3X3矩阵并将矩阵自身相乘。 我希望看到一个3X3的方阵。 然而,输出与我的预期非常不同。 我希望: 3 3 3 3 3 3 3 3 3

我明白了: 4 3 1530309563 32770 76107779 4 1764799051 32770 1530309579 任何见解?
谢谢, 安键

这是代码:`

int main()
{

    const int ROW = 3;
    const int COL= 3;
    int mat[ROW][COL];
    int mul[ROW][COL];

//create a matrix of ones
    for (int r=0; r<= ROW-1 ; r++)
    {
        for (int c=0; c<= COL-1; c++)
        {
            mat[r][c]=1;
        }
    }


    for (int r=0; r<= ROW -1; r++)
    {
        for (int c=0; c<= COL -1; c++)
        {
            for(int i=0; i<=COL-1; i++)
            {
                mul[r][c]+=mat[r][i]*mat[i][c];
            }
        }   
    }


    for (int r=0; r<= ROW -1 ; r++)
    {
        for (int c=0; c<= COL-1; c++)
        {
            printf("%d ",mul[r][c]);
        }
        printf("\n");
    }

}

`

2 个答案:

答案 0 :(得分:3)

mul值未初始化,因此其值是意外的。 尝试在初始化循环中添加此行:

mul[r][c] = 0;

答案 1 :(得分:2)

您从未初始化mul数组,因此mul[r][c]+=会添加垃圾。

要解决此问题,请mat[r][c] = 1;mul[r][c] = 0;