C语言I博客作业07

1.作业头

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11585
这个作业的目标 对PTA的作业进行一个归纳总结,了解自己的代码和同学的代码差异,并进行比较学习,对这一周的学习进行一个总结。
学号 20209123

一、本周教学内容&目标

第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题。

二、本周作业

1.PTA实验作业

2.代码互评

3.学习总结

三、作业格式

1.PTA实验作业(20分/题)

请再此处列出自己的排名图片

从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:

1.1 题目名1:猜数字游戏

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

1.1.1数据处理

介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:用了sjs,yhs,cs,n变量,这些变量的值是:sjs是游戏机产生的随机数,yhs是用户输入的数字cs是用户的猜数的次数,n是猜测的最大次数,类型是整型(int型)。
数据处理:数据用到的表达式:cs = 1,cs <= n+1,和流程结构:嵌入式语句,while循环结构,if-else选择结构。
**伪代码**
Begin(算法开始)
输入 sjs,n
while cs <= n+1 {
if yhs < 0 则 Game Over 返回 
否则 
if yhs > sjs 则  Too big  猜测次数加一 
否则
if  yhs < sjs 则   Too small  猜测次数加一
否则
if  sjs == yhs&&cs == 1 则  Bingo 返回
否则 
if   sjs == yhs&&cs <= 3  则  Lucky You! 返回
否则
if  sjs == yhs&&cs > 3&&cs <= n 则 Good Guess! 返回
否则
if  cs > n 则 Game Over 返回 
}
End (算法结束)

1.1.2实验代码截图

贴图展示代码,不要复制。请给出名字标识。


1.1.3 造测试数据

输出你的程序面向各种测试数据结果,除了题目给出的测试数据,可以自己再造其他临界数据,越多越好,并加上必要说明
输入数据 输出数据 说明
58 4 -1 Game Over 输入一个负数,直接结束程序
58 4 58 Bingo! 猜一次就答对了
58 4 40 58 Too small Lucky You! 三次以内猜到这个数
58 4 70 50 56 58 Too big Too small Too small Good Guess! 大于三次猜到这个数
58 3 70 50 56 5 Game Over 超过最大次数没有猜中

1.1.4 PTA提交列表及说明

根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

提交列表说明:

1.编译错误:这个代码最开始不知道怎么怎么去写,就按照自己的思路跟着自己的意思写的,发现不行,然后,我就去找了一点而资料看了看。
2.编译错误:在if-else语句里面,我并没返回,它是scanf无价值,然后,我将代码转入到Dev C++里面,进行调试,然后进行找出错误。
3.部分正确:在第33行代码里,我的 else if语句,我只是仅仅写了else,超过n次猜到无效错误。
4.部分正确:改正上一个错误后,发现还是出现了同样是错误,仔细检查,发现我多打了一个大括号。
5.部分正确:继续提交答案,还是同样的错误,然后发现大括号的位置不是在32行而是在37行。
6.部分正确:运行测试后,然后,我发现,还是错误了,我真的实在是找不出还有什么错误了,于是,我去问了同学,然后,同学告诉我,在第7行,我写的是cs <= n,但是,要写成cs <= n+1,不然的话,这个数就少猜测了一次。

1.2 题目名2:野王认证

