问题:巴斯卡三角形
这个题的一般方法是利用二维数组,这里没有使用二维数组,利用了两个一维数组,减少了空间的使用。
排版没做好,数字多了,会有些错位。
/*
题目:巴斯卡三角形
*/
#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;
}