杨辉三角的样子如下图所示,那么应该怎么用C语言来实现呢
首先,可以按下图方式先编写一个没有空格的杨辉三角,在此基础上添加控制打印空格的语句。
打印上图的代码如下:
#include<stdio.h>
int main()
{
int arr[10][10] = { 0 };
int i = 0;
for (i = 0; i < 10; i++) //行
{
int j = 0;
for (j = 0; j <= i; j++) //列
{
if (i == j || j == 0) //当行与列相等或是第0列时为1打印数字1
{
arr[i][j] = 1;
}
if (i >= 2 && j >= 1) //计算从第三行开始两端数字1中间的数字
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
for (i = 0; i < 10; i++)
{
int j = 0;
for (j = 0; j <= i; j++)
{
printf("%d ", arr[i][j]); //输出没有空格的杨辉三角
}
printf("\n");
}
return 0;
}
如果for (j = 0; j <= i; j++) 和 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j],这两条语句不是很理解的话可以参考下图(可能画的不是很好),因为我们只需要左侧部分,所以使用j<=i就可以不打印右边的不需要数字
接着,可以编写负责打印空格的语句,实现效果如下图:
再添加相应语句后,可以看到左侧和杨辉三角相差不多了
想要实现上述效果要加一个for循环,代码如下:
int k = 0;
for (k = 0; k < 10-i; k++) //行前的空格,使输出的三角美观
{
printf(" ");
}
虽然加了空格,但是右侧和杨辉三角的样子还是有差别,此时我们可以在输出数字的printf里在打印数字前加空格,如下图所示:
此时,我们就可以得到一个看起来还算美观的杨辉三角:
完整的代码如下:
#include<stdio.h>
int main()
{
int arr[10][10] = { 0 };
int i = 0;
for (i = 0; i < 10; i++) //行
{
int j = 0;
for (j = 0; j <= i; j++) //列
{
if (i == j || j == 0) //当行与列相等或是第0列时为1
{
arr[i][j] = 1;
}
if (i >= 2 && j >= 1) //计算从第三行开始两端1中间的数字
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
for (i = 0; i < 10; i++)
{
int k = 0;
for (k = 0; k < 10-i; k++) //行前的空格,使输出的三角美观
{
printf(" ");
}
int j = 0;
for (j = 0; j <= i; j++)
{
printf("%4d ", arr[i][j]);
}
printf("\n");
}
return 0;
}