这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9885 |
我在这个课程的目标是 | 1.了解分支结构与它的作用.2.掌握if-else的嵌套结构.3.掌握字符型数据的类型及输入与输出.4.掌握逻辑运算. |
这个作业在那个具体方面帮助我实现目标 | 通过习题强化逻辑概念,尝试定义字符类型变量去了解字符型数据,尤其是if-else嵌套的知识运用. |
参考文献 | 《C primer Plus》《C语言程序设计》C语言计算时间差补0方法 |
1.PTA实验作业
1.1计算火车运行时间
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
1.1.1数据处理
数据表达:用了变量a,b,c,d,e,f,hh,mm.其中,a,b是通过直接输入得到的,c,d,e,f,hh,mm是通过赋值得到的.数据类型全为整型.
数据处理:a表示出发时间,b表示到达时间,c表示出发时间的小时数,d表示出发时间的分钟数,e表示到达时间的小时数,f表示到达时间的分钟数,hh表示起止时间的小时差,mm表示起止时间的分钟差.所用表达式用c=a/100;d=a%100;e=b/100;f=b%100;hh=e-c;mm=f-d;hh=e-c-2;mm=60-d+f;流程结构:用if-else语句判定f与d的大小,如果f>=d,hh=e-c;mm=f-d;然后通过printf()输出起止时间差.如果f<d,hh=e-c-1;mm=60-d+f;再通过printf()函数输出起止时间差.
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1201 1530 | 03:29 | 使用题目数据验证 |
823 1453 | 06:30 | 到达时间的分钟数大于出发时间的分钟数 |
950 1820 | 08.30 | 到达时间的分钟数小于出发时间的分钟数 |
1.1.4PTA提交列表及说明
1.编译错误:scanf()函数后面忘记加分号.
2.编译错误:由于借位考虑到小时数前面可能会有0,定义了一个字符型变量op,将op“0”但是我用了一对双引号括起来表示,正确的应该为op‘0’,
3.答案错误:因为我定义的字符型函数,我的输出函数为printf("%c%d:%d\n",op,hh,mm);与题目题意要求不符,答案错误.往下换种方式重新设置程序.
4.编译错误:使用if-else语句没有将内容括起来,导致if条件成立有点语句无法运行下去.
5.答案错误:我的输出没有借位,输出时没有补0,所写函数为printf("d:%d\n",hh,mm);应该改为printf("02d:%02d\n",hh,mm);
1.2输出闰年
输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
1.2.1数据处理
数据表达:用了变量i,n,count.其中,变量n通过直接输入得到的,变量i,count通过赋值得到的,类型全为整型.
数据处理:count记录闰年数目,n表示21世纪的某个截止年份.流程结构:先将0赋值个count作为初始值,输入n,使用if-else语句,if(n<=2000||n>2100),输出Invalid year!表示输入若非21世纪的年份,否则使用for循环语句,for(i=2001;i<=n;i++),再在for循环中使用if语句,如果该年年份能被4整除但不能被100整除、或者能被400整除,输出闰年并且换行记录,如果count=0,输出None,表示不存在任何闰年.
1.2.2实验代码截图
1.2.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2048 | 2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048 | 使用题目数据,且该数据为21世纪内 |
2000 | Invalid year! | 使用题目数据,输入若非21世纪的年份 |
2003 | None | 不存在任何闰年 |
2015 | 2004 2008 2012 | 使用非题目数据且该数据为21世纪内 |
2125 | Invalid year! | 使用非题目数据且该数据若非21世纪的年份 |
1.2.4PTA提交列表及说明
1.编译错误:我的for循环语句有错误,用逗号隔开,应该改为分号隔开,正确的语句是for(i=2001;i<=n;i++),但还是编译错误.
2.编译错误:犯了一个很不应该的错误,我将其中的一个count打成了conut,将conut修改完毕,运行程序,答案错误.
3.部分正确:count没有设置初始值,应该设置count=0;再进行下面的操作,将count=0添上答案正确.
2.代码互评
我的代码 | 同学代码 |
---|---|
![]() |
![]() |
代码差异: | |
1.定义变量不同,我定义的i,n,count,三个变量,他定义了n,m,count,sum四个变量,比我多定义了一个sum,我的变量i与他的变量m意义一致. | |
2.他使用sum变量,将m的值赋值给sum,我感觉有点多余. | |
3.他的逻辑能力更具有说服力,思路更加清晰. |
3.学习总结
3.1学习进度条
周数/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较疑惑的问题 |
---|---|---|---|---|
第三周(10/08--10/12) | 12个小时 | 300行左右 | 定义函数,if-else,for循环语句 | 输入与输出格式,空语句 |
第四周(10.14--10.18) | 15个小时 | 250行左右 | for循环语句,基础的循环程序设计,数据的输出宽度 | 数据的输出宽度概念不太清晰,表达式的定义,空语句的定义 |
第五周(10.23--10.26) | 12个小时 | 350行左右 | 自定义函数的声明与调用,break跳出循环,while()循环语句 | 自定义函数的应用 |
第六周(10.30--11.01) | 18个小时 | 500行左右 | if-else的嵌套,学习逻辑运算,条件语句,字符类型以及字符型数据的输入与输出 | 对字符型数据的输入与输出了解太少,缺乏练习,没有理解到getchar()字符输入函数与putchar()字符输出函数以及它们的运用 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
对于本次学习内容,我们学习了if-else语句的嵌套,强调的是一种事物的逻辑关系,以及学习了字符型变量的定义与输入输出,它不仅仅能使用之前学习的printf()与scanf()进行输出和输入,还可以用putchar()与getchar()进行输出与输入,这是一个新的知识点,此外,我们还要掌握进制数的转换,记下不同字符的ASCII码,同时要求进行ASCII码的计算,这需要我们课后花时间去巩固与深入学习,学习计算机科学与技术这门专业,我们应当要不断努力,坚持不懈,勇于面对难题,刻苦思考,这样才能有更大的进步与发展.当然,对于本次作业,我有着疑惑,我自认为编程与数学思想有着密不可分的联系,就比如说龟兔赛跑那一题,我完全运用的是数学的思想上去进行解答,将乌龟与兔子的比赛过程一一列举,会发现是一个周期性的过程,然后利用取余巧妙地解答,但我感觉太过于依赖于数学,我不知道是我对这次课程没有掌握还是怎么,导致我就只能凭借数学思想才能够解答.