我正在尝试用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)
这是我使用的矩阵乘法代码:
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)
重要的是将答案矩阵设置为零(正如其他人没有代码所说).
问题是在线
matC[i][j] += matA[i][k] * matB[k][j];
Run Code Online (Sandbox Code Playgroud)
你正在向matC添加东西,但是当你创建它时,你没有初始化它,所以它有垃圾.
你可以这样做:
int matC[2][2] = {0} 这将用0来初始化所有矩阵