C语言Ⅰ博客作业06
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11559 |
我在这个课程的目标是 | 学会用switch语句解决情况多样化问题 |
这个作业在哪个具体方面帮助我实现目标 | PTA上面的题目以及对代码的反思和总结 |
参考文献 | C语言程序设计 CSDN |
学号 | 20209058 |
1.PTA作业
1.1 前天是哪天
本题目要求读入年、月、日,然后判断前天日期
1.1.1 数据处理
数据表达:将年月日分别定义为整型year,month,date.
数据处理:运用switch和if语句将月份不同和date-2大于小于等于0的情况分隔开,再在这几种不同的情况里计算前天的值
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2020 10 16 | 2020-10-14 | date>2的情况 |
2020 1 1 | 2019-12-30 | date<2&&month=1 |
2020 3 1 | 2020-2-28 | day<2&&month=3 year为闰年 |
1.1.4 PTA提交列表及说明
1.部分正确:date<=2,month=1的时候显示答案错误,其他情况都显示正确
2.答案正确:在case 1的情况下,忘记加入year=year-1的语句,添加后就正确了
1.2 多分支表达-倍数问题
键盘输入1个正的整数A,如果A是3的倍数但不是5的倍数,则输出A除以5的余数。如果A是5的倍数但是不是3的倍数,则输出A除以3的余数。如果A既不是5的倍数但也不是3的倍数,输出A除以15的余数
1.2.1 数据处理
数据表达:定义一个整型A
数据处理:利用switch语句将A%3分成是否等于0这两种情况,再用if语句对A是否能被5整除做判断,在这几种不同的情况下输出相应的值
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
28 | 13 | 不是3的倍数也不是5的倍数 |
18 | 3 | 3的倍数但不是5的倍数 |
10 | 1 | 5的倍数但不是3的倍数 |
-1 | 非正整数 |
1.2.4 PTA提交列表及说明
1.编译错误:在if语句后的结尾处少了个声明语句}
2.答案正确:加上后就正确了,果然需要细心
2.代码互评
同学1代码
同学2代码
我的代码
1.第一位同学使用了数组存放每个月的天数,再用for循环将每个月的天数累加,直到前一个月,代码看起来既简洁又具有可读性
2.第二位同学先将是否是闰年分成两种情况,再分别使用switch,虽然看起来通俗易懂,把情况分得很细致,但完全可以再简化一下
3.我的是将if写在switch里面去判断闰年问题,虽然不显得啰嗦,但没用数组那般简洁明了
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|
11/23-11/29 | 8h | if和switch语句的嵌套使用 | switch里的常量表达式该怎么用才能把所有情况都分得到且显得简洁易懂 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2学习体会
- 语句能解决if的多分支结构的复杂性,且将所有情况例举出来显得简洁又通俗易懂
- 虽然switch很好用,但不一定是解决问题的最佳方法,我们不要局限于它,在解决多分支问题时,可尝试用多种方法去思考并解决它
- 学习c完全是靠自己,遇到一些不太懂的知识点或问题只能自己花时间去弄清楚,只有这样才会有进步