C语言十五弹---打印杨辉三角

C语言实现打印杨辉三角

特点:1.每个数等于它上方两数之和。

2.每行数字左右对称,由1开始逐渐变大。

3.第n行的数字有n项。

C语言十五弹---打印杨辉三角_第1张图片

一、打印空格

由图可看出第一行有 n - 1个空格,随着row的增加空格逐渐减少,故此打印空格条件为 打印行数 - row

for (int i = 0; i < 10-row; i++)//空格
{
	printf("  ");
}

二、打印外层1

由图观察可知 外层被1囊括,那么仔细观察便发现,每行初始位置和行列相等时为1。

if ((arr[row][0] = 1) || (row == col))//外部 二者满足一个就需要打印 故使用||
{
	arr[row][col] = 1;
}

三、打印内部

由图可以观察到 下一行数字等于本身上一行位置的前一个位置和后一个位置之和 。那么就只需要找到两个位置然后求和等于本身即可。

	if (row > 1 && col >= 1)//从第二行开始存在中间数据 并满足条件
	{
		arr[row][col] = arr[row - 1][col - 1] + arr[row - 1][col];
	}

总代码

#include 
#define ROW 10//宏定义(命名方法默认全大写) 可以修改杨辉三角层数
#define COL 10
int main()
{
	int arr[ROW][COL] = { 0 };
	int row = 1, col = 1;
	for (row = 0; row < ROW; row++)
	{
		for (int i = 0; i < ROW-row; i++)//空格
		{
			printf("  ");
		}
				
		for (col = 0; col <= row; col++)
		{
			if ((arr[row][0] = 1) || (row == col))//外部
			{
				arr[row][col] = 1;
			}

			if (row > 1 && col >= 1)//从第二行开始存在中间数据 并满足条件
			{
				arr[row][col] = arr[row - 1][col - 1] + arr[row - 1][col];
			}
			printf("%4d", arr[row][col]);//%4d 能够打印一个等边杨辉三角
		}
		printf("\n");
	}
	return 0;
}

你可能感兴趣的:(c语言)