今天是第三天:练习-数组-杨辉三角的查找

        大家好,我是C语言小白-Haven,昨天学习自己去码简单自制项目作为昨天晚上的作业,就是那种超缩减版的概率系统以及之前学习的知识。

        做的基本上是那种普通的抽卡系统,我做的也是基于概率以及条件选择的文字游戏,自己选题选的是动物园规则怪谈,但由于选题太大以及人手、时间、经费不足,只能做了个超超超级删减魔改版,做的太晚了,所以没有去写每日一练。

        题目:输入一个正整数n,打印前n行的杨辉三角。

                        先说一下杨辉三角:

                                                                        1

                                                                   1        1

                                                              1       
2        1

                                                         1        3       
3        1

                                                    1        4        6       
4        1

        先分析一下,边上是固定的1,中间可以组成一个小三角,每一个值是它头顶上的两个尖角值相加,例如:

        2==1+1; 3==1+2;4==1+3;6==3+3;

思维过程:

        1.我的第一反应是既然下面的数值取决于上面的数值,那我就用两个数组a[]、b[]以行为基准,一行一行交替进行输入、输出。

        同时发现第一行有一个值,第二行有两个值,第三行有三个值.....

        最开始给a[0]赋值1,输出后第一行后给下一行的边缘两个b[0]与b[m]赋值,再按条件给中间赋值。利用上下交换装置,使下一次输出b[],给两个a[0]与a[m]赋值,按条件给中间赋值。如此循环下去。

        2.还有另一种用二维数组,直接将整个前n行全部计算出来,分为两边和中间的三角两个模块,这个可以自己去试一下。

        3.还有一种用一维数组a[n]算出来的,这个我没有具体了解,有兴趣的可以自己去写一下。

/* 作业:打印杨辉三角 输入一个正整数n, 打印杨辉三角前n行; */ #include<stdio.h> int main() {
/*********定义与输入模块********/ int n,m,i,flag=0; printf("please input a data:");
scanf("%d",&n); int a[n],b[n]; a[0]=1; /***********执行模块**********/
for(m=1;m<=n;m++) { if(flag==0) { for(i=0;i<m;i++)//------------对a[n]的输出模块 {
printf("%-4d",a[i]); } printf("\n"); b[0]=b[m]=1;//----------------对b[n]的输入模块
for(i=1;i<m;i++) { b[i]=a[i-1]+a[i]; } flag=1;//---------------------上下转换装置 }
else if(flag==1) { for(i=0;i<m;i++)//------------对b[n]的输出模块 {
printf("%-4d",b[i]); } printf("\n"); a[0]=a[m]=1;//----------------对a[n]的输入模块
for(i=1;i<m;i++) { a[i]=b[i-1]+b[i]; } flag=0;//---------------------上下转换装置 } }
return 0; }

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信