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.不懂的题目一定要去找资料,去问同学,去把不懂的题目给搞懂。不然,不会的题目堆积,就更加的不会。