C语言博客作业--嵌套循环
一、PTA实验作业
题目1:换硬币
1. 本题PTA提交列表
2. 设计思路
- 第一步:定义5个整形变量,money,count,fen5,fen2,fen1,money为待换金额,count表示换法数量,fen5表示5分的数量,fen2表示2分的数量,fen1表示1分的数量。
- 第二步:初始化count为0。
- 第三步:输入x。
- 第四步:fen5=money/5,当fen5大于0时,循环第五步到第十一步。
- 第五步:fen2=money/2,当fen2大于0时,循环第六步到第十步。
- 第六步:fen1=money,当fen1大于0时,循环第七步到第九步。
- 第七步:如果 fen5 * 5 + fen2 * 2 + fen1 == money,输出fen5,fen2,fen1,fen5+fe2+fen1。
- 第八步:count++。
- 第九步:fen1--。
- 第十步:fen2--。
- 第十一步:fen5--。
- 第十二步:输出count。
3.本题调试过程碰到问题及解决办法
- (1)
当我采用这样的写法时,输入8输出结果fen5,fen2,fen1都为0,而调试却都为1,我意识到我的函数定义类型错了。并且我反复读题意识到我循环次数过多,于是我反复都提也发现moeny的单位是分不是元。
- (2)
这种写法答案是对的,我通过调试每一步也是对的,但提交显示答案错误,我意识到可能是格式出错,题目的语句有点模棱两可,于是我将fen5,和fen2从大到小输出,结果就对了。
题目2:梅森数
1.本题提交列表
2.设计思路
- 第一步:定义四个整形变量,n,i,k,number,number。
- 第二步:输入n。
- 第三步:初始化i为2,当i小于等于n时,循环第四步到第十步。
- 第四步:number=pow(2,i)-1。
- 第五步: 初始化k=2,当k小于等于number时,循环第六步到第九步。
- 第六步:如果number余k不等于0,即k不能被整除时,继续循环。
- 第七步:否则如果k等于number时输出number。
- 第八步:否则退出循环。
- 第九步:k++。
- 第十步:i++。
- 第十一步:如果n等于1,输出None。
3.本题调试过程碰到问题及解决办法
- (1)
一开始我这么做,结果运行时间过长,我意识到是循环次数过多于是我便简化循环,只写了两个循环就是这样的:
- (2)
我输入n为5,调试后发现number的值超过了可以理应的最大值31,我意识到循环条件错误了,就将循环条件改成了i小于等于n。
题目3:歌唱比赛评分系统
1.本题提交列表
2.设计思路
- 第一步:定义8个整形变量i,j,n,repeat,score,sum,max,min,repeat存放做下列计算次数,max存放最大值,min存放最小值。
- 第二步:定义一个双精度浮点型变量average存放平均值
- 第三步:初始化sum等于0。
- 第四步:输入repeat。
- 第五步:初始化i为1,当i小于等于repaet时,循环第六步到第十九步。
- 第六步:输入n和score。
- 第七步:max=score,sum=sum+score。
- 第八步:输入一个socre1,sum=sum+score1,判断score1是否大于max,如果大于max,那么max等于score1,min=max。
- 第九步:否则min=socre1。
- 第十步:初始化j=1,当j小于等于n-2时,循环第十一步到第十五步。
- 第十一步:输入score。
- 第十二步:sum=sum+score。
- 第十三步:如果score小于min,那么min=score。
- 第十四步:否则如果score大于max,那么max=score。
- 第十五步:j++。
- 第十六步:average等于1.0*(sum-max-min)/(n-2)。
- 第十七步:输出average,并保留两位小数。
- 第十八步:sum=0.
- 第十九步:i++。
3.本题调试过程碰到问题及解决办法
- (1)我发现第二次执行repeat中的语句时,不能控制输入几个数字,解决方法:把n的输入也放到repeat中去。
- (2)第二次进入repeat时,sum数值明显过大,算出的average也太大,说明我把上一次循环的sum也算到这次的repea循环中去了,解决方法:在repeat循环体的结尾写一个sum=0。
二、同学代码结对互评
1.严伟杰
2.
3.
我的代码与他的不同在于他输入一个score表示了max和min两个值,而我输入了两个score来表示max和min,他的代码优势在于简洁,用最简短的语句实现了max和min的赋值,而我的代码可能逻辑性更强一点,我更喜欢他的代码风格简单易懂,而我的代码太过冗长。
三、截图本周题目集的PTA最后排名
本周学习总结
1.你学会了什么
我学会了循环嵌套,还学会了continue和break的用法。continue是进入下一次循环,跳过continue之后的循环体,而break则是跳出循环。初学了函数,明白了函数声明,函数定义,形参,实参。函数声明是一个句子要加;而函数定义不用,形参必须是变量两,而实参则可以是常量,变量或者表达式,并且目前学的return语句只能返回一个值。也明白了局部变量和全局变量,局部变量用于当前函数中,而全局变量用于从代码开始到结束,允许全局变量和局部变量同名,同名时,局部变量为先。还学会了静态变量,静态变量就是对于他赋值的话,只有赋值一次,之后用到时,都是用到上次的值。
2.本周的内容,你还不会什么?
对于循环嵌套的内容还掌握的不够熟练,比如pta循环嵌套的第三题编程打印空心字符菱形,对于该题初看一点思路都没有,如何控制空格和字符按题目要求的输出,后来和舍友一起讨论才有一点思路,然后百度了一下,然后自己才能做的出来,该题让我明白自己对循环嵌套还掌握的不够。初次预习函数,对函数的格式理解也还不够深刻。