2017-07-06 64 views
-7

我知道这似乎是一个老问题,但没有人回答我搜索工作的问题。 我一直在收到“运行时检查失败#2 - 堆栈变量'b'被损坏。”当我试图做[4] [2] * [2] [3]矩阵乘法。#EMERGENCY !!!运行时检查失败#2 - 围绕变量'b'堆栈已损坏

有没有人发现问题?

#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; 
} 
+6

##不要提! – pm100

+1

应该是'int c [4] [3] = {0}' – ptb

回答

2

我没有检查你的代码,彻底的,但是你定义C作为3×3,这里

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

相关问题