|这个作业属于那个课程|C语言程序设计II| |----------|----------| |这个作业要求在哪里|作业要求| |我在这个课程的目标是|将swith语句运用好,学习透| |这个作业在那个具体方面帮助我实现目标|在通过解决PTA的习题中的判断switch语句的条件中逐渐帮助我实现目标| |参考文献|集美大学林丽老师| #1.PTA实验作业 ##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, d;本来想打day的,后面输入比较麻烦就简化成了d。 数据处理:首先用到了个大的if-else分支结构来将闰年和平年分开讨论,然后在其中分别进行switch语句的嵌入,而且在语句段中我就直接printf了 ###伪代码 #include"stdio.h" int main (void) { 定义整形变量 年,月,日; 输入年(四位)/月(两位)/日(两位); 如果(满足闰年的条件) { switch(月){ case 1:输出("%d\n",d)(闰年第一个月的天数);break; case 2:输出("%d\n",31d)(闰年第二个月的天数);break; case 3:输出("%d\n",60d)(闰年第三个月的天数);break; ...... case 12:输出("%d\n",335d)(闰年第十二个月的天数);break; } } else(非闰年) { switch(月){ case 1:输出("%d\n",d)(非闰年第一个月的天数);break; case 2:输出("%d\n",31d)(非闰年年第二个月的天数);break; case 3:输出("%d\n",59d)(非闰年第三个月的天数);break; ...... case 12:输出("%d\n",334d)(非闰年第十二个月的天数);break; } } return 0; }
###1.1.2实验代码截图
###1.1.3 造测试数据 |输入数据|输出数据|说明| |----------|----------|----------| |2019/06/18|169|非闰年跨2月的数| |2004/o8/18|231|普通闰年跨2月的数| |2019/02/08|39|非闰年不跨2月的数| |2019/02/08|39|普通闰年不跨2月的数| |2000/04/26|117|被100和400整除的闰年跨2月的数| ###1.1.4 PTA提交列表及说明
- 部分正确:是由于将题中判别闰年的条件看错了,看成了能被100整除但不能被4整除,导致漏过了部分闰年。
- 编译错误:因为首先在vs上面编译的,所以未将scanf_s调为scanf。 还有下面多了个大括号,可能是截图时不小心按到了 ##1.2统计学生成绩 本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则: 大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于等于60为D; 小于60为E。 输入格式: 输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。 输出格式: 在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。 输入样例: 7 77 54 92 73 60 65 69 输出样例: 1 0 2 3 1 ###伪代码 #include"stdio.h" int main(void) { 定义整形变量N, m, d, i, A=0, B=0, C=0, D=0, E=0; scanf("%d\n", &N);输出N i=1且<=运用循环语句累加; { scanf("%d", &m);输出m d = m/10;m除以10计算出五分制的首数 switch (d) { case 10: case 9: A的个数累加; break; case 8: B的个数累加; break; case 7: C的个数累加; break; case 6: D的个数累加; break; case 5:case 4:case 3:case 2:case 1 :case 0: E的个数累加; break; } } 分别输出A B C D E的个数 return 0; }
###1.2.1 数据处理 数据表达:定义了整型变量 N, m, d, i, A=0, B=0, C=0, D=0, E=0; 数据处理:用到了循环语句for (i = 1; i ⇐ N; i++),以及switch多分支结构,其中在其语句段中是直接将变量累加起来的,到了最后才输出五分制成绩的人数。 ###1.2.2实验代码截图
###1.1.3 造测试数据 |输入数据|输出数据|说明| |----------|----------|----------| |6\ 68 68 89 98 78 87|1 2 1 2 0|其中一个A,两个B,一个C,两个D,0个E| |5\28 99 61 59 60|1 0 0 2 2|1个A 0个B 0个C 2个D 2个E| |4\29 42 18 55 |0 0 0 0 4|0个A 0个B 0个C 0个D 4个E| ###1.1.4 PTA提交列表及说明
编译错误:两次编译错误的原因都是没有在编译器上写的scanf_s改为scanf。 #2.代码互评 ##同学代码截图
##自己代码截图
首先这位同学的代码写的十分简短,给人一种很舒服的感觉,而我的就显得比较繁琐。
她的前半部分的代码与我后半部分的平年代码差不多,而她的后面则是直接说如果满足闰年的条件切月份大于2的话就直接在日期上加上一天,值得借鉴,很聪明!
##同学代码截图 ##自己代码截图
- 最大的不同之处就是这位同学用到了我们还为学习的数组,虽然在简便程度上并不会很容易的看出谁的更好,但在他提前学习并运用新知识这方面就足以让我拿来互评与借鉴了
- 然后可以看出他写了两条for语句,不过并没有增添什么麻烦,其实感觉也差不多,现在我还不怎么懂数组,emm各有各的好吧
#3.学习总结 ##3.1 学习进度条 ##3.2 累积代码行和博客字数
##3.3 学习内容总结和感悟 ###3.3.1 学习内容总结
###3.3.2 学习体会
- 在本周的学习里,我慢慢了解并会运用多分支结构switch语句了,虽然感觉用起来还不是很熟,但我会再用心学的。时间过得真的挺快的,进入大学已经两三个月了,但在c语言的学习上还是有点吃力,可能最开始几个星期的基础没打牢吧,不过这么可本来就是要多靠自学的,每次说多出些时间来好好把之前的基础知识再好好学一遍,但每次都落空了,离期末也不是很远了,真的要好好把基础巩固牢了,再好好的往后学!加油啊,相信自己!