Mister-小方


私信TA

用户名:1104986125

访问量:88952

签 名:

如此英俊为哪般

等  级
排  名 4
经  验 15872
参赛次数 1
文章发表 68
年  龄 19
在职情况
学  校 大连交通大学
专  业 车辆工程

  自我简介:

解题思路:
1.先写出基本的杨辉三角的样式,存在数组当中。

2.然后倒着输出,找到倒着输出的规律就好了。记得数字的占位符的宽度应该和一次输出的空格的长度相等。


参考代码:

#include<stdio.h>  
int main()  
{  
    int n,a[10][10]={0},i,j,k;  //二维数组存基本杨辉三角
    while (scanf("%d",&n)!=EOF&&(n>=1&&n<=10))  
    {  
        for(i=0;i<n;i++)  //先往数组里存杨辉三角的基本样子
        {  
            for(j=0;j<=i;j++)  
            {  
                if(i==j||j==0)     //杨辉三角的规律:当行与列相等时或者列为0的时候,为1
                    a[i][j]=1;  
                else  
                    a[i][j]=a[i-1][j]+a[i-1][j-1];  //其他时候是前面的两个相加即可
            }  
            
        }  
        for(i=0;i<n;i++)  //按要求输出杨辉三角
        {  
            for(j=0;j<i;j++)  
                printf("   ");  //输出行两个占位符的间隔是3,为了避免bong输出数字就直接用3个空格去代替
            for(k=0;k<n-i;k++){  //倒着输出
                printf("%3d",a[n-i-1][k]); //占位符为3  
                printf("   ");  //后面接着来间隔,方便下一个如果有数,就输出,没数,就输出3个空格
            }  
            printf("\n");  
        }  
        printf("\n");  
    }  
    
    return 0;  
}

看看大家还有什么不懂得,请在下方评论区留言

 

0.0分

1 人评分

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

  评论区