| 这个作业属于哪个课程 | C语言程序设计II |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11555 |
| 我在这个课程的目标是 | 熟悉多分支结构switch语句的使用,学习他人优秀的解题方法 |
| 这个作业在那个具体方面帮助我实现目标 | 做PTA上的作业,互评作业 |
| 参考文献 | C语言程序设计 |
1.PTA实验作业(20分/题)

1.1 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
1.1.1数据处理
数据表达:所用变量:year,month,day,a,b,c,y;这些变量的值的来源:year,month,day是用户输入的值;a,b,c分别是year/4,year/100,year/400取余的值,y是根据a,b,c,month的
值以及表达式得出来的;类型:整型(int)。
数据处理:数据用到的表达式:a = year % 4,b = year % 100,c = year % 400,:y = day,y = 31 + day,y = 60 + day,y = 91 + day,y = 121 + day,y = 152 + day,y =
182 + day,y = 213 + day,y = 244 + day,y = 274 + day,case 11:y = 305 + day,y = 335 + day,y = day,y = 31 + day,y = 59 + day,y = 90 + day,y = 120 + day,y
= 151 + day,y = 181 + day,y = 212 + day,y = 243 + day,y = 273 + day,y = 304 + day,y = 334 + day;流程结构:选择结构。
1.1.2实验代码截图

1.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 2009/03/02 | 61 | 该年年份能被4整除,不能被100和400整除 |
| 2000/03/02 | 62 | 该年年份能被4,100和400整除 |
| 2006/05/05 | 125 | 该年年份不能被4,100和400整除 |
| 2020/11/25 | 330 | 该年年份能被4整除,不能被100和400整除 |
| 1900/06/09 | 160 | 该年年份能被4和100整除,不能被400整除 |
1.1.4 PTA提交列表及说明

1.编译错误:switch语句中case后的符号错误;
解决办法:刚开始还没发现,仔细看书上的switch语句后发现case后的符号不是‘ ; ’而是‘ : ’,改完后又出现了部分错误;
2.部分错误:if语句的判断符号错误;
解决办法:仔细检查一遍后,发现在判断相等时,将‘==’写成了‘=’,后将其改正过来了,提交后答案显示正确。
1.2 多分支表达-倍数问题
1.2.1 数据处理
数据表达:所用变量:A,x,y,z,a;这些变量的值的来源:A是用户输入的值;x,y,z分别是A/3,A/5,A/15取余的值;类型:整型(int)。
数据处理:数据用到的表达式:x = A % 3,y = A % 5,z = A % 15;流程结构:选择结构。
1.2.2 实验代码截图

1.2.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 18 | 3 | 该数是3的倍数但不是5的倍数 |
| 20 | 2 | 该数是5的倍数但不是的倍数 |
| 13 | 13 | 该数小于15,且既不是3的倍数也不是5的倍数 |
| 26 | 11 | 该数大于15,且既不是3的倍数也不是5的倍数 |
| -30 | (没有任何输出) | 该数不是正整数,且既是3的倍数又是5的倍数 |
1.2.4 PTA提交列表及说明

1.部分错误:在if语句中多了符号;
解决办法:这个错误找了很久,最后却发现是一个很小的错误,if后的括号里多打了引号,当时因为那个括号里的和其他括号里的颜色标记不同就感觉奇怪,看了很久后才发现了问题,
改正后,显示答案正确。
2.代码互评(5分)
尹志成同学代码截图

郑九龙同学代码截图

自己代码截图

1.尹志成同学解题时先是运用switch语句,再运用if-else语句来解题的,使后半部分简便了许多,而我的大部分使用switch语句,表达式太多;
2.郑九龙同学运用了if-else语句来解题,他所写的使代码简便了许多,在考虑问题方面也更全面,我所写的明显长了一大串;
3.我运用了if-else语句和switch语句来解题的,我所写的有一部分再改变一下或换一种方式解题应该可以更简便些。
3.学习总结(15分)
3.1 学习进度条(5分)
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
|---|---|---|---|---|
| 第三周 | 4天 | 156 | for语句 | 在综合表达式中,不知道为什么不能用"[ ]" |
| 第四周 | 2天 | 169 | 函数的定义和调用 | 函数的定义和调用的格式不太懂 |
| 第五周 | 3天 | 192 | 分支结构if-else语句和字符型(char) | 有同学作业中运用到的没学过的知识不太理解 |
| 第六周 | 3天 | 278 | 选择结构中的switch语句 | 解题时不能很快判断出用if-else语句好些还是用switch语句好些 |
3.2 累积代码行和博客字数(5分)
| 时间 | 博客字数 | 代码行数 |
|---|---|---|
| 第一周 | 638 | 12 |
| 第二周 | 562 | 97 |
| 第三周 | 2058 | 156 |
| 第四周 | 1737 | 169 |
| 第五周 | 2520 | 192 |
| 第六周 | 1780 | 278 |

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

3.3.2 学习体会
1、这周学了选择结构中的switch语句,刚开始在做题的时候使用时,容易将case后的冒号打成分号;
2、在写代码的时候,有几个地方容易出错,比如在判断时将==打成= ;
3、在之后的学习过程中,吸取之前出现的错误,多练多想,多学习他人优秀的解题方法。