C语言博客作业02--循环结构
0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.循环
在上一个博客作业我介绍了三个循环(while,do-while,for)的结构和之间的异同,这里我就不多赘述,来介绍介绍一些示例。
1.while循环
while循环我就拿一题简单的题:单循环作业中的7-3 正负数的个数:[https://pintia.cn/problem-sets/1176411639231516672/problems/1176412128429969410]
题目如下:
只有当循环条件满足时才能进入循环,我给循环判断的条件是n!=0而n我给它的作用是作为输入的数来判断正负性,由于while循环是先判断,n还没有输入,所以我给n一个初始定义才能让n进入循环。
2.do-while循环
do-while循环最大的特点是最少执行一次,所以对于一些题目最少要进行一次循环,可以优先考虑用do-while循环。
do-while最大要注意的一点是while条件后要加封号。
3.for循环
for循环后有三个条件体,条件1和条件3可以选择性省略,但条件2一定要正确,否则很可能会造成死循环。
4.break语句
break语句常见与switch中,但在循环中也有运用,break在循环中的作用是跳出循环,这在一些判断的题目中可以广泛运用。
continue语句
continue语句也运用于循环中,其作用是不进行continue下面的语句直接进入下一次循环,这在一个范围内找出满足条件的数很有用。
1.2本章学习体会
- 本章的学习中我感到了一些无力。例如在c04的7-6中,按照常理说我的代码没问题,但提交上去就显示我代码运行超时,但在我当前已有的知识储备中并不能解决我遇到的问题。
- 这两周我的代码量达到了1000(pta中提交后的,没有计算上修改的)。
2.PTA提交作业
2.1 c03单循环结构7-11 简单计算机
2.1.1伪代码
int digit;
用digit来装要计算的数字
char op;
用op来装计算符
int sum=0;
用sum来装计算结果,先定义sum=0
int flag=1;
用flag来判断除数为0的情况
2.1.2代码截图
2.1.3造测试数据
|输入数据|输出数据|说明|
|1+210-10/2=|10|正常数据|
|1+210-10/0=|ERROR|除数为0|
|1+2*10-10/2#|ERROR|非法字符|
|1=|1|最小表达式|
2.1.4PTA提交列表及说明
Q123:刚开始我输入放在switch外,导致计算总有出错,几次修改都没有达到效果。
Q4:第一次尝试将输入的语句放在switch内,导致错误更多。
正确:经过调试后提交才得以正确。
2.2 c03氮循环结构7-12 任务06-02-01 于龙遇见日期,又哭了!
2.2.1伪代码
int year;
用来存放输入的第一个数字,并在排序后代表年
int month;
用来存放输入的第二个数字,并在排序后代表月
int day;
用来存放输入的第三个数字,并在排序后代表日
int num;
用来将年月日排序
char op1;
用来存放输入的第一个字符
char op2;
用来存放输入的第二个字符
2.2.2代码截图(由于知识的掌握程度不够我的代码有点长)
2.2.3造测试数据
|输入数据|输出数据|说明|
|2/3-123|0123-02-03|合法日期|
|13+12+45|0045-12-13|合法日期|
|29,2,2019|Invalid Date!|不合法日期|
2.2.4PTA提交列表及说明
Q1:我题目没仔细阅读只是直接按大小排序再判断合理性,忽略了题目要求的同小于12先月后日。
Q2:改了第一题的问题但还是没把题目理全,忽略了题目要求的如果排序后第二大的数字大于12小于31最小的小于12将小于12的当作月,大于12的当作日。
2.3c04嵌套循环7-3 打印九九口诀表
2.3.1伪代码
int n;
存储输入的要求的打印的行数
int i;
循环时输出i行
int j;
循环时输出j列
2.3.2代码截图
2.3.3造测试数据
|输入数据|输出数据|说明|
|4|11=1
12=2 22=4
13=3 23=6 33=9
14=4 24=8 34=12 44=16 |正常数据|
|1|11=1 |最小n|
|9|11=1
12=2 22=4
13=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25
16=6 26=12 36=18 46=24 56=30 66=36
17=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=36 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 99=81 |最大n|
2.3.4PTA提交列表及说明
Q1234:占四个我刚开始用了%4d结果输出的答案为11= 1,向右对齐了,然后脑抽改成了%04d结果变成了11=0001,1前面多了三个0,最后通过百度搜所猜知道在%后加个-才是向左对齐。
Q5:刚开始我没有加上判断,直接回车的输出最后只有的一个最小n正确。
Q6:明白了上一个的错误开始加上判断,由于第一次修改,并不完善,结果还是出现了格式错误。
3代码互评
我的代码:看2.2.2,由于于龙自己哭不够,我也帮他哭了半天,终于答对了,所以我选择了这题,截图过多,就不再次上传。
同学代码(来自朱振豪):
- 1.由于mooc我只看到了循环结构,并没有开始接触数组,所以我的代码用了很基础,并且按照一个一个测试点修改。
- 2.反观朱兄的代码,明显上代码的行数少了很多,运用了后面的知识,表现出他学习积极性之高,理解能力之强。
- 3.一看我的代码,很多,很杂,并没有什么注释让人理解,可阅读性上差了很多。
- 4.反观朱兄的代码,虽然没有注释,但也条理清晰,结构分明,可阅读性上高了许多,以五十步笑百步的态度来评价:希望他能加一些注释。