【输出N行杨辉三角形】两种输出方式(直角三角形型和等腰三角形型)C语言

要想用C语言实现杨辉三角形的输出,就首先需要明白杨辉三角形是怎么来的。

首先我们规定每一行第一个和最后数一个为1,那么从第一行开始就只有一个1;第二行就有两个1,从第三行开始就体现出杨辉三角形的特点了,即就是——每一个等于它上方两个数的和。就像下图一样:

 既然明白了杨辉三角形的底层逻辑,要想使用C语言来实现它那么针对这种元素比较多的又比较又规律的首先就要想到使用数组了。

我们使用一个二维数组实现杨辉三角形,如下是一个6×6的矩阵(我们可以用二维数组表示它)

 除了特殊的第一列,从第二行第二列的元素开始,它的值就是它头顶上元素的值加上左上角的值

编写代码:

#include<stdio.h>
#define N  10		//需要显示的行数 
int main(void){
	int i,j;
	int a[N][N]={1};		//定义一个二维数组并将第一个元素置1,其余置0 
	for(i=0,j=0;i<N;i++){
		a[i][j]=1;
	}
	//给数组放置杨辉三角形数 
	for(i=1;i<N;i++){		//从第1行开始到最后一行 
		for(j=1;j<N;j++){	//从第1列开始到最后一列 
			a[i][j]=a[i-1][j-1]+a[i-1][j];	//根据规律计算该元素的值 
		}
	}
	//输出杨辉三角
	for(i=0;i<N;i++){
		for(j=0;j<N;j++)
			if(a[i][j]!=0)printf("%-5d ",a[i][j]);    //-5表示左对齐,输出数据域宽为5
		printf("\n");
	}
	return 0;
} 

运行结果如下(输出了十行)

看完代码可能有人会问:既然你说了要规定每一行第一个和最后数一个为1,你怎么只定义了第一列为1呢。我觉得你可以再看一下本文开头的第二张图,就可以明白每行末尾的1我们是如何定义的了。当然你也可以直接定义。

—————————————以上是第一种输出方式(直三角形型)—————————————

—————————————以下是第二种输出方式(等腰三角形型)————————————

编写代码:

#include<stdio.h>
#define N  10		//需要显示的行数 
int main(void){
	int i,j,k;
	int a[N][N]={1};		//定义一个二维数组并将第一个元素置1,其余置0 
	for(i=0,j=0;i<N;i++){
		a[i][j]=1;
	}
	for(i=1;i<N;i++){
		for(j=1;j<N;j++){
			a[i][j]=a[i-1][j-1]+a[i-1][j];	//根据规律计算该元素的值 
		}
	}
	//输出等腰三角形型杨辉三角
	for(i=0;i<N;i++){
		//控制每行前面空格数 
		for(k=0;k<N-i;k++)
			printf("   ");	
		//元素输出 
		for(j=0;j<N;j++)
			if(a[i][j]!=0)printf("%6d",a[i][j]);	//默认右对齐,域宽为6 
		printf("\n");
	}
	return 0;
} 

其实只需要将第一次的代码中的杨辉三角输出的地方添加控制每行首个元素前的空格就行了。

效果如下:

完~~谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.魚肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值