请问我这个杨辉三角的运行结果为什么会出错

请问我这个杨辉三角的运行结果为什么会出错?n在5以内没问题,输入6出错,输入7也没问题,输入8又出错了,请大家帮我看看是哪里出了问题,感谢!

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int n;
    cout<<"请输入杨辉三角的行数:"<<endl;
    cin>>n;
    int i,j,a[n][n];
    
    for(i=1;i<=n;i++){
        a[i][i]=1;
        a[i][1]=1;
    }
    for(i=3;i<=n;i++)
    for(j=2;j<i;j++)
    a[i][j]=a[i-1][j-1]+a[i-1][j];
    
    cout<<n<<"行杨辉三角结果如下:"<<endl;
    for(i=1;i<=n;i++){
        for(j=1;j<=i;j++)
        cout<<a[i][j]<<" ";
        cout<<endl;
    }
        return 0;
}

【以下回答由 GPT 生成】

这个程序出错的原因是数组越界访问。在C++中,数组的下标是从0开始的,而你的i循环是从1开始的,这会导致数组访问越界。

为了修复这个问题,你可以将数组a的大小定义为[n+1][n+1],这样就能够正确地访问到a[n][n]。

下面是修复后的代码:

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

int main(){
    int n;
    cout << "请输入杨辉三角的行数:" << endl;
    cin >> n;
    int i,j;
    int a[n+1][n+1];

    // 这里是计算杨辉三角的代码
    for(i=1;i<=n;i++){
        a[i][i]=1;
        a[i][1]=1;
    }
    for(i=3;i<=n;i++){
        for(j=2;j<i;j++){
            a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }

    cout << n << "行杨辉三角结果如下:" << endl;
    for(i=1;i<=n;i++){
        for(j=1;j<=i;j++){
            cout << a[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

这样修改后,程序就能够正确运行并计算出杨辉三角的结果了。希望能帮助到你!



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

数组越界了,数组的下标是从 0 开始的,而你在循环中使用了从 1 开始的下标。

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

int main() {
    int n;
    cout << "请输入杨辉三角的行数:" << endl;
    cin >> n;
    int a[n][n];

    for (int i = 0; i < n; i++) {
        a[i][i] = 1;
        a[i][0] = 1;
    }
    
    for (int i = 2; i < n; i++) {
        for (int j = 1; j < i; j++) {
            a[i][j] = a[i-1][j-1] + a[i-1][j];
        }
    }

    cout << n << "行杨辉三角结果如下:" << endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            cout << setw(4) << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632