大家好呀!👋这个是付青云同学的博客,是一名大一在校生哦!😁😁
目前一直在学习C语言。🐸
写博客是为了来记录我的学习过程,同时也希望通过博客能够帮助到需要帮助的人。
如果我的博客可以帮助到你,不妨给我一个关注哦😁
杨辉三角
规则
如图:
- 每个数等于它上方两数之和。
- 每行数字左右对称,由1开始逐渐变大。
- 第n行的数字有n项。
- 前n行共[(1+n)n]/2 个数。
- …
代码实现1
#define _CRT_SECURE_NO_WARNINGS
#define ROW 10
#define COL 10
#include <stdio.h>
int main()
{
//杨辉三角
int arr[ROW][COL] = { 0 };
int i = 0;
int j = 0;
arr[0][0] = 1;
for (i = 0; i < ROW; i++)
{
for (j = 0; j <=i; j++)
{
if (j == i || j == 0)//打印两边
{
arr[i][j] = arr[0][0];
printf("%d ", arr[i][j]);
}
else//打印中间
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
printf("%d ", arr[i][j]);
}
}
printf("\n");
}
return 0;
}
运行结果
在这里我们发现这个运行结果跟上面的图片好像不一样,是个楼梯形的,那可不可以写个代码将输出结果变成三角形的呢?
代码如下:
代码实现2
#define _CRT_SECURE_NO_WARNINGS
#define ROW 8
#define COL 8
#include <stdio.h>
void YH_sanjiao(int arr[ROW][COL], int row, int col)
{
//定义杨辉三角
int i = 0;
int j = 0;
arr[0][0] = 1;
for (i = 0; i < ROW; i++)
{
for (j = 0; j <= i; j++)
{
if (j == i || j == 0)
{
arr[i][j] = arr[0][0];
}
else
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
}
}
void lingxin(int arr[ROW][COL], int row, int col)//打印杨辉三角的函数
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++)//打印一行
{
for (j = 0; j < col - i - 1; j++)//打印空格
{
printf(" ");
}
for (j = 0; j < i; j++)
{
printf("%d ", arr[i][j]);//打印数字
}
printf("\n");
}
}
int main()
{
int arr[ROW][COL] = { 0 };
YH_sanjiao(arr, ROW, COL);
lingxin(arr, ROW, COL);
return 0;
}