#include <stdio.h>int main() { /* 定义需要计算的日期 */ int year = 2008; int month = 8; int day = 8; switch(month-1) { case 12:day+=31; case 11:day+=30; case 10:day+=31; case 9:day+=30; case 8:day+=31; case 7:day+=31; case 6:day+=30; case 5:day+=31; case 4:day+=30; case 3:day+=31; case 2:if((year%4==0 && year%100) || year%400==0) day+=29; else day+=28; case 1:day+=31; } printf("2008年8月8日是该年的第%d天",day); return 0;}这是如何进行运行的?
2 回答
已采纳
不偏不易
TA贡献96条经验 获得超118个赞
首先这里的代码是没有错的,计算是8月8日是第几天,那前7月是全的,8月只过8天,day=8,然后用day去一个个月加过去,7月:day=day+31;以此类推到1月:day=day+31。
month为8,switch里条件month-1为7,一点问题都没有。
看一下switch那一章。有一句话,你可能没有注意,大概是当没有break的时候,switch会向下一直执行下去。
这里的话,month-1为7的时候,就会从case 7 ,一直到case 1,然后才结束switch.
所以这里花式的计算了足月的天数,8月8日,中,switch里帮你计算了8天加上1-7月的天数和。
附:http://www.imooc.com/code/5207
在使用switch语句时还应注意以下几点:
1、在case后的各常量表达式的值不能相同,否则会出现错误。
2、在case子句后如果没有break;会一直往后执行一直到遇到break;才会跳出switch语句。
- 2 回答
- 0 关注
- 1261 浏览
添加回答
举报
0/150
提交
取消