C语言I博客作业07
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11589 |
| 这个作业的目标 | 学习while语句或者do-while语句并运用到代码编程中 |
| 学号 | 20208997 |
1.PTA实验作业(20分/题)

1.1 题目名1
找出一批学生的最高分
题目描述:
本题要求编写程序,找出最高分。
输入格式:
输入在一行中给出一系列非负整数,其间以空格分隔。当读到负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出最高分。
输入样例:
在这里给出一组输入。例如:
67 88 73 54 0 95 60 -1
输出样例:
在这里给出相应的输出。例如:
95
1.1.1数据处理
数据表达:本题变量为max,num;num的值通过输入得到,max的值通过与num比较得到;两者数据类型都为整型。
数据处理:运用do-while语句完成循环,表达式如下:
int max,num;
do{
if(max<num){
max=num;
}while(num>=0);
伪代码如下:
定义变量max,num
使用do-while语句执行循环体语句if(max<num){
使max等于目前循环的最大值 max=num;
再检查循环体条件,即while(num>=0);
当读到负整数,输入结束,输出最大值max。
1.1.2实验代码截图

1.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 99 76 88 45 32 -8 | 99 | 首位为最高分 |
| 66 77 88 99 -9 | 99 | 尾位为最高分 |
| 15 89 67 54 35 -6 | 89 | 中间分数为最高分 |
| 98 78 98 67 -9 | 98 | 分数中存在相同分数时输出在前面的那个 |
1.1.4 PTA提交列表及说明

提交列表说明:
部分正确:刚开始只使用if语句和for循环完成编程,但是提交时提示首位为最高分这一项错误,尝试修改,却还是相同问题。
解决方式:后来改用do-while循环语句与if语句结合,最终得到正确答案。
1.2 题目2
求整数的位数及各位数字之和
题目描述:
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过10
9
的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:
321
输出样例:
3 6
1.2.1 数据处理
数据表达:本题变量为N,c,sum;其中N通过输入得到,c,sum通过计算式得到;都定义为整型。
数据处理:运用了do-while循环语句,表达式为:
int N,c,sum;
do{
sum=sum+N%10;
N=N/10;
c++;
}while(N>0);
伪代码如下:
首先定义变量N,c,sum
c,sum的初始值都为0
运用do-while循环语句执行
do{
scanf("%d",&N);
求各位数字之和 sum=sum+N%10;
令数位少一 N=N/10;
求各整数的位数 c++;
}while(N>0);
执行循环体后判断条件是否成立。
1.2.2 实验代码截图

1.2.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 66800 | 5 20 | 五位数,各位数字之和为20 |
| 7546 | 4 21 | 四位数,各位数字之和为21 |
| 966 | 3 21 | 三位数,各位数字之和为21 |
| 0 | 0 0 | 数字0非正整数 |
1.2.4 PTA提交列表及说明

提交列表说明:
编译错误:开始时定义的变量符号为c,后来不知不觉中求位数时就变成了count,导致前后变量不一致。
解决方式:根据提示查看代码,改正错误。
编译错误:我使用的是d0-while语句,但是测试时提示while有错误。
解决方式:后来想起老师特别提醒过do-while语句中while条件后要加上分号,后改正。
2.代码互评(5分)
同学代码截图1

自己代码截图1

不同之处:
1.该同学使用的循环语句为while语句,我使用的循环语句为do-while语句。首先循环先后顺序有区别,while语句是判断循环条件后执行循环体,而do-while语句则与之相反。
2.其次是我定义的变量字母较多,整份代码看起来不如该同学简洁明了。
同学代码截图2

自己代码截图2

不同之处:
1.该同学运用了长整型定义变量,我的定义都为整型,他的思考更为严谨。
2.该同学运用的循环语句为while语句,我的则是do-while语句,不同的语句。
2.我的代码行改动较多,空行,空格,排布不整齐。
3.学习总结(15分)
3.1 学习进度条(5分)
| 周/时间 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
|---|---|---|---|---|
| 第一周 | 5h | 68 | 简单编程 | 无 |
| 第二周 | 15h | 251 | 算数运算和赋值运算 | 无 |
| 第三周 | 25h | 368 | for循环语句的应用,浮点型的学习 | 无 |
| 第四周 | 26h | 379 | 自定义函数和调用函数 | 对调用函数的应用还不够清楚 |
| 第五周 | 28h | 356 | 分支结构中的if-else语句 | 对于使用分支结构的逻辑还不够清晰 |
| 第六周 | 30h | 398 | switch语句的学习和应用 | 对于题目中的逻辑先后问题还不太能理解 |
| 第七周 | 28h | 346 | while语句及do-while语句的学习及运用 | 这两种的具体循环点及循环特点 |
3.2 累积代码行和博客字数(5分)

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

3.3.2 学习体会
1.在这一周,又学习了新的知识,是循环结构中的while语句和do-while语句,老师讲的时候感觉不太难吧,但是到我自己去完成题目时就陷入疑惑了。
2.虽然有很多东西都不会,但是俗话说的好,学无止境,只要学就一定可以有收获的,我还是挺相信我可以的。
3.经过这么久的学习,我似乎已经习惯了这样的学习模式,这样的教学方式,习惯成自然,重复的训练会让我有所提升。
4.越往后面,一学期的时间越过越少,我就越慌,因为害怕考试,担心我目前所掌握的知识不足以支撑我完成考试,担心会挂科。
浙公网安备 33010602011771号