这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-1/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11584 |
这个作业的目标 | 熟悉使用while和do-while结构解决问题。深化编程过程 |
学号 | 20209085 |
1.PTA实验作业
1.1题目1(7-3 循环-古角猜想)
日本数学家古角静夫研究自然数时,发现一个有趣现象:“如果是个偶数就除2,如果是奇数就乘以3加1”,经过有限个这样的处理步骤,最后一定能得到1. 任意输入一个自然数,给出得到结果1的运算过程。
1.1.1数据处理
数据表达:定义了整型变量n。
数据处理:(伪代码)
begin 输入n
n=fact(n)
while(n!=1)
begin
n=fact(n)
end
begin
if n%2==0
begin
n=n/2
end
else
begin
n=n*3+1
end
end
1.1.2实验代码截图
1.1.3造测试数据
输入 | 输出 | 说明 |
---|---|---|
5 | 5*3+1=16,16/2=8,8/2=4,4/2=2,2/2=1 | 样例 |
6 | 6/2=3,33+1=10,10/2=5,53+1=16,16/2=8,8/2=4,4/2=2,2/2=1 | 6、10、16、8、4、2都是偶数,3、5都是奇数 |
13 | 133+1=40,40/2=20,20/2=10,10/2=5,53+1=16,16/2=8,8/2=4,4/2=2,2/2=1 | 40、20、10、16、8、4、2都是偶数,13、5都是奇数 |
1.1.4PTA提交列表及说明
说明:
1.编译错误:前期思维混乱,运用while语句判断无法运行。
解决方法:全部推到使用自定义函数编程。
2.段错误:逻辑错误表达时出错导致堆栈溢出。
解决方法:优化结构,改正表达式。
3.答案错误:自定义函数最后的返回值写错。
解决方法:将return 0改为return n。
4.部分错误:看错题目意思,忽略了偶数除以二可能得到奇数的情况。
解决办法:重新编写判断语句,优化逻辑结构。
1.2题目2(7-7 单重循环—数鸡蛋)
妈妈给小明家新送来 y个鸡蛋。 已知小明家原有鸡蛋的个数x是满足“三个三个的数剩1个,5个5个数剩z个,7个7个数剩3个”的最小数, 请问小明家共有多少个鸡蛋? (设输入为正数,不考虑非法输入)
1.2.1数据处理
数据表达:定义了整型变量a,b,c,n。
数据处理:(伪代码)
begin 输入x,y,z
x=0
while (!(x%3==1&&x%5==z&&x%7==3))
begin
x++
end
end
1.2.2实验代码截图
1.2.3造测试数据
输入 | 输出 | 说明 |
---|---|---|
58 4 70 50 56 58 60 -2 | Too big Too small Too small Good Guess! | 样例 |
58 4 70 50 56 57 65 | Too big Too small Too small Too small Too big Game Over | 有两个数大于随机数58,三个数小于随机数58,并且在N(4)次之前没有猜到 |
32 3 12 30 45 22 -3 | Too small Too small Too big Too small Game Over | 有一个数大于随机数32,三个数小于随机数32,并且在N(3)次之前没有猜到 |
1.2.4PTA提交列表及说明
说明:
1.编译错误:一开始想使用switch语句编写,后查询得知switch语句表达式中只能接受整型和字符型的确定值,不能接受逻辑值。所以表达式中无法写入逻辑表达式,此题故不能用stitch表达式。
解决办法:推倒重来,将switch语句改为if-else语句。
2.编译错误:没写break语句跳出分支语句。
解决办法:在每个分支语句后加上break。
3.部分正确:缺少超过n次猜对无效的情况。
解决办法:加入一个分支语句判断b>=n.
2.代码互评
2.1同学代码
2.2自己代码
评价:
1.两者定义的整型变量不同。前者为a,b,后者只有n。
2.两者编程思路不同。前者为循环结构中套入多分支,后者运用的是自定义函数。前者结构更明了,但后者更方便。
2.1同学代码
2.2自己代码
评价:
1.两者定义不同。前者定义了整型n,双精度浮点型price,b,m,后者都定义为双精度浮点型a,b,c。
2.两者编程细节不同。
3.前者定义时将定义的变量和赋值表达式放在一行写出的习惯不是太好。
3.学习总结
3.1学习进度条
<日期> | <这周所花时间> | <代码行> | <所学的知识点简介> | <目前存在的问题> |
---|---|---|---|---|
10/19-10/25 | 20 | 200 | 初步了解了C语言并学习了markdown语法 | 已解决 |
10/26-11/01 | 24 | 300 | 掌握赋值和算数运算 | 已解决 |
11/2-11/08 | 27 | 400 | 学习循环语句,掌握scanf和pow函数 | 已解决 |
11/9-11/15 | 22 | 470 | 熟练函数定义和调用函数,掌握生成阶乘和乘法表 | 已解决 |
11/16-11/22 | 25 | 530 | 熟练多分支结构,字符型数据类型以及逻辑运算符 | 已解决 |
11/23-11/29 | 23 | 490 | 熟练多分支结构,switch语句 | 已解决 |
11/30-12/06 | 21 | 520 | 熟练while与do-while语句 | 对新学到的知识无法迅速掌握,做题目时无法灵活运用多种方法 |
3.2累计代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
之前的学习总结中提到过多实践与多复习的重要性,确实如此。本周的学习中,我遇到的最大的问题还是知识掌握进度慢,对以前的学习内容有所遗忘的情况,一个自定义函数的编写还需要重新翻阅课本。同时我也意识到还有一个东西对我们的编程学习同样重要,那就是对比总结。对比身边同学、老师、亦或是网络上解决问题的解答,也可以是分享出来的学习心得与经验。不断优化自己的学习方法和学习思路,取长补短,这样才能获得最高效的提升,从而得到编程和我们学习突破道路上的最优解。