问题 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9934 |
我在这个课程的目标是 | 熟练掌握各大语句,运算符,函数,尝试用简单的代码解决复杂的问题 |
这个作业在那个具体方面帮助我实现目标 | 熟悉多分支结构switch语句的使用 |
参考文献 | 《C语言程序设计》 |
一、PTA实验作业
1.1统计学生成绩
题目内容描述 :本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式 :
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
1.1.1数据处理
数据表达:先用int定义了两个整型变量n、grade。n代表学生人数,grade代表学生的百分制成绩。又用int定义了五个整型变量A、B、C、D、E,它们代表学生对应的五分制成绩。
数据处理:置A、B、C、D、E为0.调用scanf()函数输入n。在for语句中嵌套一个switch语句,将switch语句的表达式设置为grade/10,编写了11个case常量表达式及其语句段,并且switch语句所有语句段的末尾都使用了break。for语句与switch语句中的各个语句段结合可以实现统计A、B、C、D、E对应的五分制成绩的人数。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
7 77 54 92 73 60 65 69 |
1 0 2 3 1 | 示例 |
6 91 93 94 96 97 98 |
6 0 0 0 0 | 成绩全为A |
5 68 78 88 98 100 |
2 1 1 1 0 | 成绩在E以上 |
1 66 |
0 0 0 1 0 | 统计人数较少 |
1.1.4 PTA提交列表及说明
编译错误:忘记用int定义整型变量i,在for语句中int i=1解决问题.
编译错误:在switch的表达式后多打了个分号。
1.2计算天数
题目内容描述 :本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式 :
在一行输出日期是该年中的第几天。
1.2.1 数据处理
数据表达:用int定义了整型变量year,month,day,number。year表示输入的年份,month表示月份,day表示第几天,number表示输出日期是该年中的第几天。
数据处理:调用scanf()函数输入year,month,day。(此处格式控制字符串为%4d/%2d/%2d,year取成四位数正整数,month和day取成两位数正整数)。运用了if—else语句,判断是否为闰年。在if-else语句中嵌套switch语句实现多分支选择。switch语句的表达式设置为month。根据闰年和平年的各个月份将输入日期的月份转化成具体天数。跳出switch语句后需执行number=number+day才能输出该日期是该年中的第几天。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2009/03/02 | 61 | 示例 |
2000/03/02 | 62 | 示例 |
2048/06/06 | 158 | 闰年 |
2003/03/18 | 77 | 非闰年 |
1980/08/12 | 225 | 19世纪的年份 |
2019/11/11 | 315 | 今年的双11 |
1.2.4 PTA提交列表及说明
部分正确:第二个switch语句中语句段3中的number赋值错误。
二、代码互评
2.1题目截图
2.1.1同学代码截图
2.1.2自己代码截图
相同之处:1.因为该程序是用来计算某年某月某日是该年中的第几天,所以都用int定义了整型变量year,month,day。分别表示输入的年份,月份,第几天。
2.都用到switch语句实现多分支选择。
不同之处:1.我的代码比较繁杂,在if-else语句中嵌套switch语句实现多分支选择,并且使用了两次。她在设置case2的语句段时使用到了if语句判断是否为闰年,如果是闰年天数叠加29,否则天数叠加28.
2.我将switch语句的表达式设置为month,根据闰年和平年的各个月份将输入日期的月份转化成具体天数。跳出switch语句后需执行number=number+day才能输出该日期是该年中的第几天,并且switch语句所有语句段的末尾都使用了break。她将switch语句的表达式设置为month-1,switch语句所有语句段的末尾都没有使用break,这样能执行多个语句段,通过天数的累加计算出该日期是该年中的第几天。
2.2题目截图
2.2.1同学代码截图
2.2.2自己代码截图
相同之处:用int定义了五个整型变量A、B、C、D、E。置A、B、C、D、E为0.
不同之处:我分别写出了11个case常量表达式,没有使用defalt。她使用五个case常量表达式,使用defalut来累加输入成绩为E的人数,比较简洁。
三、学习总结
3.1 学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 6小时 | 29行 | 对C语言、markdown语法,编程有了初步的认识 | 对编程一窍不通,只会照着书上打 |
第二周 | 8小时 | 19行 | 学会如何提问,安装MinGW-w64并用它编译C程序 | markdown语法掌握不熟练 |
第三周 | 10小时 | 96行 | 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 | 对编程中各大语句的运用不熟悉 |
第四周 | 13小时 | 93行 | for循环语句实现指定次数的循环程序设计 | 运用for语句时经常犯很多错误 |
第五周 | 10小时 | 161行 | 用C语言编写程序 | 对编写函数和调用函数还有很多不熟悉 |
第六周 | 12小时 | 168行 | 多分支结构、字符型数据类型和逻辑运算符 | 对各运算符的优先级和结合性,多分支结构不熟悉 |
第七周 | 10小时 | 185行 | 熟悉多分支结构switch语句的使用 | 面对比较复杂的题时难以解决 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
这周新学习了switch语句,并且所有的PTA都必须用到switch语句。这时候学习的方法就非常重要了。疑问通常会比较多,因此仅依靠一种解决问题的途径是行不通的。例如,在课堂上,我对switch有了初步的理解。但如果让我仅靠课堂上的知识来做PTA是远远不够的。我选择先从书中查阅资料,在书本中,我了解到switch语句一般会使用到的三种方法:1.在switch语句的每个语句段中都使用break语句2.在switch语句中不使用break语句3.在switch语句的某些语句段中使用break语句.并结合书中的例子理解,这时我能解决简单甚至稍微有点复杂的题目了。当解决复杂的问题时,有些表达还不清楚时这时候上网查阅相关语句如何表达和询问同学都是很好的方法。在进行造测试数据的统计时,有一题的输入格式有两行,发现直接在编辑中使用回车键换行会导致表格混乱,搜索如何使用markdown语法在表格中换行就可以解决问题啦。