C博客作业01--分支、顺序结构

1.本章学习总结

1.1 思维导图

C博客作业01--分支、顺序结构_第1张图片

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

  1. 变量的命名:在以往的经历中,对于变量的命名总是简单地使用abcd字母,没有考虑到程序后期的 维护性 以及 可读性 。在课堂上第一次接触到 驼峰命名法 ,经过老师的讲解也意识到了规范命名的重要性。
  2. ‘ ’与“ ”的差别,‘ ’中的是字符,而“ ”中则是字符串,在之前的学习之中没有注意这点,一直当作一种固定的格式来对待,直到上课老师指出后才明白。
  3. 虽然已经学习了运算符的优先级别,但是后面又忘记,所以在实际操作中经常要加括号来区分开来,希望在后面的不断接触中能尽快规避这个错误吧。

1.2.2 代码累计

1474626-20181004174120523-381149013.png

2.PTA总分

2.1截图PTA中顺序结构、分支结构的排名得分

1474626-20181004174302007-2061817145.png

1474626-20181004174311973-1862891280.png

2.2 我的总分:

PTA总分:225分

3.PTA实验作业

3.1 PTA题目1

IT协会举办程序设计竞赛,准备购买U盘作奖品。请编写程序,根据活动经费和U盘单价预估可购买U盘的最大数量。

3.1.1 算法分析

1. 用double类型活动经费total,U盘单价price,可购买数量number。
2. 用总经费除以U盘单价,并把所得数值赋给number,为了弥补double精度的缺陷,再加上0.0001。
3. 对number取整输出。

当时用以上思路但不知道要补偿精度时老是过不了,遂换用如下思路:

1. 用double类型声明总经费total,U盘单价price,用int类型声明数量int。
2. total加0.0001补偿精度。
3. 使用while循环,当total大于0时,total不断减去price,number不断加1。
4. 输出number。

3.1.2 代码截图

C博客作业01--分支、顺序结构_第2张图片

C博客作业01--分支、顺序结构_第3张图片

3.1.3 测试数据

测试点 输入 输出
1 660.8 47.2 14
2 504.9 19.8 25
3 505.5 101.1 5

3.1.4 PTA提交列表及说明

C博客作业01--分支、顺序结构_第4张图片

  • Q1:一开始又想到补偿精度,但只加了0.01,多次尝试无果,遂放弃。

    A1:对于不同的题目有不同的精度要求,所以在补偿精度时可以往小了加。

  • Q2:PTA中的测试点3,5,总是过不去?

    Q2: 用while的累减思路可以通过测试点3,但仍过不了5,就是因为没有弥补精度。同时也说明对double使用乘除会使误差变大。

3.2 PTA题目2

输入三个整数x,y,z,请把这三个数由小到大输出。

3.2.1 算法分析

当第一眼看到排序,下意识就用了冒泡排序。。。

1. 用int类型声明数组Num,for循环要用的计次变量i,j,以及指示变量flag,交换数据所用的变量temp。
2. 使用for循环遍历输入。
3. 用双重for循环建立冒泡排序,并在第一重for循环紧接着就初始化flag=0。在第二重for循环判断Num[i]是否大于Num[i+1],是则交换数据,并令flag=1.
4. 若flag=1,则继续循环,若flag=0,说明已经按照顺序排列,跳出for循环。
5. 按照格式输出。

后来看到下面这种思路,才知道自己的智商成功被碾压了

1. 用int类型声明smallest,y,biggest。
2. 判断是否有一个数大于biggest,有则交换,无则跳过。
3. 判断是否y小于smallest,有则交换,无则跳过。
4. 按照格式输出。

不得不承认,第二种思路清晰,过程明了。第一种则适用于输入的数较多或不固定时,用在这里有点小题大作了。

3.2.2 代码

C博客作业01--分支、顺序结构_第5张图片

C博客作业01--分支、顺序结构_第6张图片

3.2.3 测试数据

测试点 输入 输出
1 1 2 3 x=1,y=2,z=3
2 3 2 1 x=1,y=2,z=3
3 1 1 1 x=1,y=1,z=1

3.2.4 PTA提交列表及说明

1474626-20181006003509770-102068271.png

  • Q:上课时太赶,只顾着赶紧做题,没注意题目输出要求已经最佳算法,以为是把xyz按照大小输出,增加题目难度。后又选择冒泡排序法,复杂化了该题。

    A:在老师展示过代码后,发现有更简单地算法,经此改正。

3.3 PTA题目3

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√​s(s−a)(s−b)(s−c)​​​,其中s=(a+b+c)/2。

3.3.1 算法分析

1. 用int声明三条边的变量,用double声明面积和周长。
2. 判断所给数据能否形成三角形。
3. 若能,计算周长及面积。
4. 按照格式输出。

3.3.2 代码

C博客作业01--分支、顺序结构_第7张图片

3.3.3 测试数据

测试点 输入 输出
1 5 5 3 area = 7.15; perimeter = 13.00
2 1 4 1 These sides do not correspond to a valid triangle
3 1 2 1 These sides do not correspond to a valid triangle

3.2.4 PTA提交列表及说明

1474626-20181006013219848-2075045627.png

  • Q1:运算符优先级。

    A1:在本代码中, (length1 + length2) <= length3 || (length1 + length3) <= length2 || (length3 + length2) <= length1 可以简写为 length1 + length2 <= length3 || length1 + length3 <= length2 || length3 + length2 <= length1 ,因为+的优先级比判断运算符的优先级大,所以可以不必括号。

  • Q2:四舍五入?

    A2:在C语言中保留小数输出是自动四舍五入的,这也是我在这周的课堂上新学到的一点。

4.点评同学博客

1.

C博客作业01--分支、顺序结构_第8张图片

2.

C博客作业01--分支、顺序结构_第9张图片

3.

C博客作业01--分支、顺序结构_第10张图片

4.

C博客作业01--分支、顺序结构_第11张图片

5.

C博客作业01--分支、顺序结构_第12张图片

转载于:https://www.cnblogs.com/Rasang/p/9742679.html

你可能感兴趣的:(c/c++)