C语言I博客作业08

问题 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9934
我在这个课程的目标是 熟练掌握各大语句,运算符,函数,尝试用简单的代码解决复杂的问题
这个作业在那个具体方面帮助我实现目标 熟悉使用while和do-while结构解决问题
参考文献 《C语言程序设计》

一、PTA实验作业

1.1求整数的位数及各位数字之和

题目内容描述
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式
输入在一行中给出一个不超过(10^9)​​的正整数N。
输出格式
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

1.1.1数据处理

数据表达:定义了三个整型变量n,count,sum。n指输入的不超过十的九次方的正整数,count是用来统计n的位数,sum指n的各位数字之和。
数据处理:置count、sum为0,调用scanf()函数输入n。运用while语句,当n>0时执行循环。在while的循环体语句中,先使用count来统计n的位数,然后对n进行取余并累加sum的值,最后执行n/=10,通过判断while语句的表达式决定是否继续下一次循环。

伪代码

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
321 3 6 示例
9 1 9 较小的数,一位数
568 3 19 三位数
378421 6 25 六位数
999999999 9 81 较大的数,九位数

1.1.4 PTA提交列表及说明

答案错误:在对n取余时,把运算符%打成/,这是思路不清晰以及写完代码后没有检查导致的。

1.2爬动的蠕虫

题目内容描述
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
输入格式
输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100
输出格式
在一行中输出蠕虫爬出井的时间,以分钟为单位。

1.2.1 数据处理

数据表达:定义了五个整型变量N、U、D、time,altitude。N指井的深度,U指蠕虫每1分钟可以向上爬的距离,D休息的过程中蠕虫下滑的距离,time指蠕虫爬出井的时间,altitude指蠕虫实际爬的距离。
数据处理:置N,U,D,time,altitude为0。调用scanf()函数输入N、U、D。在for循环中嵌套if-else语句。奇偶数分开计算然后进行循环。在第偶数分钟时,蠕虫实际爬的距离即为上爬的距离减去下滑的距离;在第奇数分钟时,蠕虫实际爬的距离即为上爬的距离。在循环中不断累积每分钟的实际爬行距离,然后运用了if语句,如果实际爬行距离大于或等于井深,则跳出循环,输出蠕虫爬出井的时间。

伪代码

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
12 3 1 11 示例
6 2 1 9 井比较浅
99 5 2 65 井比较深
87 30 2 7 上爬速度远远大于下滑速度

1.2.4 PTA提交列表及说明

运行超时:程序无法在规定时间内运行结束,检查后发现没有设置循环终止条件。但这个循环终止条件无法加在for语句的第二个表达式里,否则计算出的结果会是错误的。于是我在for语句中运用了if语句,如果实际爬行距离大于或等于井深,则跳出循环,输出蠕虫爬出井的时间。

二、代码互评(左边和中间的是同学代码,右边的是自己代码)

题目截图

不同之处

  • 第一位同学运用while语句,表达式为high+U<N,即当实际爬行距离加上最后一分钟的上爬距离小于井深时执行循环。high用来累加i的值。(i是用来统计每两分钟实际爬行的距离。)每次循环时time会加2,即每次循环的时间周期为2分钟。最后输出时间时加了上爬的一分钟。
  • 第二位同学运用while语句,表达式为s<N,即爬行的实际距离小于井深时执行循环。s用来累加上爬距离U的值。h是用来累加每分钟蠕虫爬出井的时间。在while语句中嵌套了if语句。如果实际爬行距离s依旧小于井深U,将上爬距离减去下滑距离,赋值给s,再给h加上下滑所需要的一分钟时间。
  • 我在for循环中嵌套if-else语句。奇偶数分开计算然后进行循环。在第偶数分钟时,蠕虫实际爬的距离即为上爬的距离减去下滑的距离;在第奇数分钟时,蠕虫实际爬的距离即为上爬的距离。在循环中不断累积每分钟的实际爬行距离,然后运用了if语句,如果实际爬行距离大于或等于井深,则跳出循环,输出蠕虫爬出井的时间。

三、学习总结

3.1 学习进度条

这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 6小时 29行 对C语言、markdown语法,编程有了初步的认识 对编程一窍不通,只会照着书上打
第二周 8小时 19行 学会如何提问,安装MinGW-w64并用它编译C程序 markdown语法掌握不熟练
第三周 10小时 96行 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 对编程中各大语句的运用不熟悉
第四周 13小时 93行 for循环语句实现指定次数的循环程序设计 运用for语句时经常犯很多错误
第五周 10小时 161行 用C语言编写程序 对编写函数和调用函数还有很多不熟悉
第六周 12小时 168行 多分支结构、字符型数据类型和逻辑运算符 对各运算符的优先级和结合性,多分支结构不熟悉
第七周 10小时 185行 熟悉多分支结构switch语句的使用 面对比较复杂的题时难以解决
第八周 8小时 159行 使用while和do-while结构解决问题 不知道如何写伪代码

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

  • 在课堂上,老师会用几乎一节课的时间来讲上次作业的PTA,剩下一节课时间讲新的知识点。预习是非常重要的。当我提前预习过这个知识点,在课堂上听老师讲时就能跟着老师的节奏来,不会出现老师一讲一个新知识点就一脸懵逼的情况,在做PTA时也会更加有效率。在实践课中,两节课的时间完成一道调试程序的题,一道编程题,一道改错题,对我而言难度比较大,特别是写改错题进行调试时,不知道如何下手。而且经常会犯一些简单的小错误,导致在同一个环节做无数遍。实践课反映了我课后学习的时间不够充分,不够细心。合理安排课后学习时间,课前新知识预习是我应该督促自己去做的。
原文地址:https://www.cnblogs.com/shenxinglou/p/11870106.html