贺姣h

导航

 
这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11552
我在这个课程的目标是 学会并熟练多分支结构switch语句的使用
这个作业在那个具体方面帮助我实现目标 复习之前学过的内容,掌握switch语句
参考文献 C语言程序设计,C Primer Plus(第六版),百度

1.PTA实验作业

从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:

1.1(7-4)前天是哪天

题目内容描述:本题目要求读入年、月、日,然后判断前天日期。

1.1.1数据处理

·数据处理:用了变量y,m,d;都为整型变量。y表示输入的年,m表示输入的月,d表示输入的日。
·数据表达:用了if语句的嵌套,switch语句,顺序结构。表达式:关系表达式,逻辑表达式。

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
2020 10 16 2020-10-14 样例 2020年10月16日前天为2020年10月14日
2020 1 2 2019-12-31 2020年1月2日前天为2019年12月31日
2020 3 2 2019-2-29 2020年3月2日前天为2019年2月29日
2019 3 2 2019-2-28 2019年3月2日前天为2019年2月28日
2018 12 3 2018-12-1 2018年12月3日前天为2018年12月1日

1.1.4 PTA提交列表及说明

提交列表说明:
·编译错误:思路不清晰,没有理清楚题目,逻辑出现错误。
·解决办法:将题目反复认真理了几遍,将要用到的语句方法,变量等理清,将之前的代码删了重写。
·编译错误:忽略了闰年的情况,闰年2月与平年2月天数不一样。
·解决办法:用if-else语句加入了闰年的情况。
·编译错误:没有scanf()输入函数,加上后还是编译错误,输的的结果有一长串数字。
·解决办法:scanf中格式控制说明%d之间改为空格,我用了-。

1.2 (7-5)多分支表达-倍数问题

题目内容描述:键盘输入1个正的整数A,如果A是3的倍数但不是5的倍数,则输出A除以5的余数。如果A是5的倍数但是不是3的倍数,则输出A除以3的余数。如果A既不是5的倍数但也不是3的倍数,输出A除以15的余数。

1.2.1 数据处理

·数据处理:用了变量A,n;都为整型变量。A表示输入的正整数,N表示输出的值。
·数据表达:用了if语句的嵌套,顺序结构。表达式:关系表达式,逻辑表达式。

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
18 3 样例 A是3的倍数但不是5的倍数,输出A除以5的余数为3
6 1 A是3的倍数但不是5的倍数,输出A除以5的余数为1
20 2 A是5的倍数但是不是3的倍数,输出A除以3的余数为2
16 1 A既不是5的倍数但也不是3的倍数,输出A除以15的余数为1
30 无输出 A既是5的倍数但也是3的倍数,无法输出

1.2.4 PTA提交列表及说明

提交列表说明:
·部分正确:没有考虑A<=0的情况,题目中是输入一个正整数。
·解决办法:运用if语句加入A<=0的情况。
·部分正确:A<=0的情况没有将函数返回0。
·解决办法:在A<=0的后面加上return 0;

2.代码互评

同学代码截图:
陈一航同学的代码:


刘涛同学代码:

自己代码截图:

不同之处:
与第一位同学的代码比:
1.我们习惯定义的变量不同,同学定义的是y,m,a,而我定义了y,m,d,i,n,z;
2.该同学运用了if-else分支,将闰年与平年分别用switch语句表示,来计算某年某月某日是该年中的第几天。而我只用了一个switch语句,用if-else语句表示闰年与平年的2月,运用了for循环,
计算该日期是该年中的第几天。我的代码比同学的要简洁点,代码行数少,更清晰容易懂。
与第二位同学的代码比:
1.我们的思路大致相同,我们习惯定义的变量不同,同学定义的是整型变量year,s,d,z,f,字符型op1,op2;而我是定义了y,m,d,i,n,z;
2.该同学用if-else语句来表示闰年与平年的2月,我比他多用了一个for循环,我认为有必要写for循环,能更清楚。
3.在switch语句中我们的case后面语句不一样,他是用算的总日,我是先算出之前天数在加上该月日期。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第八周/10.19~10.25 15小时 150行 在屏幕上显示Hello World!学会了怎样用PTA进行写代码作业,学会了markdowm语法
第九周/10.26~11.1 12 小时 350行 求华氏温度对应的摄氏温度 常量,变量和数据类型 知道以后要怎样向别人提问 变量问题,输入输出格式
第十周/11.2~11.8 20小时 460行 for循环,if else语句 对于&的用法不了解,输出时保留几位小数
第十一周/11.9~11.15 17小时 440行 生成乘方表和阶乘表,对函数定义和调用,思维导图 目前不太熟练,调用函数不太理解
第十二周/11.16~11.22 19小时 490行 多分支结构,字符型数据类型和逻辑运算符 思路容易乱,答案想不全面,逻辑运算符的功能还不是很懂
第十三周/11.23~11.29 16小时 470行 多分支结构switch语句 什么时候使用switch语句使程序更简单

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

本周学习了switch语句,有些题用if语句比较繁琐而用switch语句会简洁。switch语句中常量表达式的值与case后面语句相符则执行后面的语句,break跳出switch语句;如果常量表达式的值与case后面语句不相符就执行default中语句,default可省略,当表达式的值与任何一个常量表达式的值不相等时就什么都不执行。学习的知识点越来越多,意识到课前预习很重要,提前预习然后带着问题去听老师讲会能够更好的理解,在课后要及时复习,包括之前所学的知识点,不多练就生疏了。在打代码之前一定要先仔细审题,将思路理清楚再去打代码不然会出现很多的错误,一定要仔细点,这次作业就是这样,看到题目思路没理清就开始打,然后出现很多错误。现在打代码没有之前那么困难了但仍然不太熟练,要在之后的学习中花更多的时间,要更努力。

posted on 2020-11-25 23:05  贺姣h  阅读(156)  评论(10编辑  收藏  举报