扑通扑通、
2021-01-06 17:19
采纳率: 100%
浏览 114

c++输出杨辉三角形,前10行没问题,超过10行的输出就是全是错的。

 代码:

#include<iostream>
using namespace std;
int main()
{
    int i, j, n;
    cin>>n;
    int a[n][n];
    
    for(i=1;i<=n;i++)
    {
        a[i][1] = 1;
        a[i][i] = 1;
    }
    //每一行第一个和最后一个赋值为1
    for(i=3;i<=n;i++)
    {
        for(j=2;j<=i-1;j++)
        {
            a[i][j] = a[i-1][j-1] + a[i-1][j]; 
        }
    }
    //给其他位置赋值
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=i;j++)
        {
            cout<<a[i][j]<<" "; 
        }
        cout<<endl;
    }
    //输出杨辉三角
} 

10行时:

11行时: 

找不到问题出在哪,请求大神帮助!!! 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • qq_25376897 2021-01-06 17:51
    已采纳

    数组下标是从0开始的

    点赞 评论
  • qq_25376897 2021-01-06 17:58
    #include<iostream>
    using namespace std;
    int main()
    {
        int i, j, n;
        cin>>n;
        int a[n][n];
        
        for(i=0;i<n;i++)//每一行第一个和最后一个赋值为1
        {
            a[i][0] = 1;
            a[i][i] = 1;
        }
        
        for(i=2;i<n;i++)//给其他位置赋值
        {
            for(j=1;j<i;j++)
            {
                a[i][j] = a[i-1][j-1] + a[i-1][j]; 
            }
        }
        
        for(i=0;i<n;i++)//输出杨辉三角
        {
            for(j=0;j<=i;j++)
            {
                cout<<a[i][j]<<" "; 
            }
            cout<<endl;
        }
        
    } 

    点赞 1 评论
  • 扑通扑通、 2021-01-07 15:52

    的确改成数组改成0开始是对的,但我放弃了每行第一个位置,而且输出10行之前都没问题,就是十行之后就会出错,这个是为什么呢?

    点赞 评论
  • 扑通扑通、 2021-01-07 16:41

    我好想知道了什么!!! 

    点赞 评论
  • qq_25376897 2021-01-07 16:43

    你的做法是数组越界了,比如你定义10个项的数组,那么a[10]就是越界了,它访问到的其实是一个不确定的地址。

    在C语言数组越界是允许的,不会报错,但是地址不确定,那么取到的值就不知道是什么,你10行之前都正确,只是刚好取到的值是0,没有影响。10行之后取到的值就不是0,结果就出错了

    点赞 评论
  • qq_25376897 2021-01-07 16:44

    上面的说法也不是很好,不是地址不确定,是那个地址存储的内容不确定,对我们来说不知道是什么,不一定是0

    点赞 评论
  • 扑通扑通、 2021-01-07 16:57

    超过10它就不行了,定义一个数组a[n][n],n<=10,a[n][n]能正确赋值并输出,n>10就不行了

    点赞 评论
  • qq_25376897 2021-01-07 17:01

    可能跟开发工具有关吧,我这边11也可以

    点赞 评论
  • 扑通扑通、 2021-01-07 17:07

     嗯嗯嗯,感谢~

    点赞 评论

相关推荐 更多相似问题