C++语言程序设计

2．求杨辉三角形。
所谓杨辉三角形就是二次项的系数：
1
1 2
1 2 1
1 3 3 1
1 4 6 4 1
……
我们编一个程序来求解它们，并以上面的形式输出。杨辉三角形的头一行是容易生成的，只需简单地赋值就可以了。那么对于任意一行呢？我们可以看到，第一列和最后一列总是1，而其它数是上面一行中本列和前一列元素之和，如第5行的生成过程是：
4 = 3 + 1
6 = 3 + 3
4 = 1 + 3
我们可以利用两个数组，用存放在前一个数组中的数据生成新的一行放在另一个数组中，通过来回交换就可生成一行行的数据。我们也可以只用一个数组，每次倒着生成（即从右向左生成）数组中的各元素，如
yanghui[4] = yanghui[4] + yanghui[3];
yanghui[3] = yanghui[3] + yanghui[2];
yanghui[2] = yanghui[2] + yanghui[1];
本程序采用后一种方法，程序如下：

| 例6-5

#define LASTROW 10
#include <stdio.h>
void main(void)
{
int yanghui[LASTROW + 1],row,col;
yanghui[0] = 1;
printf("%4d\n",yanghui[0]);//输出第一行
//由前一行生成新的一行
for(row = 1;row <= LASTROW;row ++)
{
yanghui[row] = 1;
for(col = row - 1;col > 0;col --)
yanghui[col] = yanghui[col] + yanghui[col - 1];
for(col = 0;col <= row;col ++)
printf("%4d",yanghui[col]);//输出一行
printf("\n");
}
}

运行结果：
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1