C中的矩阵乘法

C B*_*ner 6 c math matrix

我正在尝试用C解决矩阵乘法问题.问题中给出的矩阵大小(2x2)我编写了这段代码,但它没有像我期望的那样打印结果.我想我对C的规则缺少一点.

这段代码中我的错误是什么?

#include <stdio.h>
int main() {
    int matA[2][2]={0,1,2,3};
    int matB[2][2]={0,1,2,3};
    int matC[2][2];
    int i, j, k;
    for (i = 0; i < 2; i++) {
        for(j = 0; j < 2; j++) {
            for(k = 0; k < 2; k++) {
                matC[i][j] += matA[i][k] * matB[k][j];
            }
            printf("%d\n",matC[i][j]);
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

打印结果:

2 
3 
4195350
11
Run Code Online (Sandbox Code Playgroud)

You*_* G. 8

这是我使用的矩阵乘法代码:

for(i=0;i<M;i++){
    for(j=0;j<K;j++){
        matC[i][j]=0;
        for(k=0;k<N;k++){
            matC[i][j]+=matA[i][k]*matB[k][j];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

重要的是将答案矩阵设置为零(正如其他人没有代码所说).


Cha*_*nya 5

matC 最初包含一些垃圾值。将 martix 初始化为全零。这可能会解决你的问题


Mar*_*rco 5

问题是在线

matC[i][j] += matA[i][k] * matB[k][j];
Run Code Online (Sandbox Code Playgroud)

你正在向matC添加东西,但是当你创建它时,你没有初始化它,所以它有垃圾.

你可以这样做:

int matC[2][2] = {0} 这将用0来初始化所有矩阵