杨辉三角:是二项式系数在三角形中的一种几何排列。它的两条斜边都是1,中间数字等于它肩上数字之和。
就像这样:
那么,如何用C语言写出杨辉三角呢?
思路
1、定义一个二维数组,赋初值为1,这里以四行四列举例
2、只输出左下角(第1行,1列……第n行,n列)。
3、处理中间数据:从第3行第2列开始,当前数=上一行的数+上一行前面的数。
4、每行之前加不等的空格,使其居中对齐。
代码(此处以9行9列举例)
#include<stdio.h>
int main()
{
int data[9][9];//定义一个9行9列的数组
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
data[i][j] = 1;
}//将数组中的所有数字赋值为1,如思路中1
for (int i = 1; i < 9; i++)
{
for (int j = 1; j < i; j++)
data[i][j] =data[i-1][j]+data[i - 1][j - 1];//当前数=上一行的数+上一行前面的数
}//处理中间数据,如思路中3
for (int i = 0; i < 9; i++)
{
for (int k = 0; k < 26 - 6*i / 2; k++)
printf(" ");//使数据居中显示,如思路中4
for (int j = 0; j <= i; j++)//j<=i表示仅输出左下角数据,如思路中2
printf("%6d", data[i][j]);
printf("\n");//输出数组所有数据
}
return 0;
}
小细节:
1、计算机中记数是从0开始,所以要表示第1行和第1列时,int i=0;? ?int j=0;
2、在使数据居中显示时,?i/2?是因为居中只需左边加空格,6*i/2是因为输出时%6d
3、在输出数组所有数据时,用??"%6d" (%d表示输出的数为整形,6表示该数在输出时宽度至少为6位)。大家可以尝试将6换成其它数字,看看有什么不同。
运行
?操作环境:Visual Studio2019
通往成功的道路不止一条,大家可以尝试用其它方法写出杨辉三角。
今天你学会了吗?觉得有用就点个赞吧,拜拜~
|