首页 > 技术文章 > C语言I博客作业07

txq0629 2020-12-03 07:56 原文

这个作业属于哪个课程 <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、题目难度越大,越能看到我与别人的差距和自己的不足之处。在最后的学习中,要多重视一些思路,方法。注意逻辑关系。

推荐阅读