这个作业属于哪个课程 | <C语言程序设计II> |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11586 |
这个作业的目标 | <熟悉多循环结构 学会while和do-while语句> |
这个作业在哪个具体方面帮助我实现目标 | <可以帮助我解决没有说明执行次数的问题帮助我简化循环> |
参考文献 | <C语言程序设计书,百度文库,同学代码> |
学号 | 20209174 |
四、作业格式
1.1题目1
用户购买了若干个商品(商品数不超过10),现在,他告诉你每件商品的价格,你计算出这些商品的平均价格。
输入格式:
若干个以空格间隔的实数(每个数不超过100000),以-1作为输入结束的标志。
输出格式:
一个实数,表示商品的平均价格,精确到小数点后两位。
1.1.1数据处理
数据表达:实验用了变量你n,sum,count.变量的值的值通过scanf函数输入,其中sum通过赋值,数据类型为双精度浮点型。
数据处理:该程序的流程结构为while循环语句和if简单分支语句。表达式为简单赋值。while(n>=0){ count++; sum=sum+n; scanf ("%lf",&n); }
1.1.2 实验代码截图
1.1.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
890.78 2769.8 12300 3532.2 -1 | 4873.19 | 样例 |
250 38 748 58 58 -1 | 230.40 | 一般数据 |
321 3838 7474 250.250 38.38 -1 | 2384.33 | 一般数据 |
1.1.4 PTA提交列表及说明
编译错误:while语句后面漏写了一个大括号,格式也出现了错误。根据错误提示解决问题。
部分正确:没有考虑到count=10的情况,while中设置了count<10;之后在while语句条件中删除。
部分正确:在开始的时候给count赋值为0;然后提交一直提示商品数的极端值,极端值就是10嘛,但我可以输入10个商品,而且测试答案也是正确的,之后通过与同学的代码比较,发现开始不需要给count赋值。
1.2 题目2
小刘刚打上了巅峰赛2500 分, 就迫不及待地向他们室友发起了solo(单挑
他们会选择不一样的英雄,每个英雄都只有两个属性(血量,攻击力 ), 小刘有很多皮肤 会给他带来增益( 减损)效果(增加或者减少血量和 攻击力)
然后小刘和他的室友进行 solo (单挑), 小刘先手, 每次使对方血量减少自己攻击力 数值, 当一方血量小于等于 0 时被击败,小刘自认为自己能成为认证野王, 现在想让你帮助他判断 自己能否成为认证野王
输入格式:
一共三行
第一行两个整数 h, a,代表小刘英雄的血量, 攻击力
第二行两个整数 H,A,代表室友英雄的血量, 攻击力
第三行两个整数 ph, pa, 代表皮肤增加的血量,攻击力
输出格式:
如果小刘能击败无限多的室友成为认证的野王, 则输出“The king of the wild certification!”;
否则如果小刘不可以击败任何一个室友, 则输出 “I'm too dishes!”;
否则输出一个整数, 表示小刘击败的室友数量,
1.2.1 数据处理
数据表达:实验用了变量有:a,A,h,H,i,s,pa,ph。变量的值的值通过scanf函数输入i,s通过赋值,数据类型为整型
数据处理:实验用到的了while的嵌套,while的循环语句和if分支结构。while (c){
s=H;
while(h>0&&s>0){
s=s-a;
if (s<=0)
{
i++;
break;
}
h=h-A;
if(h<=0)
{
c=0;
break;
}
}
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
2 1 2 1 3 0 | 4 | 样例 |
3 0 3 2 0 0 | I'm too dishes! | 一般样例 |
2 2 2 1 1 1 | The king of the wild certification! | 一般样例 |
1.2.4 PTA提交列表及说明 | ||
![]() |
- 部分正确:第一次使用了仅仅while的循环语句来编写,小刘可以获得野王认证的这一过程出现了错误,把这个判断的程序放到了后面,也少了出现的几种情况。然后在测试点六一直出现答案错误,不知道哪里错了。然后通过同学的启发,改变了自己的思路,重新编写代码。通过两个while循环来完成每一次的solo。
- 部分正确:直接使用H进行重复单挑的过程。
- 部分正确:没有设置小刘击败室友后,继续跟室友solo的程序。然后我通过在while循环的开始前,将H的值赋值给s
,当结束一次solo,可以继续执行另一个solo。这样就可以计算出小刘击败的人数。
2.代码互评(5分)
找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。
同学代码截图
自己代码截图
1,2,3方式罗列2份代码不同地方。
- 1.从整体上来看我们用到的循环类型上不同,代码复杂程度也不同。
- 2.第一位同学用到了for循环和if-else的分支结构,并且使用break跳出执行的程序,而我用到了while的循环语句和if的分支语句,使用return 0;跳出语句。从代码长度上看,我的更为复杂一点,但我发现我的可以更好的理解,还可以把我的代码进行化简一下。总之第一位同学的代码和我的各有各的优势,取长补短。
- 3.第二位同学首先用for循环对猜的值与输入的值进行比较,用i来控制循环次数,通过对i的多种判断,得到结论。我先用if对第一次输入的值进行判断,符合条件直接输出。然后通过do-while.,对输入的值进行判断,最后得出结论。
3学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
5/11.17—11.21 | 10h | 720 | 对分支语句的深入,数据类型char,运算符 | 思路不够清晰 |
6/11.23-11.27 | 10h | 720 | 再一次对分支结构的深入,了解了switch分支结构。 | 一些微小的错误特别难发现 |
7/11.30-12.5 | 10h | 750 | 对循环结构的深入,了解了while和do-while语句。 | 还不能够灵活运用for while do-while |
3.2 累积代码行和博客字数(5分) | ||||
![]() |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
- 1、本周进行了循环语句语句的进一步加深,引入了while和do-while语句。之前有过预习,但初次接触也遇到了很多的问题。在课堂上经过老师的讲解,我明白了很多,也学知道了for语句和while的用法区别。
- 2、本周最大的问题时pta第四题,说实话这么题目我提交了三四十变,在一步一步的改进中,还是卡在了'直接退出'这个点.,我不明白是什么意思,运行测试结果又都是对的,做了几个小时都没搞好。之后还是通过同学的帮助解决。
- 3、题目难度越大,越能看到我与别人的差距和自己的不足之处。在最后的学习中,要多重视一些思路,方法。注意逻辑关系。