C语言博客作业07

作业头:

这个作业属于哪个课程 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.在写作业的过程里,讨论是我解决问题的最好方法,我能解决问题的同时还可以加深印象,让自己记住自己讨论过,不能再犯错。

posted @ 2020-12-05 00:26  诺&言  阅读(202)  评论(11编辑  收藏  举报