C语言博客作业02--循环结构

0.展示PTA总分

单循环:

嵌套循环:

1.本章学习总结

1.1 学习内容总结

(1)循环语句
1、单循环结构
·while语句,其一般形式:

do-while语句,其一般形式:

while语句和do-while语句
不同点:
·while语句在循环前先判断条件,而do-while语句先执行循环体,后判断循环条件。即循环条件一开始不同时候,while循环不执行,do while循环执行一次。
相同点:
·while语句和do-while语句表达式都可是任意合法的表达式,循环体语句都只能是一条语句,都需要另加初始化部分。
应用案例:


对于代码1来说,其输出结果为0;而代码2输出结果为11.
for语句,其一般形式:

2、嵌套循环
主要有几种类型:


....诸如此类,一个大循环嵌套了一个小循环。
注:在嵌套循环中要十分注意,循环初始化语句是否放对了位置。分析清楚是放于外循环还是内循环。
应用案例:

(2)关于break语句和continue语句
①break语句只能用于switch语句和循环语句中。用于强制循环结束。
②continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。
两者不同点:
break语句结束循环,而continue只是跳过语句继续循环。break语句除了可以终止循环外,还用于switch语句,而continue语句只能用于循环。

1.2 本章学习体会

对于循环结构的题目,我真的觉得需要把题目给分析清楚,先在草稿纸上写下大致思路才能清清楚楚完完整整的写出代码。在刷pta题集时我是显得吃力的。对于循环结构的调试代码来说,真的真的需要很大的耐心,因为它会进行一次次的循环,有时候循环结束也还没有找到错误所在...也是培养细心耐心了...
·关于代码量
在单循环和嵌套循环的pta题集上,加起来一共是825.再加上平时有时候会打一些案例进行分析,算一算有943.emmmm,是不够多,但还是循序渐进吧。

2.PTA实验作业

2.1 简单计算器

2.1.1

数据处理
定义字符型变量op表示输入符号,num表示输入数字,sum用于表示数据之间加减乘除所得到的结果,引入一个flag用于当输入符号不为加减乘除或商为0。
伪代码

2.1.2 代码截图

2.1.3 造测试数据

输入数据 输出数据 说明
1+2= 3 正常数据
2/0= ERROR 除数为0
1?2= ERROR 非法运算符
1+2*10-10/2= 10 正常数据

2.1.4 PTA提交列表及说明

提交列表说明:

部分正确:刚开始我并没有把符号和数据分开,例如输入1+2=时,进入循环此时sum由0变为1,继续循环,而2并没有办法叠加到sum内
起初代码如下:

于是我进行了许多次尝试,尝试引入新的变量,均未成功。最后我咨询了07学姐。
答案正确:学姐告诉我可以将字符和数字分开输入,这样也就能进行计算。也不需要把字符转义成数字。如果字符转换成数字还存在一个问题,当要输入12时,读取的字符是一个一个进行读取,这样也是不成功的。如果遇到类似字符串的情况,就需要进行乘10,即:ch=ch*10+op-'0';

2.2 猜数字游戏

2.2.1

数据处理:
定义整型变量computernumber,mynumber来比较两个数的大小。count用于表示猜数次数,N为输入的最大猜数次数。
伪代码:

2.2.2 代码截图

2.2.3 造测试数据

输入数据 输出数据 说明
49 2
23 too small 数据太小
49 Luck you 正常数据
23 3
23 Bin go 正常数据
45 1
23 Too small 数据太小
13 Game over 结束循环

2.2.4 PTA提交列表及说明


答案错误:题目理解有误,我一直认为是电脑输出一个随机数,我使用了随机函数使用<stdlib.h>和<time.h>库文件让电脑随机生成数据。之后就一直答案错误,答案错误,答案错误...
答案正确:中间之所以会有答案正确呢是因为我询问了周边同学,将她的代码放于VS中进行分析,发现她的随机数是自己输入的,讲述完自己的理解并成功说服对方。之后放于pta中显示正确...后来我也问了学姐,确实是随机数由自己输入的...
部分正确:将count>=N改为count>N则正确。

2.3 梅森数

2.3.1

数据处理:
定义整型变量n,i,t,sum。i进行循环表示为2的n次方,sum为pow(2, i) - 1的计算结果,t进行循环,引入flag作为是否为素数的标志。
伪代码:

2.3.2 代码截图

2.3.3 造测试数据

输入数据 输出数据 说明
1 None 无梅森数
2 3 正常数据
6 3 7 31 多个数据,且格式正确

2.3.4 PTA提交列表及说明

部分正确:一开始我的代码在内循环的if语句直接输出sum的值,而当程序进入内循环时,只判断了t=2时,即当sum%2!=0即可输出sum,并没有办法真正的判断是否为素数。之后我就引入了flag,使得语句能够进行完整的循环,直到t由2变为sum。得到正确的flag的值得到梅森数。

3.代码互评

(1)龟兔赛跑:
同学的代码:

我的代码:

·同学的代码中主要引入了flag作为兔子当时是否处于休息时间,再依据flag是否等于1来对兔子的路程进行计算,将兔子和乌龟的路程分开计算。思路也十分清晰,不易混乱。
·而我的代码则将乌龟和兔子放在一起进行计算,依照这兔子是否休息时计算兔子和乌龟的路程。
·对比较来说,我的代码更容易混乱,只要思路稍一不正确就会出错。
(2)梅森数
同学的代码:

我的代码:

·同学的代码是进行了函数调用,直接进行函数调用,确实使得主函数变得简洁。也对题目提供了一种新思路。
·我的代码引入了flag,即用于是否为素数,在满足sum=pow(2,i)-1的情况下,又对于是否为素数做了一次循环,即为输出。

posted @ 2019-10-20 20:38  林浈  阅读(511)  评论(2编辑  收藏  举报