C语言杨辉三角

C语言打印杨辉三角

首先要有个基本思维,他不是每行的个数和行数是一样的吗,咱们要想到二维数组,int a[30][30],前一个框里代表行数,后一个代表每行最大可以输出数的个数

其实可以分为两部分来写

一,将最外面的1赋好值

就直接暴力写嵌套循环遍历每行的首位,然后赋值为1

#include<stdio.h>
int main (void)
{
    //最终要输出的行数
    int n;
    //放值的数组
    int a[30][30]={0};
    int i,k;
    //将首位的值赋值为1
    for(i=0;i<n;i++)
    {
        a[i][0]=1;
        a[i][i]=1;                            
    }
    return 0;
}

二,剩下的就是往里面的数里面赋值

通过观察可以得到,数等于上面数的值加上面那个数左边的数的值

所以可以用这种方法赋值

//将中间的值赋值
for(i=2;i<n;i++)
{
    //因为不用到最后一个i就是最后一个所以不用等于i,直接k<i;
    for(k=1;k<i;k++)
    {
          a[i][k]=a[i-1][k]+a[i-1][k-1];  
    }
}

 三,前两部分组合

#include<stdio.h>

int main (void)
{
    //没啥好说的,输出的行数
    int n;
    scanf("%d",&n);
    int a[30][30]={0};
    int i,k;
    for(i=0;i<n;i++)
    {
        a[i][0]=1;
        a[i][i]=1;    
    }
    for(i=2;i<n;i++)
    {
        for(k=1;k<i;k++)
        {
            a[i][k]=a[i-1][k]+a[i-1][k-1];        
        }    
    }
    //符合格式变成这样输出
    for(i=0;i<n;i++)
    {
        for(k=0;k<=i;k++)
        {
            printf("%d ",a[i][k]);        
        }
        //符合格式
        printf("\n");                    
    }
    return 0;
}

输出样式:

还可以继续优化输出样式

上面相同

for(i=0;i<n;i++)
    {
    //核心,就是通过最后一行有几个数字来加几个空格    
    b = n - i;
    while (b--)
    {
        printf(" ");
    }
        for(k=0;k<=i;k++)
        {
            printf("%d ",a[i][k]);        
        }
        //符合格式
        if(i!=n-1)
        printf("\n");                    
    }
    //输出变成这样

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值