问题 | 回答 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | C语言I博客作业08 |
我在这个课程的目标是 | 完全独立编写一个小游戏程序,并能正常运行。 |
这个作业在那个具体方面帮助我实现目标 | 帮助我熟悉使用while和do-while结构解决问题 |
参考文献 | 《C语言程序设计》 《C Primer Plus》 |
1.PTA实验作业
1.1求整数的位数及各位数字之和
对于给定的正整数N,求它的位数及其各位数字之和。
1.1.1数据处理
定义整型变量 输入的整数n,循环次数i,整数各位数的和sum,并且赋值为零。
scanf("%d",&n);
while循环语句(n>0)
{
sum的关系表达式 sum=sum+n%10;
n=n/10;
i++; (循环此语句,以此计算n的各数及和)
}
printf输出 循环次数i,n各位数和sum;
返回零;
1.1.2实验代码截图
1.1.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
52 | 2 7 | 两位数 |
123 | 3 6 | 三位数 |
8868 | 4 30 | 四位数 |
1.1.4 PTA提交列表及说明
1.答案错误:忘记给sum赋值为零,导致答案错误,于是给sum赋值为零。
2.答案错误:while语句条件里n应该大于零。
1.2 爬动的蠕虫
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
1.2.1 数据处理
定义变量N,U,D,时间t,蠕虫爬的长度s;
scanf函数输出;
while循环语句(真)
{
s表达式;
t表达式;
if(当蠕虫爬的路程小于井长)
{
s表达式;
t表达式;
}
else
break;跳出当前结构
}
printf输出;
返回零;
1.2.2 实验代码截图
1.2.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
34 5 1 | 17 | D<U |
23 4 4 | 无结果 | D=U |
33 2 3 | 无结果 | D>U |
1.2.4 PTA提交列表及说明
1.运行超时:未用break语句跳出当前循环,导致运行超时。
2.答案错误:一开始将题目简单的认为可以直接算作蠕虫两分钟爬(U-D)米,但是运行时候发现时间多了,原来蠕虫在我所计算出的时间之前就爬上了顶。后来就将程序改成一分钟一分钟计算的。然后重新编写。
2.代码互评
同学代码截图
自己代码截图
1.同学一的代码比我的看起来更加规范,每一部分都很清晰的呈现出来,让人更易读懂。
2.两位同学都将变量分成两部分定义,而我比较喜欢一次定义完。
3.同学在写关系表达式时喜欢用简单一点的比如a++,a+=b.....等等诸如此类的,而我仍然使用数学思维写成a=a+1,a=a+b。我觉得两者皆可吧,不一定非要用哪一种。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第三周10.9-10.12 | 两天 | 188 | 对代码数据的处理了解,比如类型结构等 | 什么时候用int,double声明变量,逻辑运算符的运用等 |
第四周10.16-10.18 | 一天半 | 190 | 如何用double型数据使用lf%,怎样在程序中用for语句实现循环,可指定循环次数 | 循环体中的关系表达式的正确运用 |
第五周10.23-10.26 | 两天 | 226 | 运算符的优先级顺序,自定义函数的编写,对数据参数的了解 | 具体如何在题目中定义函数,参数又应放在哪里才是正确位置 |
第六周10.30-11.2 | 三天 | 348 | 分支结构应用,逻辑运算符的使用 | 在使用if-else语句时{}的位置与格式,语句一多就搞不清楚了 |
第七周11.5-11.8 | 两天半 | 300 | switch语句作为分支结构应用 | 伪代码到底该如何编写,写的详细和正规代码没什么两样,写的粗略思路又不够清晰 |
第八周11.13-11.15 | 两天半 | 300 | 使用while和do-while结构解决问题 | 对于不同情况下for循环语句和while循环语句如何选择使答题更简便 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 学习内容越来越多,难度越来越大,比起之前学得略显吃力,每个知识点都要花更多的时间精力去钻研。
- 学习了多种结构后将一些题目的答题过程简化了,让人更让容易编写出答案,更容易理解过程。
- 关于本周知识点:
whlie 先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。
do-while循环与while循环的不同在于:do-while会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”.