C语言I博客作业06
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/ |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11557 |
| 我在这个课程的目标是 | 熟练运用多分支结构switch语句 |
| 这个作业在那个具体方面帮助我实现目标 | 熟练掌握运用switch语句,灵活运用if-else语句 |
| 参考文献 | C语言程序设计(第3版) |




7-3 计算天数 (15分)
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。

数据表达:本题运用了yyy,mm,dd整型变量,通过int定义而来。还运用了sum双精度浮点型变量,通过double定义而来。
数据处理:流程结构:运用多分支结构中的switch语句
表达式: yyy%400==0;yyy%100!=0&&yyy%4==0;
case 1:sum=dd;break;
case 2:sum=(mm-1)*30+dd+1;break;
case 3:sum=(mm-1)*30+dd;break;
case 4:sum=(mm-1)*30+dd+1;break;
case 5:sum=(mm-1)*30+dd+1;break;
case 6:sum=(mm-1)*30+dd+2;break;
case 7:sum=(mm-1)*30+dd+2;break;
case 8:sum=(mm-1)*30+dd+3;break;
case 9:sum=(mm-1)*30+dd+4;break;
case 10:sum=(mm-1)*30+dd+4;break;
case 11:sum=(mm-1)*30+dd+5;break;
case 12:sum=(mm-1)*30+dd+5;break;
case 1:sum=dd;break;
case 2:sum=(mm-1)*30+dd+1;break;
case 3:sum=(mm-1)*30+dd-1;break;
case 4:sum=(mm-1)*30+dd;break;
case 5:sum=(mm-1)*30+dd;break;
case 6:sum=(mm-1)*30+dd+1;break;
case 7:sum=(mm-1)*30+dd+1;break;
case 8:sum=(mm-1)*30+dd+2;break;
case 9:sum=(mm-1)*30+dd+3;break;
case 10:sum=(mm-1)*30+dd+3;break;
case 11:sum=(mm-1)*30+dd+4;break;
case 12:sum=(mm-1)*30+dd+4;break;







提交列表及说明:
答案错误:sample2 被400整除的闰年跨2月,普通闰年跨2月,非闰年跨9月(7-8月大)等地方出现错误。
(yyy/4==0&&yyy/100!=0)||(yyy/400==0)中整除书写错误。
解决方法:将(yyy/4==0&&yyy/100!=0)||(yyy/400==0)改写成(yyy%400==0)||(yyy%100!=0&&yyy%4==0)


7-5 多分支表达-倍数问题 (50分)
键盘输入1个正的整数A,如果A是3的倍数但不是5的倍数,则输出A除以5的余数。如果A是5的倍数但是不是3的倍数,则输出A除以3的余数。如果A既不是5的倍数但也不是3的倍数,输出A除以15的余数
输入格式:
1个正整数
输出格式:
如果是3的倍数但不是5的倍数,则输出A除以5的余数。 如果A是5的倍数但是不是3的倍数,则输出A除以3的余数。 如果A既不是5的倍数但也不是3的倍数,输出A除以15的余数。 如果A不是正整数,没有任何输出。

数据表达:本题用int定义了A整型变量,用double定义了sum,result,h双精度浮点型变量。
数据处理:运用了分支结构中的if-else结构。表达式:sum=A%5;result=A%3; h=A%15;result==0&&sum!=0,sum==0&&result!=0,sum==0&&result!=0。






提交列表及说明:
编译错误:没有定义h使h=A%15就直接输出,导致编译错误。
答案错误:在if语句中没有用定义好的变量代替直接书写A%5==0等表达式。
解决方法:重新定义h令h=A%15,用定义好的变量代替A%5等表达式。

同学代码1:

自己代码1:


不同之处:
1.定义了整型变量a,b,来判断是否为闰年,我直接带入。我还定义了sum来输出结果。
2.他在用switch语句判断年份后直接输出,我先判断然后总输出。
3.他将算第几天的表达式分开写成day+31,day+29,等我写成sum=(mm-1)*30+dd+1;break;
4,他运用过多printf(""),我运用过多sum=都比较繁琐
同学代码2:

自己代码2:

不同之处:
1.它使用了分支结构中的if-else,我使用了多分枝结构中的switch语句
2.她将n=6||n=7同时判定,我将它们分开判定。
3.她对使用if-else非常熟练,但是可以尝试用新的分支结构switch语句。






3.3.1学习内容总结

3.3.2学习体会
感悟:1.在这一周的学习过程我个人对自己是较满意的。一方面是自己独立完成了。许多题目遇到让人费解的
问题没有马上就去寻求别人的帮助而是自己不断摸索出来的。
2.感觉在这一周过后知识体系更加膨大了,知道了除了if-else,while以外的switch语句同时对于循环语
句的运用更加的熟练。对于数据类型也知道的更多了,收获还是非常多的。
3.当然因为知道的更多所以遇到的问题自然而然也就出来了。如对于字符型函数char的运用始终不太熟练
不能很及时的反应在哪个地方应该用它。switch语句虽然运用多次但在遇到难题时还是习惯用if-else。
收获:在这一周我学习了怎样运用switch语句,怎样用char定义函数同时在这一周中我也常会抽空做有关调用函数的题目
并且也能慢慢的熟练掌握运用了,希望自己再接再厉吧!

浙公网安备 33010602011771号