C:Matrix 次矢量输出

C:Matrix times vector output

我试图创建一个矩阵乘向量程序,但是当我运行这个程序时,我发现输出有点奇怪

这是我的代码

#include <stdio.h>

main()
{
    int i, j, n, a[3][3], b[3], c[3];

    n = 3;

    printf("Matrix A\n");
    for (i = 0; i < n; ++i) {
        for (j = 0; j < n; ++j) {
            a[i][j] = 10;
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }

    printf("\nMatrix B\n");
    for (i = 0; i < n; ++i) {
        b[i] = 5;
        printf("%d\n", b[i]);
    }

    printf("\nA * B\n");

    for (i = 0; i < n; ++i) {
        for (j = 0; j < n; ++j) {
            c[i] += a[j][i] * b[j];
        }
    }

    for (i = 0; i < n; ++i) {
        printf("%d\n", c[i]);
    }
}

结果应该是 C = {150,150,150}。问题似乎只出现在 c[0] 和 c[2]

问题是C没有初始化变量为0,你必须自己做。

改变for循环计算c如下:

for (i = 0; i < n; ++i) {
    c[i]=0;      // Add this line so that c[i] can be used in: c[i] += ....
    for (j = 0; j < n; ++j) {
         c[i] += a[j][i] * b[j];
    }
}