| 问题 | 答案 |
|---|---|
| 这个作业属于那个课程 | C语言程序设计II |
| 这个作业要求在哪里 | C语言I博客作业06 |
| 我在这个课程的目标是 | 熟练掌握C语言 |
| 这个作业在哪个具体方面帮助我实现目标 | 深化了以前学习的语句,更加了解if-else语句的用法 |
| 参考文献 | Markdown基本语法 |
一.PTA实验作业
图
1计算火车运行时间
题目内容描述:本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
(1)数据处理
数据表达:用了整形变量n,m,a,b,n,m是用户传入的参数,a和b来保存输出的时间。 数据处理:用了if-else语句,用了表达式a=n%100-m%100和b=n/100-m/100。
(2)实验代码截图

(3)造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 0101 0200 | 00:59 | 分钟需要借位 |
| 0100 0200 | 00:60 | 边界测试 |
| 1200 1401 | 02:01 | 读入和输出均有补0 |
(4)PTA提交列表及说明

提交列表说明
1.部分正确:未考虑分钟需要借位问题,未做改动 2.部分正确:未考虑分钟需要借位问题,未做改动 3.部分正确:未考虑分钟需要借位问题,未做改动 4.部分正确:未考虑分钟需要借位问题,将变量a分为大于0和小于0 5.部分正确:,未考虑a=0,将a>0改为a>=0
2. 输出闰年
题目内容描述输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例1:
2048
输出样例1:
2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048
输入样例2:
2000
输出样例2:
Invalid year!
(1)数据处理
数据表达:用了整形变量Y,i,o,,Y是用户传入的参数,a来保存输出的年份,i用来进行for循环。 数据处理:用了if-else语句,用了表达式i<=((Y-2000)/4-Y/2100),用来循环出符合条件的每一个年份。
(2)实验代码截图

(3)造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 2012 | 2004,2008.2012 | 正常的21世纪年份,正好截止到某闰年 |
| 2000 | Invalid year! | 小于2001 非21世纪的年份 |
| 2011 | 2004,2008 | 21世纪内的年份 |
| 2500 | Invalid year! | 超过21世纪上界的年份 |
| 2002 | None | 没有闰年 |
(4)PTA提交列表及说明

提交列表说明
1.部分正确:小于2001 非21世纪的年份,21世纪内的年份,超过21世纪上界的年份,没有闰年,错误。if表达式的语句写的(2004<=Y<2100)而if里一下子只能判断一半边,后改为2004<=Y&&Y<2101。
2.部分正确:小于2001 非21世纪的年份,21世纪内的年份,超过21世纪上界的年份,错误。(Y%100)这个表达式意味着当Y不能整除4时(Y%100的余数不等于0时)表达式为真,所以我将i<=((Y%100)/4-1)和i<=((Y%100)/4)改为i<=((Y-2000)/4-Y/2100)。
3.部分正确:小于2001 非21世纪的年份,超过21世纪上界的年份,错误。 printf("Invalid year"),忘记加感叹号,改为 printf("Invalid year!")后,答案正确。
二.代码互评
同学( 杨 宇 )代码:

同学(柏朝晖)代码:

自己代码:

比较
(1)1.2份代码第二行都加了int,而我的没有。(其实我只是忘记打int了,发现int不打也可以成功就没有码过了) (2)我使用了else,用了两个printf,而她们只用了一个printf。 (3)第二份的代码比我的代码行数少,使用了更少的空间。
三.学习总结
1.学习进度条
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
|---|---|---|---|---|
| 第四周/9.16~9.22 | 7小时 | 100行 | 在屏幕上显示Hello World! | 暂无 |
| 第五周/9.23~9.29 | 8小时 | 100行 | 求华氏温度对应的摄氏温度 | 暂无 |
| 第六周/9.30~10.6 | 30小时 | 300行 | 如何用 MinGW-w64 来编译C程序 | 暂无 |
| 第七周/10.7~10.13 | 24小时 | 400行 | 运用if语句完成各种数学程序 | 对于&&的用法不了解 |
| 第八周/10.14-10.20 | 24小时 | 400行 | 学会了for循环语句 | 暂无 |
| 第九周/10.21-10.28 | 24小时 | 400行 | 学会了如何去自定义一个函数 | 暂无 |
| 第十周/10.28-11.3 | 24小时 | 400行 | 学会了if-else语句的嵌入 | 对“(Y%100)这个表达式意味着当Y不能整除4时(Y%100的余数不等于0时)表达式为真”这句话不是很懂 |
2. 累积代码行和博客字数

3 .学习内容总结和感悟
(1)学习内容总结

(2) 学习体会

做这一次作业所用的时间比往常长了很多,主要是PTA上的题目是以往来最多的一次,做PTA时的心情如上图所示。
虽然总是错误让人很痛苦,但在做PTA的过程中我学到了更多的东西,逐渐掌握了函数的多分支,以及在分支结构中循环语句、if-else语句的嵌入 |。
希望慢慢的我做作业的速度越来越快吧。