C语言练习——打印杨辉三角形
【摘要】 C语言练习——打印杨辉三角形
C语言练习——打印杨辉三角形
学须志也,才须学也,非学无以广才,非志无以成学。——诸葛亮
🐼本篇内容简介:一、问题呈现-->二、源码实现(+详细注释)-->三、输出结果展示
一、概念说明
杨辉三角形
先看个例子,打印的是6行杨辉三角形,来看看它长什么模样?
1.模样
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
看完之后会发现,很熟悉,因为中学期间学过杨辉三角的知识。那么根据上面的图,我们可以得出什么规律?
2.规律
①每行的第一个和最后一个为1
看第三行 1 2 1 第四行 1 3 3 1 可以得出
②中间的元素是左上角的元素与右上角的元素之和。
例如第三行1 2 1 中间元素 2 为左上角1和右上角1之和。
③第n行的数字有n项。
第一行 1 有一项 第二行 1 1 有两项 第三行 1 2 1 有三项…第n行 有n项
当然规律不止这些,有很多,不过以上三个规律足够解决本题了。其它的规律大家如有想法,可以自己探索或者查询一下,此处就不再一一描述了。
了解了一些概念后,下面我们一起来看一下问题吧!
二、问题呈现
1.问题描述
Problem Description
打印10行杨辉三角形
2.输入输出
Input
无
Output
10行杨辉三角形
3.测试样例
Sample Input
无
Sample Output
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
三、源码实现(+详细注释)
1.注释版
//编程及注释:Code_流苏
//定义头文件
#include<stdio.h>
#include<stdlib.h>
//主函数
int main()
{
//定义三个整型变量i,j,k用于循环实现
int i, j, k;
int a[11][11]; //定义二维数组a[11][11]
printf("10行杨辉三角如下:\n");
//杨辉三角 实现 规律①(见概念说明)
for(i=1;i<=10;i++){
//两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数
a[i][1] = a[i][i] = 1;
}
//杨辉三角 实现 规律②(见概念说明)
for(i=3;i<=10;i++){
for(j=2;j<=i-1;j++){
//除两边的数外都等于上两顶数之和
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
//界面美化 以及 打印输出
for(i=1;i<=10;i++){
for(k=1;k<=10-i;k++){
//这一行主要是在输出数之前打上空格占位,让输出的数更美观
printf(" ");
}
//j<=i的原因是不输出其它的数,只输出我们想要的数
for(j=1;j<=i;j++){
printf("%6d",a[i][j]);
}
//当一行输出完以后换行继续下一行的输出
printf("\n");
}
//整体执行结束后,输出换行,保持整体界面
printf("\n");
//返回0,代表程序执行结束
return 0;
}
2.纯源码版
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j, k, a[11][11];
printf("10行杨辉三角如下:\n");
for(i=1;i<=10;i++){
a[i][1] = a[i][i] = 1;
}
for(i=3;i<=10;i++){
for(j=2;j<=i-1;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=1;i<=10;i++){
for(k=1;k<=10-i;k++){
printf(" ");
}
for(j=1;j<=i;j++){
printf("%6d",a[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
四、输出结果展示
1.输出结果
10行杨辉三角如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
--------------------------------
Process exited after 0.2986 seconds with return value 0
请按任意键继续. .
2.输出结果(图示版)
ps:这道题的方法,本文虽然只写出这一种,但是思路方法其实不止这一种,其它的方法可自行尝试一下,比如借助函数实现等都是可以的。
作者:Code_流苏(一个喜欢古诗词和编程的Coder😊)
★喜欢的话,还请多多点赞与关注! 感谢支持!
C语言100题练习专栏计划持续进行,欢迎评论交流学习!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)