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的情况下,又对于是否为素数做了一次循环,即为输出。