这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11589 |
这个作业的目标 | 熟悉使用while和do-while结构解决问题 |
学号 | 20208965 |
1.PTA实验作业(20分/题)
1.1 题目名1求整数的位数及各位数字之和 (15分)
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过10
9
的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
1.1.1数据处理
数据表达:本题变量为N,w,sum;其中N通过输入得到,w,sum通过计算式得到;都定义为整型。
数据处理:运用了do-while循环语句,表达式为:
int N,w,sum;
do{
sum=sum+N%10;
N=N/10;
w++;
}while(N>0);
伪代码如下:
首先定义变量N,w,sum
w,sum的初始值都为0
运用do-while循环语句执行
do{
scanf("%d",&N);
求各位数字之和 sum=sum+N%10;
令数位少一 N=N/10;
求各整数的位数 w++;
}while(N>0);
执行循环体后判断条件是否成立。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
0 | 0 0 | 数字0非正整数 |
966 | 321 | 三位数,各位数字之和为21 |
7456 | 421 | 四位数,各位数字之和为21 |
66800 | 520 | 五位数,各位数字之和为20 |
1.1.4 PTA提交列表及说明
格式错误:printf("%d %d",x,z);题目说中间需要空格,我忘记打了。
编译错误:测试时提示while有错误。
解决方式:do-while语句中while条件后要加上分号,后改正。
1.2 题目2 购物(二)
用户购买了若干个商品(商品数不超过10),现在,他告诉你每件商品的价格,你计算出这些商品的平均价格。
输入格式:
若干个以空格间隔的实数(每个数不超过100000),以-1作为输入结束的标志。
输出格式:
一个实数,表示商品的平均价格,精确到小数点后两位。
1.2.1 数据处理
**数据表达**:x,y,z,a为双浮点型,x输入赋值,y,z,a初始化。
**数据处理**:表达式:z<-z+x;a<-z/y;
流程结构:while语句,if-else语句。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
890.78 2769.8 12300 3532.2 -1 | 4873.19 | 这些商品的平均价格 |
0 -1 | 0.00 | 商品数为0 |
1.2.4 PTA提交列表及说明
部分正确:开始把if语句放在while语句中,导致商品数为极端值时出错误。
部分正确:一开始将s=s+p的位置和第二个scanf的位置弄反了,改正后正确。
2.代码互评(5分)
同学代码截图
自己代码截图
1.该同学在数鸡蛋一题中用了while循环,而我用的是for循环。
2.在数鸡蛋那一题中用while循环会比较简洁一点。
3.在购物一题中我们虽然都用的while循环,但是定义的字符不一样,该同学一看就知道字母表达的是什么,我的比较简单。
4.在购物一题中同学的代码比我的要复杂一些,我们在一些细节的处理上存在区别。
3.学习总结(15分)
3.1 学习进度条(5分)
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
1.学的东西越来越多,写的题也变难了,学的东西越来越多,写的题也变难了。
2.之前容易出错的细节都不会错的,但又出现了别的细节错误。
3.本周的PTA作业比之前的都要难,写的就很慢,问题也多,痛并快乐着,为自己加油!