C语言实现打印杨辉三角
特点:1.每个数等于它上方两数之和。
2.每行数字左右对称,由1开始逐渐变大。
3.第n行的数字有n项。
文章来源地址https://www.toymoban.com/news/detail-753182.html
一、打印空格
由图可看出第一行有 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]);//%4d 能够打印一个等边杨辉三角
}
printf("\n");
}
return 0;
}
文章来源:https://www.toymoban.com/news/detail-753182.html
到了这里,关于C语言十五弹---打印杨辉三角的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!