一、表格
问题 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9935 |
我在这个课程的目标是 | 学习好C语言,熟练掌握编译代码的相关技巧,掌握C语言的精髓 |
这个作业在那个具体方面帮助我实现目标 | 学会多分支结构switch语句的使用 |
参考文献 | 百度,C语言程序设计 |
二、本周作业
1.PTA实验作业
1.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数据处理
数据表达:定义y,m,d,sum这些变量;并且把这些变量都定义为整型int
数据处理:先运用了switch语句预算出除了二月以外其它天数的可能性之和,在运用if-else的嵌套结构对闰年和不闰年情况进行讨论。
伪代码:
定义整型变量int y,m,d,sum;
输入scanf("%4d/%2d/%2d",&y,&m,&d);
运用switch进行分支选择;
if(y%4==0&&y%100!=0||y%400==0)
else进行讨论;
输出总天数
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2009/03/02 | 61 | 验证题目所给数据 |
2000/03/02 | 62 | 验证所给样例2 |
2020/12/31 | 366 | 验证闰年最后一天 |
2019/12/31 | 365 | 验证非闰年最后一天 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.部分错误:代码不能算出闰年和不闰年一月的天数。所以在if-else中增添算闰年和不闰年一月的语句,即“if(m==1) sum=d;”语句。
2.答案正确:。。。。
1.2 题目2 整数的分类处理
题目内容:
给定 N 个正整数,要求你从中得到下列三种计算结果:
·A1 = 能被 3 整除的最大整数
·A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
·A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
输入格式:
输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。
输出格式:
在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE。
输入样例 1:
8
5 8 7 6 9 1 3 10
输出样例 1:
9 3 6.5
输入样例 2:
8
15 18 7 6 9 1 3 10
输出样例 2:
18 3 NONE
1.2.1 数据处理
数据表达:定义变量N,K,A1,A2,i,y,m;A3,sum;把N,K,A1,A2,i,y,m定义为整型,而把A3,sum定义为浮点型。
数据处理:首先运用for语句进行循环,再运用switch语句进行多分支选择问题,最后再运用if-else语句进行A1,A2,A3输出语句的判断。
伪代码:
定义整型变量int N,K,A1=0,A2=0,i,y,m=0;
定义浮点型变量double A3=0,sum=0;
输入N;
for(i=1;i<=N;i++)
{
输入余数
运用switch
运用if-else进行判断输出
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
8 5 8 7 6 9 1 3 10 | 9 3 6.5 | 验证题目所给数据1 |
8 15 18 7 6 9 1 3 10 | 18 3 NONE | 验证题目所给数据2 |
5 1 2 3 7 0 | 3 2 2.0 | 随机验证一组数据 |
6 2 3 5 6 8 9 | 9 NONE 5.0 | 验证A2不存在对应输出NONE的情况 |
1.2.4 PTA提交列表及说明
提交列表说明:
1.编译错误:把int sum=0改成double sum=0。
2.编译错误:把int A2改成int A2=0;把printf("%d %d %.1f",A1,A2,A3)分别改写到if语句之后并且加上else进行输出,else printf("%d ",A1);A2,A3也诸如此类修改。
3.答案错误:把A2=A2+1改为A2++(在devc++上开始用A2=A2+1总是错误,但改成A2++就对了但在pta运行中就不对)
4.答案错误:把for(i=1;i<N;i++)改写为for(i=1;i<=N;i++)语句。
5.答案正确:。。。
2.代码互评
同学代码一:
自己代码一:
代码比较:
1.同学的代码是先算闰年的累计天数,再算不是闰年的累计天数;而自己的则是先通过算闰年和不闰年的共同部分,再用if-else算出二月到底是多少天。
2.同学的代码看起来更容易看一些,而自己的代码在最后考虑是否是闰年二月的时候考虑的情况就有点复杂了。
3.同学运用了两次switch语句而用的一次if-else的语句,而我运用了一次switch语句和多次if-else的语句。
同学代码二:
自己代码二:
代码比较:
1.刚开始看到同学这一份代码的时候被惊到了,写的代码行数比我少了好多,而且还运用了switch语句并没有像我一样运用if-else语句。
2.刚开始还不明白同学写的【判断条件 ? 表达式1 : 表达式2"】是什么意思,后来百度了一下发现是这样解释的“如果满足判断条件就执行表达式一,如果不满足就执行表达式二”。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周(9.19-3.27) | 四天 | 40 | Hello world编程和Markdown语法 | 对待大部分内容都不理解 |
第二周(9.25-10.4) | 四天 | 35 | 华氏度与摄氏度的转换 | 不理解数据类型 |
第三周(10.8-10.11) | 三天 | 90 | if-else语句、格式化输入语句 | 分不清整型变量和浮点型变量 |
第四周(10.15-10.17) | 三天 | 100 | 有关for循环体的运用 | 有时候不清楚循环体是什么 |
第五周(10.22-10.25) | 三天 | 130 | 使用自定义函数来编程和生成乘方表和阶乘表 | 不知道如何调试函数以及在哪里设置断点 |
第六周(10.30-11.2) | 四天 | 180 | 分支结构、字符型数据类型 | 对待字符型题目还是不能够准确理解 |
第七周(11.06-11.08) | 三天 | 190 | 学会多分支结构switch语句的使用 | 有时不能准确理解case后的有些语句 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.在这一周我们又新学习了有关switch语句的运用,在这个语句中我明白了它是可以处理多分支选择问题的语句,并且在使用的时候每个语句段中都要使用break语句。
2.switch语句的表达“switch(表达式)(case 常量表达式1:语句段1;break;case 常量表达式2:语句段2;break;。。。。)。”
3.虽然老师这次要求要用switch语句,但是我感觉有时候用起来不是像运用if-else语句那么的顺手,可能是因为刚学还不太熟悉。
4.通过这次作业我发现自己对待case有关的表达还是存在一些疑惑,希望接下来的学习中能够解答我的疑惑。