C语言I博客作业07
一、本周教学内容&目标
第3章 分支结构 3.3 使学生熟悉多分支结构switch语句的使用。
二、本周作业
问题 | 答案 |
---|---|
这个作业属于哪个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9934 |
我在这个课程的目标是 | 掌握并熟练用代码解决实际问题 |
这个作业在哪个具体方面帮助我实现目标 | 重复写代码,运用多种语句,例如lf-else语句,for语句,switch语句 |
参考文献 | C语言程序设计I和习题实验指导书,QQ浏览器 |
三、本周作业
1.PTA实验作业
请在此处列出自己的排名图片
1.1题目
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。 ```
* 1.1.1 数据处理
```数据表达:首先对年月日分别定义为整型变量,因题目后面需要求和,故要定义整型求和变量,再是赋值求和sum=0,利用各语句循环,最后输出。 ```
```数据处理:该题运用了三种重要语句,for语句、if语句、switch语句,例如 i=1;i<month;i++、case 3:sum=sum+31;break。其次重要的是关系运算符和逻辑运算符,例如(year%4==0)&&(year%100!=0)||(year%400==0),最后输出。 ```
* 1.1.2 实验代码截图
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108163901446-224077064.png)
* 1.1.3 造测试数据
|输入数据|输出数据|说明|
|:--|:--|:--|
|2009/03/02|61|不能被4整除,也不能被100整除,所以不是闰年|
|2000/08/05|218|既能被4整除,也能被100整除,所以也不是闰年|
|2002/02/19|50|不能被4整除,也不能被100整除,所以不是闰年|
|2018/07/03|184|不能被4整除,也不能被100整除,所以不是闰年|
|2016/05/04|125|<font color="red">能被4整除,但不能被100整除,所以是闰年</font>|。
* 1.1.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108171254562-1927521519.png)
```说明:a1 编译错误:switch后面不需要打大括号,将大括号去掉。 a2 答案错误:知道i=1,就以为month大于等于1,实则不要等于1,将等于去掉。 ```
####1.2题目
```本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。 ```
* 1.2.1 数据处理
```数据表达:首先分别定义题目中给出的A,B,C,D,E,均为整型变量,然后再整型定义变量正整数N和分数score和求和sum,其次是对A,B,C,D,E分别赋值0,最后在for语句和switch语句之后输出。 ```
```数据处理:此题灵活运用了for语句和switch语句,例如for(i=1;i<=n;i++)和switch(sum),其中for循环语句中利用了表达式,即sum=score/10,最后运用switch语句依次分情况break,最后输出。 ```
* 1.2.2 实验代码截图
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108163956638-1985385965.png)
* 1.2.3 造测试数据
|输入数据|输出数据|说明|
|:--|:--|:--|
|4 65 74 44 99|1 0 1 1 1|五分制成绩为A,C,D,E的人数均为1人|
|5 77 89 91 65 79|1 1 2 1 0|五分制成绩为A,B,D的人数均为1人,而得C的有2人|
|6 78 55 76 89 91 71|1 1 3 0 1|五分制成绩为A,B,E的人数均为1人,而得C的有3人|
| 7 77 54 92 73 60 65 69|1 0 2 3 1|五分制成绩为A,D的人数均为1人,C的人数为两人,E的人数为3人|
|8 65 74 83 92 81 67 84 74|1 3 2 2 0|五分制成绩为A的只有1人,C,D均为2人,B为3人|
* 1.2.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108180402785-1807559104.png)
```说明: a1 部分错误:忘在for循环语句中加大括号,加上大括号 a2 编译错误:以第一个题目出发,当时switch后面并没有打大括号,而此题没有打大括号显示的是编译错误,应把大括号加起来。 ```
###2.代码互评
####2.1模板一
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108190208866-1965410023.png)
```差异:1.定义变量的字母差异,该同学是用单字母直接替代年月日,而我是用年月日的单词替代,比较好一点,因为这样有利于我们的英语学习。 2.我比这位同学多定义了i,从而多出了一个for循环语句,复杂化了。 3.后面表示sum,我是用sum+day的形式,而该同学是总数形式,我觉得我的代码更加易懂。 ```
####2.2模板二
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108191547833-110988485.png)
```差异:1.前面定义的变量基本上是一样的,但他分开了两部分,而我是一起一次性定义。 2.我比他多定义了一个sum,而他是直接用score/10来表示。 3.他的switch语句是从a到e,而我是e到a,并且对于e的条件显得非常复杂,而他直接用default,简单化了。 ```
###3.学习总结
####3.1 学习进度条
|周/日期|这周所花的时间|代码行|学到的知识点简介|目前比较迷惑的问题|
|:--|:--|:--|:--|:--|
|第一周|4/h|150|学会了输入输出字符|如何去定义和运用Markdown格式|
|第二周|12/h|300|知道定义变量和表格的制作及Markdown格式的运用|运算符怎么输入|
|第三周|15/h|396|学会了折线图的制作和lf-else语句的运用及多种运算符的使用|怎样才能使输入代码更加简便,有没有惯用的|
|第四周|13/h|350|for的循环结构|各种情况下各种变量的灵活运用|
|第五周|12/h|370|用代码输入生成乘方表和阶乘表|不知道该定义多少个量|
|第六周|16/h|400|字符型数据类型和逻辑与关系运算符|做了PTA上面的几个编程题,感觉有的题目自己看不懂,不知道如何写表达式|
|第七周|9/h|310|多支结构switch语句|不知道该对谁应用switch语句,题目意思转化成代码不知如何表达|
####3.2 累积代码行和博客字
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108111612044-1641130606.png)
####3.3 学习内容总结和感悟
#####3.3.1学习内容总结
![](https://img2018.cnblogs.com/blog/1806788/201911/1806788-20191108160202635-433183503.png)
#####3.3.2学习体会
我觉得在解决问题上面,一个清晰的思路是非常重要的,就拿这次作业代码来讲,看起来是很容易看懂的,写起来也没有之前的那么吃力,但一开始你就要有一个清晰的思路,一步一步解决问题,在这里,可能有好多同学说自己题目看不懂,我就是,但只要自己认真看,认真省,一句一句去剖析题目,相信最后能够看懂题目,并利用所学知识将题目解答出来。