#EMERGENCY!运行时检查失败#2 - 围绕变量' b'被腐败了

时间:2017-07-06 20:37:54

标签: c

我知道这似乎是一个老问题,但没有人回答我搜索工作的问题。 我一直在接收"运行时检查失败#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;
}

1 个答案:

答案 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实际上应该是四行深)。