C语言I博客作业07

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-3
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11586
这个作业的目标 进一步深入了解循环语句以及学习while语句和dowhile语句的使用
学号 20209167

1.PTA作业

1.1 题目名1

7-4 猜数字游戏

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
输入格式:

输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。
输出格式:

在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。
输入样例:

58 4
70
50
56
58
60
-2

输出样例:

Too big
Too small
Too small
Good Guess!

1.1.1 数据处理

数据表达:定义了dn为随机产生的所要猜的数;N为猜测的最大次数;c是每次猜的数;cs表示猜数的次数;以上都属于整型变量
数据处理:scanf("%d %d",&dn,&N);(dn和N都由scanf输入);while(cs<=N)(通过while语句循环计算cs的值,以及判断对比c和dn的大小),if(c<0),if(c<dn),if(c>dn),if(c==dn),if(cs==1),else if(cs<=3),else if(cs<=N)   (通过if-else语句判断cs和输入的c所猜的数来决定输出的语句以及何时终止程序。)

1.1.2 实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
60 6
54 Too small 小了
45 Too small 小了
70 Too big 大了
65 Too big 大了
60 Good Guess! 猜的好啊第五次中了

1.1.4 PTA提交列表及说明

  • 刚开始编辑错误是因为while括号后打了分号,混淆了两种while语句的用法,后来一次错误是因为cs++后没打分号,
  • 后来又发现总有一个测试点过不了,是超过N此输入后无效,然后所有代码删掉重写了一遍,第一遍判断语句只写了if。
  • 然后重来一遍用if(c>0)再嵌套if-else语句判断c与dn的大小,最后的else表示最后一个测试点的情况。

1.2 题目名2

7-3 循环-古角猜想

日本数学家古角静夫研究自然数时,发现一个有趣现象:“如果是个偶数就除2,如果是奇数就乘以3加1”,经过有限个这样的处理步骤,最后一定能得到1. 任意输入一个自然数,给出得到结果1的运算过程。
输入格式:

输入一个自然数n
输出格式:

输出每次运算步骤,直到结果为1.
输入样例1:

5

输出样例1:

5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1

输入样例2:

6

输出样例1:

6/2=3
33+1=10
10/2=5
5
3+1=16
16/2=8
8/2=4
4/2=2
2/2=1

1.2.1 数据处理

数据表达:定义为整型变量。
数据处理:scanf("%d",&n);(输入一个整数);while(n!=1)(n为1时跳出循环;if(n%2==0){printf("%d/2=%d
",n,n/2);}n为偶数时的相关计算,else{ 
        printf("%d*3+1=%d
",n,n*3+1);n=n*3+1;}(n为奇数时相关计算)

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
45 奇数
45*3+1=136
136/2=68
68/2=34
34/2=17
17*3+1=52
52/2=26
26/2=13
13*3+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

1.2.4 PTA提交列表及说明

  • 第一次出现运行超时不知道是什么情况,但是我知道应该是错了。
  • 后来的编译错误又是因为分号漏打,大括号打成了中文的大括号还没注意,卡了很久。
  • 答案错误是因为定义了一个整型变量,执行的相关计算放在了外面,后来删除这个变量,把计算放入循环中,并按要求输入相关的计算语句,问题解决

代码互评

同学代码截图

自己代码截图

同学代码截图

自己代码截图

  • 同学的代码更完善,能更好地体现题目的要求和思想。
  • 同学的代码排版更好,我应该多学习,使界面更简洁,易懂。
  • 从代码看来上同学的思路更清晰。

3.学习总结

3.1学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
6/11.30-6/12.6 8.5小时 410 while语句和do while语句的使用 while语句后括号的条件限制

3.2 累积代码行和博客字数


3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会
(1):在PTA做题过程中迟早会遇到自己解决不了,还有理解不了的部分,这时候向同学请教和交流是很重要的。
(2):做题时从不同的角度思考,尝试用多种方式表达自己的做题思路。
(3):巩固基础,多打代码练习学过的内容,翻翻书,该熟练多看多学。
(4):比较同学之间代码的不同,改进自己的代码。

原文地址:https://www.cnblogs.com/qhg20209167/p/14083115.html