2

我目前正在开发一个打印 5 个变量真值表的程序。我正在使用二维数组。我的代码当前生成了表,但说它已损坏,并且“变量“表”周围的堆栈已损坏。有帮助吗?

#include <iostream>
using namespace std;

int main() {
    bool table[5][32];

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            table[i][j] = ((i >> j)& 1);
        }
    }

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            cout << table[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

这是作业,所以我想理解它,而不仅仅是一个答案。

4

2 回答 2

1

索引是错误的。只有table[0]totable[4]可用,因此访问table[5]table[31]非法的。

尝试这个:

#include <iostream>
using namespace std;

int main() {
    bool table[32][5]; // swap 32 and 5

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            table[i][j] = ((i >> j)& 1);
        }
    }

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            cout << table[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
于 2016-03-07T00:37:26.527 回答
1

尝试从数组中读取边界值。

如果您需要5x32矩阵使用下面的代码:

    for (int i = 0; i < 5; i++) {          // 32-> 5
        for (int j = 0; j < 32; j++) {     // 5->32

如果您需要32x5矩阵,请替换以下代码:

    bool table[32][5];        //it was table[5][32];
于 2016-03-07T04:52:28.423 回答