C语言I博客作业06
作业头
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-4 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11559 |
我在这个课程的目标是 | 熟练掌握swicth,同时运用多种分支结构解决相应的问题 |
这个作业在那个具体方面帮助我实现目标 | 学习了新的分支语句switch |
参考文献 | B站 百度《C语言程序与设计》 |
学号 | 20209043 |
1.PTA实验作业(20分/题)
1.1 题目名1 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
1.1.1数据处理:
数据表达:用了整型 Int 定义了year, month, day , days, i;
数据处理: 开始用了【for(i = 1; i < month; i++) {switch(i) { }}】for循环和switch的分支结构,目地是为了求天数之和,并将几个月份给的天数给表示出来。还用了if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))days += 29;else days += 28来判断是否为闰年;用了if和else的分支结构。
1.1.2实验代码截图
1.1.3 造测试数据:
输入数据 | 输出数据 | 说明 |
---|---|---|
2009/03/02 | 61 | 题目的样例数据 |
2000/03/02 | 62 | 题目的样例数据 |
2019/11/29 | 333 | 2019不是闰年,所以天数之和从一月到十一月 |
2020/11/29 | 334 | 2020是闰年,所以天数比去年多一天 |
1.1.4 PTA提交列表及说明
编译错误:原因很简单,提交之前我认真检查流程的顺序,没有错误之后才提交的,结果编译错误,心想肯定是细节出错了,很快,if()括号里的等于要写两个!!!
编译正确:改了之后就对了,我现在真正的发现,pta的编译错误并不是你的流程控制错误,而是一般细节错误。这次pta的第二题才是真的离谱,一个“!”竟然要分中英文,天天纠这种错误!!!
1.2 题目名1:前天是哪一天
本题目要求读入年、月、日,然后判断前天日期。
1.2.1数据处理
数据表达:用了整型int year ,month ,day , d 来定义这四个变量。
数据处理:表达式switch(month-1){}来表示12个月份的天数,if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) d= 29;else d= 28; }用来判断闰年。之后有用了三个if来判断特殊情况
if(day>2){day=day-2;}
if(day<=2 && month>1){ month-=1;day=d-day%2;}
if(day<=2 && month==1){year-=1;month=12;day=31+2-day;}从而计算前天
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2020 11 29 | 2020-11-27 | 满足三个if条件的第一个if(day>2) |
2020 11 2 | 2020-10-30 | 满足三个if条件的第二个if(day<=2 && month>1) |
2020 1 1 | 2019-12-30 | 满足三个if条件的第三个if(day<=2 && month==1) |
2020 3 1 | 2020-2-28 | 满足闰年和第二个if |
1.2.4 PTA提交列表及说明
部分正确:开始时,我想用特殊情况的这个表达day=d-day%2;用于第三个,结果来了个部分正确,改了好久都是部分正确,我就对题目给的每个数据进行测试,结果测试2020-1-2的时候,测试结果为2019-12-0这个结果,所以错误所在最后一个的判断上,我就改成了day=31+2-day;这个表达式。
答案正确:写成这个表达式之后就对了。
2.代码互评(5分)
同学代码截图
同学1:
——————————————————————————————————————————
同学2:
自己代码截图
比较:
一:同学1:运用了以后所学习的数组知识,查阅之后发现数组=类型说明符+数组名[常量表达式];数组正好可以使每个月份简单的表示,让代码变得简单。通过观看别人的代码,一是可以学习别人好的地方,而是可以发现你的代码优越在哪里,差距在哪里。弥补自己学习上的不足。
二:同学2:她通过把前面的几个月份的天数相加在一起,虽然很容易被理解,但是我不喜欢自己去算而是让计算去算,学习计算机目的就是让它帮助你去算,而不是自己去算,如果算数很大,不会被算死。优点就是容易,不费脑。
三:自己在switch上的巧妙排序让我觉得这题我的成功之处。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行学到的知识点 | 简介目前比较迷惑的问题 |
---|---|---|---|
11/1——11/8 | 15h | pow(),sqrt() | 函数数据控制输出 |
11/9——11/15 | 17h | 函数 | 函数的被动定义 |
11/16——11/22 | 18.5h | 分支结构 | 字节变量的使用 |
11/23——11/29 | 14h | switch的分支结构 | 无 |
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
答: