C语言嵌套循环
题目一:7-3 编程打印空心字符菱形
1.提交列表
2.设计思路:
- 1.定义整型变量循环控制变量i,j,k,x,y,z,e及菱形的高度height;
- 2.定义字符型变量letter;
- 3.输入字符型变量letter和高度height;.i=2;
- 4如果i<=(number+1)/2,则当i=2时,j=1,输出空格,重复本步骤,直到j<=number/2,退出 J 循环,输出letter,换行;
- 5.k=1,如果i!=(number+1)/2,则输出空格,重复本步骤,直到k<=(number+1)/2-i,退出K循环,输出letter;
- 6.x=2*i-3,输出空格,重复本步骤,直到x>0,退出X循环,输出letter,换行;
- 7.重复步骤4.5.6.直到i>(number+1)/2;
- 8.如果i>(number+1)/2,令y=i-(number+1)/2,如果i!=number,输出空格,直到y>0,退出Y循环;
- 9.如果i!=number,输出letter;;
- 10.令z=2number-2i-1,如果i!=number,输出空格,直到z>0,退出Z循环;
- 11.如果i!=number,输出letter并换行;
- 12.如果i==number,令e=1,输出空格,直到e<=number/2,退出E循环,输出letter;
13.重复步骤8.9.10.11.12.,直到i<=number,退出I循环;
3.本题调试过程碰到问题及解决办法:
- 1.这题是调试时间最长的题,一开始看题时没有思路,觉得不论怎么做都很复杂,后来百度了一下,发现一行一行处理可以简化步骤,然后将空格也看成字符,这样一来才有了思路,可是做到后面发现要找到行数和字符个数的关联和规律也是难题,通过不断调试不断修正,费了不少时间才使得菱形得以成型,不过要让字母按一定顺序对称排列又是一大问题,百度后发现可以让字母加减,如letter++(letter--)来做,但是并不理解字母加减是叠加还是只在原来字母的基础上加减,直到听老师讲了之后才明白是在原字母的基础上加减;
- 2.老师说以后像这样较为复杂的题目都应该写伪代码来帮助理清思路,才不会在调试时出现这样那样的问题;
3.需要经过运算且在代码中反复出现的式子可将其定义成一个变量;
题目二:7-4 换硬币:
1.提交列表:
设计思路:
- 1.定义累加变量count,个数总和变量total,循环控制变量i,j,k,硬币总值n,每种硬币对应总值;
- 2.输入n,
- 3.5分钱:k=n,k--;
- 4.2分钱:j=n,j--;
- 5.1分钱:i=n,i--;
- 6.重复步骤3.4.5.,直到k>0;j>0;i>0;
- 令y=5k; m=1i;x=2*j;
- 8.如果m+x+y==n&&k!=0&&i!=0&&j!=0,count=count+1,total=k+i+j;
- 9.输出fen5:%d, fen2:%d, fen1:%d, total:%d\n;
10.输出count的值;
3.本题调试过程碰到问题及解决办法:
- 1.一开始把条件语句设置为k!=n;j!=n;i!=n,后来经过调试发现错误,改成k!=0;j!=0;i!=0;
2.把k--,j--,i--写成k++,j++,i++,百思不得其解,后来在同学的提醒下该过来,仔细读题后发现“要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法”,顿恍然悟;
题目三:7-7 歌唱比赛评分系统:
1.提交列表:
2.设计思路:
- 1.定义整型变量最大值max,最小值mini,循环控制变量i,k,评委个数n;操作次数repeat,评分总和sum及浮点型变量score;
- 2.输入repeat;
- 3.k=1;k++;
- 4.输入n;
- 5.sum=0;
- 6.i=1;i++;
- 7.如果i==1,max=score;mini=score;
- 8.如果max<score,max=score;
- 9.如果mini>score,mini=score;
- sum=score+sum;
- 11.如果i==n,则输出score:%.2f\n",(sum-max-mini)*1.0/(n-2);
12.重复步骤3--11.直到k>repeat,i>n,退出循环;
3.本题调试过程碰到问题及解决办法:
1.一开始把浮点型变量score对应的格式控制字符串写成%d,答案无法出来;
- 2.把scanf("%lf",&score)放在I的for循环语句外面,使成绩只能输入一次,将其移入for循环语句就行;
- 3.继步骤2.后,max=score和mini=score也要随着改动而改动,它们一定得放置在scanf语句之后,但如果放入循环则会对后来的max和mini值产生影响,后来用了一个if语句if(i==1)将其放入循环,解决了问题;
4.格式错误是因为把代码从DAVC上复制过来时少复制了花括号;
二、同学代码结对互评:
1.互评同学名称
李琴
2.我的代码、互评同学代码截图
- 1.同学的代码
2.我的代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
- 1.同学的grade和score其实可以合并成一个数,变量尽量减少;
- 2.同学代码里的max=grade和min=max应当只在第一次循环即i=1的时候赋值,因此应当在其前加上条件语句if(i==1){};
- 3.if() else{}语句在这里不适用,应当用两个if语句如if(max
- 4.第11行的sum等于0就行了;
- 5.同学做得比我好的地方是没有犯定义和格式类型不对应的错误,很多基本功也很扎实,如很好地实现了一次输入多个数值;而且加上了if(n>3&&n<10)这样的限制条件,考虑得很周到;
三、本周学习总结:
1.你学会了什么?
- 1.学会了调用函数,函数首部由函数类型,函数名,形式参数表组成,最后要加分号作为结尾;
- 2.形参的值改变后不影响实参赋值;
- 3.局部变量的return语句只能返还一个值;
- 4.做了菱形的题目后,对代码的运行逻辑和原理有了更深的了解,尤其是在和数学的结合方面,假如没有用数学方法查找规律便很难做出来;
对逻辑思维也是一大挑战,究竟怎么做才能简化问题?答案是一行一行去完成; - 5.学会了同时输入多个数值的做法,就是把scanf语句放入循环中;
- 6.调试代码更加得心应手,知道了一般应该把断点设置在scanf后面,假如循环代码在某个地方卡住,要看是否是\n在捣乱,有时换行符也起着关键作用,使用不当会让整段代码无法运行;
- 7.学会了比较最大值和最小值,基本思路是先将初值赋给max和mini,然后用if语句判断,根据每次判断结果来决定最大最小值是否更换;
- 8.学会了i++和i--的区别,当循环的执行与i的大小无关,而与其最终运行次数有关时,两个无区别,只有当与i的值有关时,才要加以区分,i++是从小到大的值,i--是从大到小值;
- 9.九九口诀表看似简单,但是要把代码写出并不容易,要用嵌套循环,且左边的值从左至右是变化的,所以是内循环,右边的则是外循环,格式控制符向左对齐用%-4表示,且内循环执行后要换行;
- 10.认识了缩进符%-4d,它表示要向左对齐,然后包括字符在内一共占用4个格子,后面多出来的用空格代替;
11.学会了字母的递增递减可以用letter+1(或者2,3)和letter-1(或2,3);
2.本周的内容,你还不会什么?
- 1.实参与形参如何占用空间;
- 2.为什么有的代码被调用的函数中有那么多return,有时不知道要到底要return哪一个;
3.有时不懂得如何取合适的变量名;
四、截图本周题目集的PTA最后排名。
C语言嵌套循环的更多相关文章
- C语言嵌套循环作业
一.PTA实验作业 题目1:7-4 换硬币 1. 本题PTA提交列表 2. 设计思路 1.定义fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量,co ...
- 网络1712--c语言嵌套循环作业总结
1.助教有话说 首先,每周一篇的博客作业是很有必要的:编程的过程不仅仅是会敲几行代码.能够通过PTA就大吉大利了,你更应该做到的是梳理代码思路,通过与他人代码思路的比对,取其精华,进而不断进阶,才能逐 ...
- C语言--嵌套循环
一.PTA实验作业 题目1 水果价格 1.本题PTA提交列表 2.设计思路 第一步:定义变量number,表示输入的编号 第二步:定义变量i,用来记录编号数目 第三步:输出菜单:[1] apple [ ...
- Go语言循环判断的使用~
Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结 ...
- GO语言学习(十一)Go 语言循环语句
Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执行语句块 循环嵌套 在 for 循环中嵌套一个或多个 for 循环 语法 Go语言的For循环有3中形式,只有其中的一种 ...
- C语言的傻瓜式随笔(一):嵌套循环-程序结构
循环语句的嵌套 一个循环结构内可以含有另一个循环,称为循环嵌套,又称多重循环.常用的循环嵌套是二重循环,外层循环称为外循环,内层循环称为内循环. ---------不知道哪来的基础概念 这是本宝宝的第 ...
- C语言第四次博客作业--嵌套循环
一.PTA实验作业 题目1:编程打印空心字符菱形 1. 本题PTA提交列表 2. 设计思路(流程图) 3.本题调试过程碰到问题及解决办法 思考过程:将问题拆解为菱形问题和字母变化问题两部分 1> ...
- C语言博客作业--嵌套循环
一.PTA实验作业 题目1:7-4 换硬币 2 .设计思路 第一步:定义3个整型变量i,j,k用于循环,定义3个整型变量x,count,total分别用于储存零钱数额,换法个数,硬币数量: 第二步:输 ...
- C语言退出多层嵌套循环技巧
由于break语句只能影响它的最内层循环,要想立即从深层嵌套循环中退出,有哪些方法呢? 1.使用goto语句: while(condition1) { while(condition2) { whil ...
随机推荐
- Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
提供两种思路 一种线段树区间更新 另一种用map维护连续的区间,也是题解的思路 第二种很难写(我太渣,看了别人的代码,发现自己写的太烦了) #include<iostream> #incl ...
- python爬虫--爬取某网站电影下载地址
前言:因为自己还是python世界的一名小学生,还有很多路要走,所以本文以目的为向导,达到目的即可,对于那些我自己都没弄懂的原理,不做去做过多解释,以免误人子弟,大家可以网上搜索. 友情提示:本代码用 ...
- NVIDIA Geforce GT 730 OpenGL 图形显示异常花屏
原因:C盘空间爆表,用dism++清理.结果用力过猛,清完后程序里的图形直接马赛克了... 上个图感受一下吧... 嘿别说,还有那么点艺术风! 别闹了,这个问题很严重,很严肃好不好! 因为程序和数据都 ...
- 异常-----Java compiler level does not match解决方法
1, 先设置好jdk,需要确定 项目,eclipse/myeclipse,系统 用的是同一个版本的JDK,我系统中安装的JDK是1.7,所以我把eclipse的jdk成1.7 2, 进入 window ...
- sqoop:mysql to hdfs
将mysql联合查询的结果导入到hdfs上 sqoop import --connect jdbc:mysql://ip/数据库 --username root --password 密码 --que ...
- (luogu P3358)最长k可重区间集问题 [TPLY]
最长k可重区间集问题 题目链接 https://www.luogu.org/problemnew/show/3358 做法 所有点向下一个点连容量为k费用为0的边 l和r连容量为1费用为区间长度的边 ...
- 【BZOJ1969】航线规划(Link-Cut Tree)
[BZOJ1969]航线规划(Link-Cut Tree) 题面 BZOJ 题解 删边操作 套路呀 离线读入倒过来做 变成加边操作 现在考虑怎么确定两点直接的关键路径条数 如果是一棵树,那么每条边都是 ...
- python socket知识点
---恢复内容开始--- 数据在网络上进行传播,需要通过一种通信协议.常见的通信协议有:HTTP,SMTP,DNS,FTP,SSH,SNMP,ICMP PING,DNCP. OSI(Open Syst ...
- API网关系列之Kong的介绍以及安装
一.API网关产生背景 在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器 ...
- 简单探讨 javascript 闭包
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个对Array的求和.通常情况下,求和的函数是这样定义的: function sum(arr) { ret ...