1.PTA实验作业(20分/题)

1.1 循环-古角猜想
日本数学家古角静夫研究自然数时,发现一个有趣现象:“如果是个偶数就除2,如果是奇数就乘以3加1”,经过有限个这样的处理步骤,最后一定能得到1. 任意输入一个自然数,给出得到
结果1的运算过程。
输入格式:
输入一个自然数n
输出格式:
输出每次运算步骤,直到结果为1.
输入样例1:
5
输出样例1:
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
输入样例2:
6
输出样例1:
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
1.1.1数据处理
数据表达:所用变量:n,m,a;这些变量的值的来源:n是输入的值,m是n除以10取余的值,若n为偶数,a就等于n除以2的值,若n为奇数,a就等于n乘以3再加1的值;类型:都是整形
(int)。
数据处理:数据用到的表达式:m = n % 2,a = n / 2,a = n * 3 + 1,n = a;流程结构:循环结构(do-while语句),选择结构(if-else语句)。
伪代码:do{ }while(n!=1);
/使用循环语句do-while,在大括号中写入循环体,在括号中写入循环条件;
m = n % 2;
/用m表示n除以2的余数;
if (m == 0){}else{}
/使用选择语句if-else,在括号中写入条件,在大括号中写入满足条件后所要执行的;
n = a;
/用n表示每一次在if-else语句中计算后的值;
1.1.2实验代码截图

1.1.3 造测试数据
输入数据 |
输出数据 |
说明 |
5 |
5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 |
输入正整数5 |
6 |
6/2=3 33+1=10 10/2=5 53+1=16 16/2=8 8/2=4 4/2=2 2/2=1 |
输入正整数6 |
1 |
1*3+1=4 4/2=2 2/2=1 |
输入正整数1 |
8 |
8/2=4 4/2=2 2/2=1 |
输入正整数8 |
10 |
10/2=5 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 |
输入正整数10 |
1.1.4 PTA提交列表及说明

1.编译错误:输出的括号内错误,引号后面的逗号后写的是公式
解决办法:把公式 n/2=a 与 n*3+1=a 都改为n,a;
2.多种错误:运行超时和答案错误,在还没计算前就把输入的值n等于了a,从而在第一次计算时不是用输入的值计算的
解决办法:刚开始不知道哪里出现问题,后来把所写的仔细看一遍后,发现问题所在之处后,把在if-else语句前的n = a放到if-else语句后;
3.部分错误:为奇数时答案错误,输出的格式不对,等号左右弄反了
解决办法:把%d=%d*3+1改成%d*3+1=%d。
1.2 购物
用户购买了若干个商品(商品数不超过10),现在,他告诉你每件商品的价格,你计算出这些商品的平均价格。
输入格式:
若干个以空格间隔的实数(每个数不超过100000),以-1作为输入结束的标志。
输出格式:
一个实数,表示商品的平均价格,精确到小数点后两位。
输入样例:
890.78 2769.8 12300 3532.2 -1
输出样例:
4873.19
1.2.1 数据处理
数据表达:所用变量:i,c,a,b,average;这些变量的值的来源:在for语句中每循环一次i就加1,在if语句中每执行一次c就加1,a是每一次输入值的和,b是输入的值,average是所有
输入值的和除以输入的个数的值;类型:i,c是整形(int),a,b,average是双精度浮点型(double)。
数据处理:数据用到的表达式:a=0,c=0,a = b + a,average=a / c;流程结构:循环结构(do-while语句),选择结构(if语句)。
伪代码:a=0;
/给a赋值;
b=0;
/给b赋值;
for(i=1;i<=10;i++){
/使用循环语句for,给在括号写入循环的初始值,循环条件
do{}while(b!=-1)
/使用循环语句do-while,在大括号中写入循环体,在括号中写入循环条件;
if(b!=-1&&b<=100000){}
/使用选择语句if,在括号中写入选择条件,在大括号中写入满足条件后所要执行的;
a = b + a;
/用a表示输入的数之和;
c++;
/c表示输入次数;
average=a / c;
/用average表示平均数,a / c求平均数。
1.2.2 实验代码截图

1.2.3 造测试数据
输入数据 |
输出数据 |
说明 |
890.78 2769.8 12300 3532.2 -1 |
4873.19 |
4件商品的平均价格 |
6569.99 2389.35 5459.93 3567.6 7626.56 -1 |
5122.69 |
5件商品的平均价格 |
5676 7674 2367 7854 5984 2565 9842 -1 |
5994.57 |
7件商品的平均价格 |
77 96 356 985 678 345 895 59 75 -1 |
396.22 |
9件商品的平均价格 |
9 520 256 262 1715 627 -1 |
564.83 |
6件商品的平均价格 |
1.2.4 PTA提交列表及说明

1.部分错误:商品数为极端值的答案错误
解决办法:当时不太懂,我想应该是没有限制输入的数据的大小,于是就限制输入数据的大小的条件;
2.段错误:数据溢出
解决办法:可能是进入死循环,于是加了一个条件限制;
3.部分错误:还是商品数为极端值的答案错误
解决办法:换了一种思路做题,将for语句和if-else语句换成for,do-while,if语句结合使用的方法来解题。
2.代码互评(5分)
同学代码截图


自己代码截图

不同之处:
1.尹志成同学使用while语句和if语句来解题的,而我使用for语句,do-while语句和if语句结合使用的方法来解题,虽然思路都差不多,但他的明显简化了许多;
2.郑九龙同学使用for语句和if-else语句来解题的,我使用的语句比他的多,但他写的比较多;
3.我们所用的语句都有所不同,但可以看出使用do-while与while语句可以使之简便许多。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
第三周 |
4天 |
156 |
for语句 |
在综合表达式中,不知道为什么不能用"[ ]" |
第四周 |
2天 |
169 |
函数的定义和调用 |
函数的定义和调用的格式不太懂 |
第五周 |
3天 |
192 |
分支结构if-else语句和字符型(char) |
有同学作业中运用到的没学过的知识不太理解 |
第六周 |
3天 |
278 |
选择结构中的switch语句 |
解题时不能很快判断出用if-else语句好些还是用switch语句好些 |
第七周 |
5天 |
256 |
循环结构中的while与do-while |
PTA第二题的不太懂 |
3.2 累积代码行和博客字数(5分)
时间 |
博客字数 |
代码行数 |
第一周 |
638 |
12 |
第二周 |
562 |
97 |
第三周 |
2058 |
156 |
第四周 |
1737 |
169 |
第五周 |
2520 |
192 |
第六周 |
1780 |
278 |
第七周 |
2267 |
256 |

3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结

3.3.2 学习体会
1.首先还觉得掌握的还可以,但在做PTA的作业时感觉掌握的不太好;
2.这次的作业,让我对while与do-while语句的使用更加熟练了;
3.在解题方面要灵活使用语句,多学习他人的的解题方式;
4.多加练习多加思考,继续努力学习,让C语言这颗知识树越来越茂盛。