C语言实现打印杨辉三角
特点:1.每个数等于它上方两数之和。
2.每行数字左右对称,由1开始逐渐变大。
3.第n行的数字有n项。
![在这里插入图片描述](https://img-blog.csdnimg.cn/a172008e672d488d96247bc614b93c64.png)
一、打印空格
由图可看出第一行有 n - 1个空格,随着row的增加空格逐渐减少,故此打印空格条件为 打印行数 - row
for (int i = 0; i < 10-row; i++)
{
printf(" ");
}
二、打印外层1
由图观察可知 外层被1囊括,那么仔细观察便发现,每行初始位置和行列相等时为1。
if ((arr[row][0] = 1) || (row == col))
{
arr[row][col] = 1;
}
三、打印内部
由图可以观察到 下一行数字等于本身上一行位置的前一个位置和后一个位置之和 。那么就只需要找到两个位置然后求和等于本身即可。
if (row > 1 && col >= 1)
{
arr[row][col] = arr[row - 1][col - 1] + arr[row - 1][col];
}
总代码
#include <stdio.h>
#define ROW 10
#define COL 10
int main()
{
int arr[ROW][COL] = { 0 };
int row = 1, col = 1;
for (row = 0; row < ROW; row++)
{
for (int i = 0; i < ROW-row; i++)
{
printf(" ");
}
for (col = 0; col <= row; col++)
{
if ((arr[row][0] = 1) || (row == col))
{
arr[row][col] = 1;
}
if (row > 1 && col >= 1)
{
arr[row][col] = arr[row - 1][col - 1] + arr[row - 1][col];
}
printf("%4d", arr[row][col]);
}
printf("\n");
}
return 0;
}