作业头:
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-2 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11585 |
这个作业的目标 | <熟悉使用while和do-while结构解决问题。> |
学号 | <20209135> |
1.PTA作业
排名图片:
1.1
小刘刚打上了巅峰赛2500 分, 就迫不及待地向他们室友发起了solo(单挑
他们会选择不一样的英雄,每个英雄都只有两个属性(血量,攻击力 ), 小刘有很多皮肤 会给他带来增益( 减损)效果(增加或者减少血量和 攻击力)
然后小刘和他的室友进行 solo (单挑), 小刘先手, 每次使对方血量减少自己攻击力 数值, 当一方血量小于等于 0 时被击败,小刘自认为自己能成为认证野王, 现在想让你帮助他判断 自己能否成为认证野王
输入格式:
一共三行
第一行两个整数 h, a,代表小刘英雄的血量, 攻击力
第二行两个整数 H,A,代表室友英雄的血量, 攻击力
第三行两个整数 ph, pa, 代表皮肤增加的血量,攻击力
输出格式:
如果小刘能击败无限多的室友成为认证的野王, 则输出“The king of the wild certification!”;
否则如果小刘不可以击败任何一个室友, 则输出 “I'm too dishes!”;
否则输出一个整数, 表示小刘击败的室友数量,
输入样例:
在这里给出相应的输入。例如:
2 1
2 1
3 0
输出样例:
在这里给出相应的输出。例如:
4
为了游戏胜利,小刘一定会穿上皮肤, 而他的室友觉得小刘太菜, 不会穿上皮肤
数据保证 h, a, H, A 不会出现负数, 皮肤的属性可以为负;
1.1.1数据处理
数据表达:定义整形变量h,a,H,A,ph,pa,count,n;h和a表示小刘的生命和攻击力,H,A表示室友的生命和攻击力,ph,pa分别表示皮肤的增益。count表示胜场数。
数据处理:先给小刘的生命和攻击赋上皮肤带来的增益,对小刘攻击力和室友的生命进行比较,当小刘的攻击力大于等于室友的生命值,因为小刘一直先手,即小刘可以一直赢。否则用
do while来对其处理。直到小刘生命值小于等于0;
伪代码:
h←h+ph
a←a+pa
n←H
if a≥H
then printf "The king of the wild certification!"
else while h>0
do H←H-a
if H≤0
then count++
H←n
else
h←h-A
end
if count=0
then printf "I'm too dishes!"
else "printf "%d",count"
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 1/2 3/3 1 | The king of the wild certification! | 小刘是野王,他的攻击力等于室友生命值 |
8 2/5 2/3 2 | 5 | 小刘能击败五个室友 |
5 2/5 3/1 0 | I'm too dishes! | 他一个室友也不能打败 |
1.1.4 PTA提交列表及说明
运行超时:把while中的计算中跳出循环的计数,没有表达出来。
多种错误:取余式子写错了。忘记无限击败室友的情况了。
部分正确:只写出了什么情况下发出 The king of the wild certification! 输出击败人数没有表达出来。
1.2
本题要求编写程序,找出最高分。
输入格式:
输入在一行中给出一系列非负整数,其间以空格分隔。当读到负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出最高分。
输入样例:
在这里给出一组输入。例如:
67 88 73 54 0 95 60 -1
输出样例:
在这里给出相应的输出。例如:
95
数据处理
数据表达:定义x,y两个整形变量;x为输入的数值,y用来表示输入数值中较大的那个数。
数据处理:用do while循环用if比较输入值x与y,当x大于y时数y=x。小于x时继续输入数值,继续循环,直到输入数为负值。输出最大分数。
do scanf "%d",&x
if x>y
then y←x
while x≥0
end
printf"%",y
实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
67 68 69 70 -1 | 70 | 最大的数是70 |
66 74 84 78 56 -2 | 84 | 最大的数是84 |
51 45 63 82 98 -2 | 98 | 最大的数是98 |
1.2.4 PTA提交列表及说明
段错误:忘记在输入语句scanf输入数值时忘记加定位符&
部分正确:执行while条件误用小于号代替大于号。提交部分正确。
部分正确:在执行while的循环语句时条件中忘记加上等于零的情况.
2.代码互评
2.1
同学的代码截图:
自己的代码截图:
1. | 他定义了四个整形变量count,number,sum,x;而我定义了i,n两个整形变量和num,sum两个双精度浮点型变量 |
---|---|
2. | 他用到了do while的循环语句;我用了for的循环语句 |
3. | 他只用了主函数;而我还调用了数学函数求根号下的值。 |
2.2
同学的代码截图:
自己的代码截图:
1. | 他的代码定义了一个整形变量和三个字符型变量。我只定义了一个整形变量n。 |
---|---|
2. | 他用到了while循环语句,我用的是dowhile |
3. | 他用了if else if;我只用到了if else。 |
3.学习总结
3.1学习进度条
周/日期 | 这周所花时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第八周10.19~1025 | 29小时 | 690 | printf显示,hello world类型的代码 | 无 |
第九周10.2~11.1 | 32小时 | 780 | if,else的使用,计算华氏温度的转化 | 运算规则 |
第十周11.2~11.8 | 33小时 | 780 | for的循环结构的使用,数学函数 | 数学计算 |
第十一周11.9~11.15 | 35小时 | 800 | 定义函数,调用函数 | 无 |
第十二周11.16~11。22 | 37 | 860 | if /else的进一步学习 | 无 |
第十三周11.23~11.28 | 37 | 840 | 分支结构switch的学习 | switch的运用还是不太熟,需要多加练习 |
第十四周11.30~12.5 | 36 | 850 | while和do-while循环语句的运用 | while的循环运用不熟练,时常出现运行超时的问题 |
3.2累计代码行和博客字数
3.3学习内容总结和感悟:
3.3.1学习内容总结:
3.3.2 学习体会
1.每周都有每周的收获,这周当然也不例外,我们这周学习了while和do-while循环语句,学了什么时候该用for,什么时候该用while和什么时候该用do-while;语言中每个语句都有不同的用处,正如每个人都有每个人的价值一样。
2.学习总是无止境的,学海无涯嘛! 我喜欢用轻松的方式对待学习,让学习不那么枯燥无味,让自己开心,也能学到知识。
3.每一次作业我都会花上很长时间,因为 不会,不熟悉,会有许多不懂得的地方,犯错的地方也会很多。花的时间就会很多,也会感到烦躁的情绪,但是越烦就越没思路。恶性循环,感觉自己人都傻了。
4.在写作业的过程里,讨论是我解决问题的最好方法,我能解决问题的同时还可以加深印象,让自己记住自己讨论过,不能再犯错。