#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.xianlaiwan.cn/code/5207
在使用switch語句時還應注意以下幾點:
1、在case后的各常量表達式的值不能相同,否則會出現錯誤。
2、在case子句后如果沒有break;會一直往后執行一直到遇到break;才會跳出switch語句。
- 2 回答
- 0 關注
- 1293 瀏覽
添加回答
舉報
0/150
提交
取消