C语言I博客作业07

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-1
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11584
这个作业的目标 熟悉掌握while和do-while结构
学号 20209113

1.PTA实验作业

从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:

1.1(7-3)循环-古角猜想

题目内容描述:日本数学家古角静夫研究自然数时,发现一个有趣现象:“如果是个偶数就除2,如果是奇数就乘以3加1”,经过有限个这样的处理步骤,最后一定能得到1. 任意输入一个自然数,给出得到结果1的运算过程。输入格式:输入一个自然数n 输出格式:输出每次运算步骤,直到结果为1。

1.1.1数据处理

·数据表达:用了整型变量n。n表示输入的自然数。
·数据处理:用了while语句,if-else语句。表达式:算术表达式,逻辑表达式。
伪代码:Begin  输入:n
       while n!=1 
          Begin 
          if(n%2←0) 
           Begin
         n/←2
         end
         else Begin
        n←n*3+1
        end
        end

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
5 5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
样例 5是奇数,奇数乘以3加1 偶数就除2,最后结果为1
6 6/2=3
3* 3+1=10
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
样例 6是偶数,偶数就除2,奇数乘以3加1,最后结果为1
3 33+1=10
10/2=5
5
3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
3是奇数,奇数乘以3加1 偶数就除2,直到结果为1
14 14/2=7
7* 3+1=22
22/2=11
11* 3+1=34
34/2=17
17* 3+1=52
52/2=26
26/2=13
13* 3+1=40
0/2=20
20/2=10
10/2=5
5* 3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
14是偶数,偶数就除2,奇数乘以3加1,最后结果为1

1.1.4 PTA提交列表及说明

提交列表说明:
·编译错误:scanf函数后没打分号。
·解决办法:在scanf 函数后加上分号。
·运行超时:没有打return 0;
·解决办法:在结尾加上return 0;
·答案错误:printf中输出的参数n与n/2弄反。
·解决办法:先打n/2再打n。

1.2(7-6)购物(二)

题目内容描述:用户购买了若干个商品(商品数不超过10),现在,他告诉你每件商品的价格,你计算出这些商品的平均价格。
输入格式:若干个以空格间隔的实数(每个数不超过100000),以-1作为输入结束的标志。
输出格式:一个实数,表示商品的平均价格,精确到小数点后两位。

1.2.1 数据处理

·数据表达:用了变量n,price,sum都为双精度浮点型变量。n表示商品数,price表示每件商品的价格,sum表示所有商品价格之和。
·数据处理:用了while语句,if语句。表达式:算术表达式,赋值表达式,逻辑表达式。
伪代码: Begin  输入:n,price,sum
        sum←0
        scanf 输入价格
        while price!=-1 do
          Begin   
        sum+←price
        n←n+1
        scanf 输入价格
        if(i >= 10)
         Begin  
            i←10
        end
        end

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
890.78 2769.8 12300 3532.2 -1 4873.19 样例 n<10 四个商品的平均价格为4873.19
44 999 625.3 -1 556.10 n<10 三个商品的平均价格为556.10
65 325 96 555 628 427 980 1200 3200 4635 -1 1211.10 n=10 十个商品的平均价格为1211.10

1.2.4 PTA提交列表及说明

提交列表说明:
·答案错误:结果没有保留两位小数。
·解决办法:输出时将结果保留两位小数。
·编译错误:scanf函数后忘记打分号。
·解决办法:在scanf函数后加上分号。
·部分正确:在开始给n赋值为0,然后提交一直提示商品数的极端值,但输入10个商品的测试答案是正确的,不知道哪出现了问题,询问同学后发现开始不需要给n赋值。
·解决办法:将之前的n赋值去掉。
·多种错误:用int定义n,询问同学后知道应该用double定义。
·解决办法:将n定义为double型。

2.代码互评

同学代码截图:
郭雷雨同学的代码:

何明垚同学代码:

自己代码截图:

不同之处:
与第一位同学的代码比:
1.我们习惯定义的变量不同,同学定义的是a,b,N,n,i;而我定义了number,N,i,x;
2.该同学运用的是for循环和if-else的分支结构,并且使用break跳出执行的程序,而我用的是do-while的循环语句和if-else的分支语句,使用return 0;跳出语句。该同学首先用for循环对猜的值与输入的值进行比较,用i来控制循环次数,通过对i的多种判断,得到结果。而我通过do-while.,对输入的值进行判断,最后得出结论。复杂程度差不多,各有各的优缺点。
与第二位同学的代码比:
1.我们的思路大致相同,我们习惯定义的变量不同,同学定义的是整型变量n,N,count,num;而我是定义了number,N,i,x;
2.该同学运用的也是for语句和if-else的分支结构,而我用的是do-while的循环语句和if-else的分支语句。该同学的代码比我的要简洁清晰,更容易懂,我的代码还可以简化。
3.该同学的代码表达式中用了逻辑运算符,更清楚明白。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第八周/10.19~10.25 15小时 150行 在屏幕上显示Hello World!学会了怎样用PTA进行写代码作业,学会了markdowm语法
第九周/10.26~11.1 12 小时 350行 求华氏温度对应的摄氏温度 常量,变量和数据类型 知道以后要怎样向别人提问 变量问题,输入输出格式
第十周/11.2~11.8 20小时 460行 for循环,if else语句 对于&的用法不了解,输出时保留几位小数
第十一周/11.9~11.15 17小时 440行 生成乘方表和阶乘表,对函数定义和调用,思维导图 目前不太熟练,调用函数不太理解
第十二周/11.16~11.22 19小时 490行 多分支结构,字符型数据类型和逻辑运算符 思路容易乱,答案想不全面,逻辑运算符的功能还不是很懂
第十三周/11.23~11.29 16小时 470行 多分支结构switch语句 什么时候使用switch语句使程序更简单
第十四周/11.30~12.6 15小时 455行 while和do-while结构 对while和do-while不太熟练,伪代码的打法

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

本周学习了while语句和do-while语句,并知道了for语句,while语句与do-while语句的区别,当循环次数已知时用for语句,看起来最清晰;如果循环次数不明确且需先进入循环则用do-while语句。本周PTA有点难,但题目难度越大,越能看到自己的不足之处。通过这次作业可以看出我的数学逻辑不强,有时没太理解题目的意思, 题目总出错,知识学习得太浅了不够深入,老师在课堂上讲的内容以为都听懂了,实际并没有,当打代码是发现好多不会,在看到一个题不能立马想到要用什么条件,什么语句;伪代码不太会,没写到位,所以我必须要在课堂之前进行预习带着问题思考听课,课后复习,多打代码,在代码后可以加一些注释方便自己他人更好的理解,以免打着打着思路乱了,更努力地去练习,在这门课上花更多的时间。朝着自己的目标慢慢努力,会继续加油!

原文地址:https://www.cnblogs.com/hejiao/p/14073190.html