什么是杨辉三角形?
这个就是杨辉三角形,从第三行开始的每个数字都等于这位数的前一行一列和前一行之和。
在此之前,我们先将问题简化,先输出零。
#include<stdio.h>
int main()
{
int i, j, n;
int arr[30][30] = { 0 };
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%5d ", arr[i][j]);
}
printf("\n");
}
}
结果如下
那么我们并不需要右上部分,该怎么做呢?
我们注意到右上部分的行数都小于列数,所以只需要i>=j即可
#include<stdio.h>
int main()
{
int i, j, n;
int arr[30][30] = { 0 };
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (j = 0; i>=j; j++)
{
printf("%5d ", arr[i][j]);
}
printf("\n");
}
}
接下来就需要赋值,在第三行之前的赋值为1,从第三行开始有
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
代码如下:
#include<stdio.h>
int main()
{
int i, j, n;
int arr[30][30] = { 0 };
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (j = 0; i>=j; j++)
{
if (i >= 2)
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
else
arr[i][j] = 1;
printf("%5d", arr[i][j]);
}
printf("\n");
}
}
```c
在这里插入代码片
成功完成目标!