C语言I博客作业07❤
1.作业头
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-2 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11585 |
这个作业的目标 | <与上周作业要求基本一致,让我们能够学会自主学习的技能,自主找到自己的错误,以他人为老师,学习其优点避免其缺点> |
学号 | <20209134> |
一、本周教学内容&目标
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题。
二、本周作业头
这个作业属于哪个课程 | <C语言程序设计II> |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11585 |
我在这个课程的目标是 | <每周上课之前提前预习下堂课内容,在下学期上课之前,学完下学期内容,并提前学习Python与Java> |
这个作业在那个具体方面帮助我实现目标 | <这个作业的内容要求可以很好的督促我完成我的目标,比如PTA的练习截图等> |
参考文献 | https://www.bilibili.com/video/BV1x7411M74h |
三、本周作业
- 1.PTA实验作业
- 2.代码互评
- 3.学习总结
四、作业格式
1.PTA实验作业:
1.1 题目名1: 7-2 野王认证
内容描述:小刘刚打上了巅峰赛2500 分, 就迫不及待地向他们室友发起了solo(单挑 他们会选择不一样的英雄,每个英雄都只有两个属性(血量,攻击力 ), 小刘有很多皮肤 会给他带来增益( 减损)效果(增加或者减少血量和 攻击力) 然后小刘和他的室友进行 solo (单挑), 小刘先手, 每次使对方血量减少自己攻击力 数值, 当一方血量小于等于 0 时被击败,小刘自认为自己能成为认证野王, 现在想让你帮助他判断 自己能否成为认证野王输入格式:如果小刘能击败无限多的室友成为认证的野王, 则输出“The king of the wild certification!”;
否则如果小刘不可以击败任何一个室友, 则输出 “I'm too dishes!”;
否则输出一个整数, 表示小刘击败的室友数量。
输出格式:如果小刘能击败无限多的室友成为认证的野王, 则输出“The king of the wild certification!”;
否则如果小刘不可以击败任何一个室友, 则输出 “I'm too dishes!”;
否则输出一个整数, 表示小刘击败的室友数量。
输入样例:
2 1
2 1
3 0
输出样例:
4
1.1.1 数据处理:
数据表达:运用了8个整形变量,2个表示小刘的攻击力与血量,2个表示室友的攻击与血量,2个表示皮肤的属性,另一个用于当击败室友的计数器,最后一个用于重置死亡室友的血量。
数据处理:该题运用了标准输入输出语句,同时运用了while循环与if判断的嵌套使用,在进入该死循环之前,判断小刘的攻击力如果大于室友血量,就直接输出他可以成为野王,并跳出程序,while(1)表示死循环,通过判断语句以及goto语句来跳出循环,即当小刘死亡的时候跳出循环,室友死亡的时候计数器+1同时血量重置。
**函数参数:该题仅含有一个主函数,不含被调函数**
伪代码:
if a_liu≥b_mate
then printf "The king of the wild certification!"
else b_mate←b_mate-a_liu;
if b_mate≤0
then i++
b_mate←c
else b_liu←b_liu-a_mate
if b_liu≤0
then goto end
end:if i=0
then printf "我是菜鸡"
else printf "i"
1.1.2实验代码截图:
1.1.3 造测试数据:
输入数据 | 输出数据 | 说明 |
---|---|---|
4 2 2 1 4 1 |
The king of the wild certification! | 小刘攻击力一次打死室友,即可以击败无限室友,成为野王 |
8 1 2 1 4 0 |
11 | 小刘可以击败11个室友 |
4 1 4 3 2 0 |
I'm too dishes! | 小刘一个都打不过,承认自己是菜鸡 |
1.1.4 PTA提交列表及说明:
1.部分正确:其实3次部分正确都是因为测试点7,我猜该测试点是用于测试小刘一个室友都打不败的情况,前面真的改了好久好久好久!!后面我直接把循环改成死循环,然后室友每当死一次的时候,计数器加一,当小刘血量降为0的时候跳出该循环,并输出。然后就对了。
1.2 题目2: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.2.1数据处理:
数据表达:该题运用了4个整形变量,num1表示需要猜的数字为,time表示最多猜多少次,num2表示每一次猜的数字,i为计数器,每输入一次i就会加一。
数据处理:该程序运用了标准输入输出函数,同时用了一个输入循环,从键盘上接收数字,并比较其值与需要猜的数字,并输出题目要求的答案,同时运用了goto语句,在猜到数字之和跳出循环。
**函数参数:该代码只含一个主函数,未涉及被调函数。**
伪代码:
if i>time or num2<0
then printf"Game Over" and goto end
else if i=1
if num2=num1
then printf"Bingo!" and goto end
else if num2<num1
then printf"Too small"
else
then printf"Too Big"
else if i≤3
if num2=num1
then printf"Lucky You!" and goto end
else if num2<num1
then printf"Too small"
else
then printf"Too Big"
else if i≤time
if num2=num1
then printf"Good Guess!" and goto end
else if num2<num1
then printf"Too small"
else
then printf"Too Big"
i++
end:return 0
1.2.2实验代码截图:
1.2.3 造测试数据:
输入数据 | 输出数据 | 说明 |
---|---|---|
58 4 70 50 56 58 |
Too big Too small Too small Good Guess! |
刚好time次猜中数字 |
66 3 55 58 87 66 |
Too small Too small Game Over |
未猜中数字 |
98 4 98 |
Bingo! | 一次猜中数字 |
1507 10 69 200 1507 |
Too small Too small Lucky You! |
三次内猜中数字 |
1.2.4 PTA提交列表及说明: |
运行超时:忘记添加计数器,导致循环不会跳出一直运行,于是导致运行超时
部分正确1:第二次运行时添加了计数器,但是计数器的数量多计了一次,于是导致部分错误
部分正确2:当要求的次数等于3并且3次猜出时,会输出矛盾,输出2句话。
部分正确3:最后一次部分正确,是因为当最后一次没有猜对的时候,跳出循环但不输出game over因为while循环和后面的if判断矛盾了,删除while循环中的判断计数器之后就正确了
挑战题:L1-035 情人节
内容描述:以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。
输入格式:输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.
标志输入的结束,这个符号不算在点赞名单里。
输出格式:根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner...”;若只有A没有B,则输出“A is the only one for you...”;若连A都没有,则输出“Momo... No one is for you ...”
输入样例:
GaoXZh
Magi
Einst
Quark
LaoLao
FatMouse
ZhaShen
fantacy
latesum
SenSen
QuanQuan
whatever
whenever
Potaty
hahaha
.
输出样例:
Magi and Potaty are inviting you to dinner...
数据处理:
数据表达:用了一个计数整型变量i与三个记名字符型变量name,name2,name3。
数据处理:用到的表达式有输入与输出表达式,该函数的主要内容为while循环,在该循环内判断输入的名字是第几楼,同时将题目要求的楼数判断出来并输出,若不满足则输出其他要求。
**函数参数:该题仅含有一个主函数,不含被调函数**
实验代码截图:
造测试数据:
输入数据 | 输出数据 | 说明 |
---|---|---|
LeLe MaMa GaGa Zz . |
MaMa is the only one for you... | 2<人数<14 |
LeLe . |
Momo... No one is for you ... | 人数<2 |
PTA提交列表及说明:
1.部分正确:前几次提交的时候将第一次输入语句写在while循环外部,就导致i的计数器会多1,如果输入的名字是1的时候,会被误判为2,输入的是13的时候会被误判为14,于是导致了部分正确。
2.代码互评:
同学代码截图1:
自己代码截图1:
- 该同学运用的是do while的语法,至少会执行一次循环体,而我用的是while的死循环,知道碰见输入的是小于0的数,才会跳出循环。
同学代码截图2:
自己代码截图2:
- 1.该同学是运用的for循环来计算鸡蛋的数量,如果他家非常有钱,鸡蛋的数量大于9999,会导致程序出错,而我运用的是while循环,每循环一次,鸡蛋数量就会加一,不会出现数量过多而程序出错。
- 2.该同学的判断条件在for循环内部,会增加代码的行数,增加程序的复杂度,而我是在while循环的执行条件内判断。
3.学习总结:
3.1 学习进度条:
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
8 | 29h | 508 | 输入、输出函数 | 除法的运算法则 |
9 | 34h | 603 | 其他类型的函数如整型浮点型 | 判断语句if else |
10 | 31h | 563 | for循环、if else判断 | 近期刚了解到的数组问题 |
11 | 30h | 686 | for循环的嵌套使用、调用自己定义的函数 | 调用自己定义的函数时还不够熟练 |
12 | 29h | 664 | 判断语句的进一步学习以及自学while循环与数组 | 判断语句的嵌套以及while循环不够熟练,数组有些迷茫 |
13 | 25h | 721 | 判断语句switch | switch判断语句运用还不够熟练 |
14 | 32h | 865 | while、do while循环与for循环的比较,个人更偏向while循环的使用 | 本周的内容多次练习后暂时没有问题,但是对于数组问题还是不够熟练,需要多多练习 |
3.2 累积代码行和博客字数:
3.3 学习内容总结和感悟:
3.3.1 学习内容总结:
3.3.2 学习体会:
本周学习到了一个新知识点———while循环与dowhile循环
其用法为:
while(执行条件)
{
巴拉巴拉巴拉(循环体);
}
do
{
巴拉巴拉巴拉(循环体);
}
while(执行条件);
二者的区别为后者必定会执行一次循环体,而前者会先判断。
本周的学习体会:都说学习是一件死板的事情,而我认为,学习一定不能一板一眼,因为一板一眼只会滋生弱点,在学习过程中我们需要不断总结自己在该方面的问题,在做题目的时候如果遇到问题不要急着找别人去问如何写,而是应该弄清楚为什么这里会错,应该怎么改,这样就会对这个地方有一定的掌握,最终熟练运用。就拿本周的while循环为例,在执行条件判断内,如果和循环体内的if判断语句内的goto语句冲突时,他会直接跳过循环执行下一步,而不执行if判断内的goto语句,在我写本周的pta作业时就出现过这个问题,要防止出现跳出循环条件的重复。
学习感受:感觉随着学习的深入,越来越多的知识点互相交杂错综,并不一定每种都需要精通,而是选择自己用着最舒服舒适顺手的方法或者语法,就比如swhich的分支结构和if else的分支结构,我更喜欢运用if else,就专精该语句,但是这并不代表switch语句就可以落下不学,同样也需要弄懂用法和规则。其次这么多的知识点,要经常做题练习运用才不会弄混甚至忘记。
每周的逼逼赖赖日常吐槽环节:听说要拍视频讲解题目,其实一开始我是觉得挺新鲜的,甚至还想尝试一下,但是转念一想,我自己都还不太明白用法,等下把他们带歪了琛哥不得把我鲨咯🙆🏻♂️🙆🏻♂️?所以就算了蛤蛤蛤蛤蛤蛤,而且那么多优秀的助教们顶在前面,咋会轮到我嘞,于是就没想啦嘿嘿(为啥我们的大琛哥可以有那么多花里胡哨的想法啊,又是博客园又是拍视频讲题目的,想拆开他脑袋康康里面除了脑子还有啥🌈🌈。),然后感觉本周的题目好多好多好多呢,改了好久好久好久啊啊啊!!!孩子要秃了,为了孩子的发量,琛哥下次少发点PTA的题目吧🧚🏻♂️🧚🏻♂️。
最后的最后还是送给本班宝贝儿们一句话:吾生也有涯,而知也无涯。❤❤❤❤❤