题目内容描述:小刘刚打上了巅峰赛2500 分, 就迫不及待地向他们室友发起了solo(单挑他们会选择不一样的英雄,每个英雄都只有两个属性(血量,攻击力 ), 小刘有很多皮肤 会给他带来增益( 减损)效果(增加或者减少血量和 攻击力)然后小刘和他的室友进行 solo (单挑), 小刘先手, 每次使对方血量减少自己攻击力 数值, 当一方血量小于等于 0 时被击败,小刘自认为自己能成为认证野王, 现在想让你帮助他判断 自己能否成为认证野王。

1.2.1数据处理

介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:用了h, a, hh, aa, hhh, aaa,count, x变量,这些变量的值s是: h, a,代表小刘英雄的血量, 攻击力hh,aa,代表室友英雄的血量, 攻击力,hhh,aaa代表皮肤增加的血量,攻击力,count 小刘击败室友的次数,类型:整型(int型)。
数据处理:数据用到的表达式:h = h + hhh;a = a + aaa;x = hh;x = x - a;h = h - aa;和流程结构:用了while循环结构,if选择结构,if-else选择结构。
**伪代码**
Begin(算法开始)
输入 h, a, hh, aa, hhh, aaa
h ←h + hhh;
a ←a + aaa;
x ←hh;
while 1{
if a >= hh 则 The king of the wild certification! 返回 
否则 
x = x - a
if x <= 0 则  x = hh  击败室友次数加一  继续 
否则
h = h - aa
if h <= 0 则   返回 
}
否则
if  sh <= 0 && count == 0 则  I'm too dishes! 
否则 
 printf count 返回 
End (算法结束)

1.2.2实验代码截图

贴图展示代码,不要复制。请给出名字标识。


1.2.3 造测试数据

输出你的程序面向各种测试数据结果,除了题目给出的测试数据,可以自己再造其他临界数据,越多越好,并加上必要说明
输入数据 输出数据 说明
3 1 2 1 3 0 The king of the wild certification! 小刘能够击败无限多的室友
2 1 2 1 3 0 4 小刘既可以击败室友,也可以被室友击败
2 1 2 1 1 0 2 小刘既可以击败室友,也可以被室友击败
1 1 2 1 0 -1 I'm too dishes! 小刘不可以击败任何一个室友

1.2.4 PTA提交列表及说明

根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

提交列表说明:

1.编译错误:最开始是,看见这个题目不知道应该从哪里开始写,从哪里开始下手,使用,就试着写了写,发现我写出了很多的错误。
2.编译错误:对我出现的很多的错误根据编译输出器的提示进行了一些是修改,顺便,我去找了一些资料来写这道题目。
3.部分正确:发现测试点我就对了一个,然后,我将代码复制到了dev c++里面进行了一些编写和调试。
4.编译错误:因为本题的变量符号太多,有的变量符号有些混淆了。且没有令x=hh;
5.编译错误:我赋值错误,将x=hh,写成了hh=x;导致编译错误。
6.部分正确:在一些语句里面没有返回。
7.编译错误:有一个英文的分号,我在修改代码的时候写成的中文的符号
8.部分正确:在 x = hh;count++;没有继续语句。
9.编译错误:将continue这个单词给写错了。

2.代码互评(5分)

找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

同学代码截图

自己代码截图


1.同学的代码是令sum=0,而我的代码是令x=0;
2.同学代码用的是for循环,而我的代码用的是while循环。
3.同学代码在判断的时候没有用逻辑非,而我的代码在while循环里运用了逻辑非。
4.同学代码sum=x+y;然后直接返回,而我的代码是x++;一直到跳出循环后才返回。

同学代码截图

自己代码截图


1.同学的代码比我的代码要简洁的很多,我的代码一眼看上去就是有点凌乱的感觉。
2.同学的代码只定义了一个变量,而我的代码定义了两个变量。
3.同学的赋值语句写在打印语句的后面,而我的赋值语句写在打印语句的前面;
4.跳出while循环后,同学代码直接返回return=0了,而我的代码还有一个srzrs=jg的表达式。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
10/18-10/24 16小时 110行 打印holle world和其变形
10/25-10/31 10小时 320行 选择结构,求华摄温度 一些表达式的运用
11/1-11/7 15小时 450行 循环结构 流程结构的顺序
11/8-11/14 17小时 465行 函数的定义和调用,生成乘方表与阶乘表 怎么定义函数,完整代码的格式与顺序问题
11/15-11/21 18小时 472行 if-else型结构,多分支结构,字符型数据类型和逻辑运算符 字符型数据类型和运算符的优先级
11/22-11/18 19小时 473行 switch语句,多分支结构的使用 switch语句case后面需要写的内容
11/29-12/5 18小时 478行 熟悉使用while和do-while结构解决问题 while语句里面的循环体还有一点不太会写

3.2 累积代码行和博客字数(5分)


3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结


3.3.2 学习体会

请回顾自己的本周的学习过程,描述学习感受,也可以提出你不理解的地方、对教师教学建议等。如果你有新的想法或者新的方法,请及时记录下来。

1.我学习到了更多的新内容与知识,感到十分的开心。例如:我更加的熟悉使用了while和do-while结构,同时,我也对C语言有了更加深刻的了解
2.在学习的过程中,我依旧会产生很多的问题,而且有些的问题我还是不太会。尤其是这次PTA的第二题,他让我写了很久。可见,我还是有很多的问题的。
3.细节决定成败,在打代码的时候一定要注意细节,不然会因为一个小细节问题,而导致代码编译错误。
4.对于写代码,我们还是要多加的练习,正所谓熟能生巧。
5.不懂的题目一定要去找资料,去问同学,去把不懂的题目给搞懂。不然,不会的题目堆积,就更加的不会。

原文地址:https://www.cnblogs.com/jn2765187762/p/14087633.html