C语言实现杨辉三角

杨辉三角的样子如下图所示,那么应该怎么用C语言来实现呢

首先,可以按下图方式先编写一个没有空格的杨辉三角,在此基础上添加控制打印空格的语句。

打印上图的代码如下:

#include<stdio.h>

int main()
{
	int arr[10][10] = { 0 };
	int i = 0;
	for (i = 0; i < 10; i++) //行
	{
		int j = 0;
		for (j = 0; j <= i; j++)  //列
		{
			if (i == j || j == 0)  //当行与列相等或是第0列时为1打印数字1
			{
				arr[i][j] = 1;
			}
			if (i >= 2 && j >= 1) //计算从第三行开始两端数字1中间的数字
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		int j = 0;
		for (j = 0; j <= i; j++)
		{
			printf("%d ", arr[i][j]); //输出没有空格的杨辉三角
		}
		printf("\n");
	}
	return 0;
}

如果for (j = 0; j <= i; j++) 和 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j],这两条语句不是很理解的话可以参考下图(可能画的不是很好),因为我们只需要左侧部分,所以使用j<=i就可以不打印右边的不需要数字

接着,可以编写负责打印空格的语句,实现效果如下图:

 

再添加相应语句后,可以看到左侧和杨辉三角相差不多了

想要实现上述效果要加一个for循环,代码如下:

int k = 0;
for (k = 0; k < 10-i; k++) //行前的空格,使输出的三角美观
{
	printf("  ");
}

 虽然加了空格,但是右侧和杨辉三角的样子还是有差别,此时我们可以在输出数字的printf里在打印数字前加空格,如下图所示:

 此时,我们就可以得到一个看起来还算美观的杨辉三角:

 

完整的代码如下:

#include<stdio.h>

int main()
{
	int arr[10][10] = { 0 };
	int i = 0;
	for (i = 0; i < 10; i++) //行
	{
		int j = 0;
		for (j = 0; j <= i; j++)  //列
		{
			if (i == j || j == 0)  //当行与列相等或是第0列时为1
			{
				arr[i][j] = 1;
			}
			if (i >= 2 && j >= 1) //计算从第三行开始两端1中间的数字
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		int k = 0;
		for (k = 0; k < 10-i; k++) //行前的空格,使输出的三角美观
		{
			printf("  ");
		}
		int j = 0;
		for (j = 0; j <= i; j++)
		{
			printf("%4d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值