C语言I博客作业07
1.作业头
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-2 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11585 |
这个作业的目标 | <熟练while和do-while语句,学会打伪代码> |
学号 | <20209130> |
一、本周教学内容&目标
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题。
二、本周作业
1.PTA实验作业
2.代码互评
3.学习总结
三、作业格式
1.PTA实验作业(20分/题)
1.1 7-3 循环-古角猜想 (20分)
日本数学家古角静夫研究自然数时,发现一个有趣现象:“如果是个偶数就除2,如果是奇数就乘以3加1”,经过有限个这样的处理步骤,最后一定能得到1. 任意输入一个自然数,给出得到结果1的运算过程。
1.1.1数据处理
数据表达:只用了n这一个变量,它是整型变量,它的值由自然输入得来。
数据处理:表达式:n=n/2; n=n*3+1;
流程结构:while循环结构,if-else分支结构。
Begin
input 正整数n
while n不为1 then
if n可以整除2 then
output n和n/2
n←n/2
else then
output n和n*3+1
n←n*3+1
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 | 2/2=1 | 2为偶数 |
4 | 4/2=2,2/2=1 | 4为偶数 |
7 | 73+1=22,22/2=11,113+1=34,34/2=17,173+1=52,52/2=26,26/2=13,133+1=40,40/2=20,20/2=10,10/2=5,5*3+1=16,16/2=8,8/2=4,4/2=2,2/2=1 | 7为奇数 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.部分正确:未考虑变量为奇数的情况,发现后在if语句之后加上else否则的情况。
2.运行超时:循环的判断条件搞错,原本是n!=0打成了n==0了,之后改正。
3.运行超时:重新定义了一个sum变量,把输出的n/2代替,导致输出答案不同,之后只用了n来输入输出。
4.编译错误:上个错误改正时太急,忘记改语句中的其中一个sum了,导致出现错误,之后换成n。
1.2 7-5 找出一批学生的最高分 (15分)
本题要求编写程序,找出最高分。
1.2.1 数据处理
数据表达:用了x和y两个变量,都是整型变量,y由自然输入得来,x则随y的输入变化而变化。
数据处理:表达式:x=y;
流程结构:用了while循环结构和if分支结构。
Begin
x←0
input 正整数y
while y大于等于0 then
if x小于y then
x←y/
input 正整数y
/
output 正整数x
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
50 60 95 66 -2 | 95 | 95为最高分 |
85 67 33 89 -1 | 89 | 89为最高分 |
99 58 67 24 -1 | 99 | 99为最高分 |
1.2.4 PTA提交列表及说明
提交列表说明:
1.运行超时:用x把y代替后没有再次输入y,之后在if语句之后加上输入语句输入y的值。
2.答案正确:答案虽然正确了,但我发现了一个不对的地方,一开始没有赋值给x,无从判断x与y的大小,而答案正确是因为系统把x默认为1了,之后我赋值给x为0。
2.代码互评(5分)
同学代码截图:
自己代码截图:
1.条件语句的设置习惯不同,同学追求一个结构直接把所有运算搞定,而我习惯算一步看一步,同学这样更加快速,代码更加简洁。
2.打代码习惯不同,我习惯在运算符之类的前后用空格分开,同学则习惯按顺序打,我的看起来更加清晰一些。
同学代码截图:
自己代码截图:
1.对变量的赋值习惯不同,同学习惯定义时直接把变量赋值,而我习惯重起一行来赋值,同学这样更加简洁,没有重复啰嗦。
2.对{}的使用习惯不同,我习惯在使用if语句时不论怎样都打上{},而同学习惯省略{},我的代码这样更清晰明了,不会混乱。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第八周 | 20h | 400 | 什么是主函数;代码的储存单元;会打“hello world” | 无 |
第九周 | 24h | 450 | 三个程序结构;各种数据类型;if-else语句的使用 | 无 |
第十周 | 28h | 500 | 三个运算的优先级;for循环语句的使用;会输出转换表 | for循环的嵌套有些不会 |
第十一周 | 30h | 600 | 进一步熟悉for循环语句;调用数学函数;自己定义函数 | 自己定义函数不太熟练 |
第十二周 | 28h | 580 | 更进一步学习了多种分支结构的使用;学会了逻辑控制符;学会了else-if语句; | 对多种分支结构的使用不太熟练,无法灵活使用 |
第十三周 | 34h | 650 | 明白了逻辑控制符和其他运算符之间的优先级的区别;学会了switch语句;预习了多分支结构的另一种用法; | 对多分支结构运用太过死板,想到一种就只会使用一种 |
第十四周 | 36h | 680 | 学习了while和do-while循环语句 | while和do-while循环不能灵活运用 |
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
1.这周不像前几周还好了,感觉这周不怎么好,有被搞废了的感觉,特别是pta的第二题,打游戏还没什么感觉,但扯到关于游戏的题目就真的整个人飞起。
2.这周打代码的量还是有的,但质量感觉不咋地,感觉打了这么多,却没有得到应该有的效果,打了这么多却昏头昏脑,看样子这一部分没有学习好,还得多自己去学学。
3.对代码的思考,这一周是真的几乎没有什么训练,因为脑袋里一直盘旋着作业该怎么写,这不知是训练了还是没训练,下周不能再这么昏头昏脑了。
4.这周不足非常多,需要多去改正,虽然不足多,但也让我看到了往哪个方向前进,下周要多去改善自己的薄弱点,继续冲!!!