生成乘法表的程序很奇怪

时间:2016-07-18 23:05:22

标签: c++ codeblocks

Screenshot

这是代码。它应该生成并输出一个2D数组,但由于某种原因,会混淆9x10(90)的值并导致程序崩溃。我附上了截图。

有什么建议吗?另外,如何才能使数字很好地排列成一个整齐的网格?

#include <iostream>

using namespace std;

int main ()
{
    int values[10][10];
    for(int i=1;i<=10;i++)
    {
        for(int j=1;j<=10;j++)
        {
            values[i][j]=i*j;
            cout<<\t<<values[i][j]<<flush;
        }
    cout<<endl;
    }

return 0;
}

3 个答案:

答案 0 :(得分:3)

将其更改为

C

编辑也包括身体。

答案 1 :(得分:2)

基于零的索引,控制台中的等间距值,值从1开始:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int values[10][10];
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            values[i][j] = (i + 1)*(j + 1);
            cout << setw(5) << values[i][j];
        }
        cout << endl;
    }
    return 0;
}

答案 2 :(得分:1)

数组从0开始,而不是1

using namespace std;

int main ()
{
    int values[10][10];
    for(int i=1;i<=10;i++)
    {
        for(int j=1;j<=10;j++)
        {
            values[i-1][j-1]=i*j; // <<<<<<<<<<
            cout<<'\t'<<values[i-1][j-1]<<flush;
        }
    cout<<endl;
    }

return 0;
}

编辑:输出

Success time: 0 memory: 3412 signal:0
    1   2   3   4   5   6   7   8   9   10
    2   4   6   8   10  12  14  16  18  20
    3   6   9   12  15  18  21  24  27  30
    4   8   12  16  20  24  28  32  36  40
    5   10  15  20  25  30  35  40  45  50
    6   12  18  24  30  36  42  48  54  60
    7   14  21  28  35  42  49  56  63  70
    8   16  24  32  40  48  56  64  72  80
    9   18  27  36  45  54  63  72  81  90
    10  20  30  40  50  60  70  80  90  100