C语言博客作业--嵌套循环

一、PTA实验作业


题目1:7-4 换硬币

2 .设计思路

  • 第一步:定义3个整型变量i,j,k用于循环,定义3个整型变量x,count,total分别用于储存零钱数额,换法个数,硬币数量;
  • 第二步:输入x,判断3个循环条件,是否同时满足条件x=i+2j+5k;
  • 第三步:如果满足,计算硬币总数,输入结果,count加1,并重复步骤2;
  • 第四步:如果不满足,重复步骤2,直至循环结束。
  • 第五步:输出count数量;

3.本题调试过程碰到问题及解决办法

问题:pta上总是显示部分正确。
解决方法:
输入13,结果正确;

输入19,则没有从大到小排序。

调试代码,发现循环时从主循环i(一分硬币)开始,由最小值1慢慢循环,直至结果最大,体现不出从大到小排序。与题目要求输出k(5分硬币)的最大值也不相符;所以调整循环位置,k变为主循环,i为嵌套循环。并且k,j,i从最大值开始循环,直至结果最小。通过下图改变循环主次,循环方向,得出正确答案。


4.本题PTA提交列表



题目2:

2 .设计思路

3.本题调试过程碰到问题及解决办法

问题1:repeat=1时结果正确,但是repeat=2时,不能进入循环。
如图,i=1,但是并没有执行循环,反而程序结束。
解决方法:return 0;在循环内,所以执行return时,程序结束。
问题2:在dev上答案都是正确,但是pta结果错误,开始调试
解决方法:
当i=1时,答案无误,但是max=91,min=85,而不是一开始的max=0,min=100,造成结果错误。
所以把max=0,min=100放在主循环内,当i++时,重新对max,min赋值!

4.本题PTA提交列表


题目3:7-8 餐饮服务质量调查打分

2 .设计思路

3.本题调试过程碰到问题及解决办法

问题:不知道怎么输出*,发现自己只能输出1:,而没有'星号',且不知道如何使'星号'叠加
解决方法:利用switch语句并定义一个变量储存grade个数,当grade等于相应分数,则叠加,再利用循环嵌套输出'星号'。

4.本题PTA提交列表

二、截图本周题目集的PTA最后排名

三、同学代码结对互评

1.互评同学名称

李梦冰

2.我的代码、互评同学代码截图

  • 我的代码

  • 梦冰的代码

分析梦冰的好与坏

不好:梦冰的代码没有体现题目的原意,题目是说:“按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。”。说明要循环一个周期后,完全没有的情况下输出none,而她是n=1,输出none,虽然结果正确,但是取巧了。没有设置一个变量来记录出现素数的情况。
好:梦冰的代码每一行都有注释,看了她的代码,我很容易看出了代码代表的意义。清晰明了,这样的代码即使出现错误,也容易调试找出错误。对于一个打代码的人,特别理解给代码注释的痛苦,梦冰这种难能可贵的精神值得每个人学习!

对比

我:我的代码从n=2开始,没有考虑1的情况,不严谨。而且没有注释,自己看自己的代码都需要时间来判断代码意义,还有定义变量很随意。
梦冰:代码很严谨,详情参照上述好与坏。

三、本周学习总结

1.你学会了什么?

学会了如何使用嵌套循环解决问题,学会了利用流程图代替语言说明设计思路。初步学会了利用伪代码解决难题,这样比起一开始没有思路而盲目打代码,情况好多了。
实参:主调函数的参数,可以为常量,变量,表达式。
形参:调用函数的参数,必须为变量。
函数通过将实参的值单向复制给形参,而且定义形参的值不会影响实参的值单向复制给形参。
定义自定义函数时,需要函数声明,定义,调用,结果返回。

2.本周的内容你还不会什么?

不会函数题目,因为才开始接触,不熟悉,多做题就好多了。

3.你碰到什么困难,打算如何解决?

终于会利用调试找出问题,但是有一些问题并不是利用调试能够找不出的,这个就很烦。看见同学莫名其妙改动一些代码,让代码变正确,而自己却不懂这些改动的意义,这就很无力。
不过我知道他们此刻的正确是通过无数遍尝试造就的,所以自己想要进步,多练必不可少。

小结

  感觉自己这一周进步比较大,很多代码错误都是通过自己调试找出的,而不是一味问同学。其次,写设计思路再也不痛苦了,因为流程图真的是一个好东西。通过流程图可以把很多思路清晰简单的表达出来,而过去写思路用语言表达太过于空洞。尽管一开始写流程图效率确实很低,但是进步的空间也是比较大的。最后,发现以前学的东西真的要会用,这次嵌套作业,我用了很多以前的分支知识,学以致用的感觉真的很爽。
posted @ 2017-11-11 19:16  l杨发热  阅读(575)  评论(10编辑  收藏  举报