我知道这似乎是一个老问题,但没有人回答我搜索工作的问题。 我一直在接收"运行时检查失败#2 - 围绕变量' b'已经腐败了。"当我试图做[4] [2] * [2] [3]矩阵乘法时。
有没有人发现问题?
#include <stdio.h>
int main() {
int a[4][2] = {0};
int b[2][3] = {0};
int c[3][3] = {0};
int i, j;
printf("Please enter first matrix value\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 2; j++) {
printf("%d row, %d column:", i + 1, j + 1);
scanf("%d", &a[i][j]);
}
}
printf("Please enter second matrix value\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d row, %d column:", i + 1, j + 1);
scanf("%d", &b[i][j]);
}
}
printf("\n the result is :\n");//
for (i = 0; i < 4; i++) {
printf("[");
for (j = 0; j < 3; j++) {
c[i][j] = (a[i][0] * b[0][j]) + (a[i][1] * b[1][j]);
printf(" %4d ", c[i][j]);
}
printf("]\n");
}
return 0;
}
答案 0 :(得分:2)
我还没有彻底检查过您的代码,但您将c定义为3x3,此处
for (i = 0; i < 4; i++) {
printf("[");
for (j = 0; j < 3; j++) {
c[i][j] = (a[i][0] * b[0][j]) + (a[i][1] * b[1][j]);
...您访问c [3],这是c 第四元素,并且不存在。这必然会将写在其他地方。
所以检查你的索引(正如@ptb观察到的那样,c&#39; s实际上应该是四行深)。