0

行是用户输入的。

cout << "Input the number of rows: ";
cin >> row;
column=row;

int triangle[row][column];

for (i=0;i<=row;i++){
    for (j=0;j<=column;j++){
           triangle[i][j]=0;
    }
}

for (i=0;i<=row;i++){
    for (j=0;j<=i;j++){
           if (j==0 || j==i){
           triangle[i][j]=1;
           } else {
           triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];
           }
    }
}

cout << "Pascals triangle with " << row << " rows.";

for (i=0;i<=row;i++){
    for (j=0;j<=i;j++){
        cout << triangle[i][j] << "\t";
    }
    cout << endl;
}

当行为 7 时,它确实给出了正确的结果,但是当输入的行大于 8 时,它会以某种方式崩溃。

4

1 回答 1

2

很可能triangle没有为您使用的索引声明足够的内存。如果row==column==8那么你需要像这样声明它:

double triangle[9][9];

因为 C++ 使用从零开始的索引,这允许索引在 0 到 8 范围内(包括 0 到 8)。您的声明很可能是这样的:

double triangle[8][8];
于 2013-02-09T15:52:32.803 回答