回 帖 发 新 帖 刷新版面

主题:杨辉三角的问题

#include<iostream.h>
void main()
{
    int n,r,c,m,j=0;
    cout<<"请输入行数(小于17):";
    cin>>m;
    while(m>=17)
    {
    
        cout<<"你输入的行数超出范围,请重新输入!"<<endl;
        cout<<"请输入行数(小于17):";
        cin>>m;
        

        j++;
        if(j>=2)
        {
            cout<<"你的错误输入以达到3次,你无权再输入!"<<endl;
            return;
        }
    }
    for(n=0;n<=m-1;n++)
    {
        for(r=1;r<=15-n;r++)
            cout<<"  ";//2
        c=1;
        cout<<c<<"   ";//3
        for(r=1;r<=n;r++)
        {
           c=c*(n-r+1)/r;
           if(c<=100)
               if(c<10)
                   cout<<c<<"   ";//3
               else
                   cout<<c<<"  ";//2
               else
                   cout<<c<<" ";//1
        }
        cout<<endl;
    }
}


请问
for(n=0;n<=m-1;n++)
    {
        for(r=1;r<=15-n;r++)
            cout<<"  ";//2
        c=1;
        cout<<c<<"   ";//3
        for(r=1;r<=n;r++)
        {
           c=c*(n-r+1)/r;
           if(c<=100)
               if(c<10)
                   cout<<c<<"   ";//3
               else
                   cout<<c<<"  ";//2
               else
                   cout<<c<<" ";//1
        }
        cout<<endl;
    }
}
这一段是什么意思,尤其是空格不懂哦!
知道的告诉一声谢谢!
小弟新手在学C++!

回复列表 (共4个回复)

沙发


就是循环打印杨辉三角,空格用来定制数与数之间的间隔,你可以用数学归纳来总结这个算法,很容易的

板凳

为了要使输出的形式为三角形,前面必须要前导空格,但是此代码明显的缺陷就是当数字越大,三角形的形状就越不标准,所以他让你输入小于17行。
如果用动态数组存放这些数据数字间隔始终就是一致了,情况会好一些的!
思考之中……

3 楼

双层循环用来控制并输出杨辉三角 
空格是为了要输出类似等腰三角形的杨辉三角 空格很好理解的只要你画个图用数学归纳法应该就可以了

4 楼

没意思

我来回复

您尚未登录,请登录后再回复。点此登录或注册