巴斯卡三角形

时间:2022-05-30 11:14:18

问题:巴斯卡三角形

这个题的一般方法是利用二维数组,这里没有使用二维数组,利用了两个一维数组,减少了空间的使用。

巴斯卡三角形       

排版没做好,数字多了,会有些错位。

/*
题目:巴斯卡三角形
*/
#include<stdio.h>
void show(int i, int* priot_row, int* row, int count)
{
	for (int k = i; k <= count; k++)
	{
		printf("  ");
	}
	for (int j = 0; j <= i; j++)
	{
		priot_row[j] = row[j];
		printf("%d   ", row[j]);
	}
	puts("");
}
void PASCAL(int i, int* priot_row, int* row, int count)
{
	for (int j = 0; j <= i; j++)
	{
		if (j == 0 || j == i)
		{
			row[j] = 1;
		}
		else
		{
			row[j] = priot_row[j - 1] + priot_row[j];
		}
	}
	show(i, priot_row, row, count);
}
int main()
{
	int i, count;//层数
	int priot_row[40], row[40];
	printf("请输入需要输出的层数:");
	scanf("%d",&i);
	count = i;
	for (int j = 0; j < i; j++)
	{
		PASCAL(j, priot_row, row, count);
	}
	return 0;
}