一.题目描述
二.思路分析
1.首先得了解什么是杨辉三角:①每个数等于它上方两数之和;②每行数字左右对称,由1开始逐渐变大;③第n行的数字有n项
2.根据它的定义我们可以得知每一行的第一个数和最后一个数都是1,因此我们可以先将每行的第一个数和最后一个数先打印出来,有题目中的图片示例可知应该使用二维数组(建议打印前先将数组初始化为0)
3.接下来处理中间的数,中间的数是上方两数之和,因此可以用坐标表示出来即arr[a][b]=arr[a-1][b-1]+arr[a-1][b]
三.代码展示
#include<stdio.h>
int main()
{
int arr[20][20]={0};
printf("ǵ(1~20):-->");//这里简单处理了一下,相对来说更加合理一点
int n = 0;
scanf("%d", &n);
int a = 0, b = 0;
for (a = 0; a < n; a++)
{
arr[a][0] = 1;//每行第一个数为1
for (b = 0; b <= a; b++)//b最大只能等于a
{
if (a > 0 && b > 0 && b<a)//中间数的判断条件
{
arr[a][b] = arr[a - 1][b - 1] + arr[a - 1][b];//中间数的特点
}
if (b == a)
{
arr[a][b] = 1;//每行最后一个数为1
}
printf("%d ", arr[a][b]);//打印每行的数
}
printf("\n");//打印完每行后换行
}
return 0;
}
最后:
代码还是有点缺陷,不能打印出金字塔型的,有好方法的友友们可以在评论区说一下
每日一题系列旨在养成刷题的习惯,所以对代码的解释并不会特别详细,但足够引导大家写出来,选的题目都不会特别难,但也不是特别简单,比较考验大家的基础和应用能力,我希望能够将这个系列一直写下去,也希望大家能够和我一起坚持每天写代码。
在这里送大家一句话:广积粮,缓称王!