杨辉三角如下所示:
0 1 2 3 4 5 6
0 1
1 1 1
2 1 2 1
3 1 3 3 1
4 1 4 6 4 1
5 1 5 10 10 5 1
6 1 6 15 20 15 6 1
创建一个二维数组,用二维数组的下标表示杨辉三角中每个数字的坐标
从第2行第1列的数字开始,利用下面的代码实现,将该数字上一行的两个数字之和赋值给该数
arr[i][j]= arr[i - 1][j - 1] + arr[i - 1][j];
而第0行和第1行以及每一行最后的一个数字1用简单的赋值语句实现
arr[0][0] = 1;//输出最最上角的1
printf("%d\n", arr[0][0]);
arr[1][0] = arr[1][1] = 1;//第二行的两个1
printf("%d %d\n", arr[1][0], arr[1][1]);
if (i == j)//打印每一行的最后一个1
arr[i][j] = 1;
printf("%2d\n",arr[i][j]);
整体代码如下:
#include<stdio.h>
#include<stdlib.h>
#define high 10
int main(){
int i, j;
int arr[10][10] = { 0 };
arr[0][0] = 1;//输出最最上角的1
printf("%d\n", arr[0][0]);
arr[1][0] = arr[1][1] = 1;//第二行的两个1
printf("%d %d\n", arr[1][0], arr[1][1]);
for (i = 2; i < 10; i++){ //从第二行开始,数字开始有有规律的变化0
arr[i][0] = 1;
printf("%d ", arr[i][0]);
for (j = 1; j < i; j++){
arr[i][j]= arr[i - 1][j - 1] + arr[i - 1][j];//将该数上一行的前一列和该列的和赋值给该数
printf("%2d ", arr[i][j]);
}
if (i == j)//打印每一行的最后一个1
arr[i][j] = 1;
printf("%2d\n",arr[i][j]);
}
system("pause");
return 0;
}
.打印结果如图:
