题目:
作业内容
在屏幕上打印杨辉三角。
1
1 1
1 2 1
1 3 3 1
……
杨辉三角性质很多,在此我们仅考虑:
每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大。
第n行的数字有n项。
前n行共[(1+n)n]/2 个数。
代码如下:
#define H 9//限定最高行并且第n行的数字有n项
void yhsj(int arr[H][H]){
for (int row = 0; row < H; row++){
for (int col = 0; col <= row; col++){
arr[row][0] = 1;//每一行首位为一。
if (row>=1 && col>=1){
arr[row][col] = arr[row - 1][col - 1] + arr[row - 1][col];//每个数等于它上方两数之和。
}
printf(" %d", arr[row][col]);
}
printf("\n");
}
}
int main(){
int arr[H][H] = { 0 };
yhsj(arr);
system("pause");
return 0;
}
运行结果如下: