Forever_lll231 2023-02-16 13:02 采纳率: 100%
浏览 28
已结题

C++编程遇到的小问题

这个代码输入16以下的数字可以运行,16以上就不行了,请问为什么啊?


#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int i,j,n;
    cout<<"请输入层数:";
    cin>>n;
    int arr[n][n];
    arr[1][1]=1,arr[2][1]=1,arr[2][2]=1;
    for(i=3;i<n+1;i++)
    {
        arr[i][1]=1;
        arr[i][i]=1;
        for(j=2;j<i;j++)
        {
            arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
        }
    }
    for(i=1;i<n+1;i++)
    {
        int flag=1;
        for(j=1;j<i+1;j++)
        {
            if(arr[i][j]==1 && flag==1)
            {
                cout<<setw(5*n-4*i)<<arr[i][j];
                flag=0;
            }
            else
            {
                cout<<setw(8)<<arr[i][j];
            }
        }
        cout<<endl;
    }
    return 0;
}
  • 写回答

4条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-02-16 13:17
    关注

    前面的 循环中,arr 数组越界访问了,如下定义arr

    int arr[n+1][n+1];
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 2月16日