求解釋switch語句
#include <stdio.h>
int main()
{
??? /* 定義需要計算的日期 */
??? int year = 2008;
??? int month = 8;
??? int day = 8;
??? /*
???? * 請使用swtich語句,if...else語句完成本題
???? * 如有想看小編思路的,可以點擊左側任務中的“不會了怎么辦”
???? * 小編還是希望大家獨立完成哦~
???? */
??? int date = 0;
??? switch (month)
??? {
??????? case 12:??? date += 30;
??????? case 11:??? date += 31;
??????? case 10:??? date += 30;
??????? case 9:??? date += 31;
??????? case 8:??? date += 31;
??????? case 7:??? date += 30;
??????? case 6:??? date += 31;
??????? case 5:??? date += 30;
??????? case 4:??? date += 31;
??????? case 3:??? if(year%400 != 0 && year%4 == 0){
??????????????????????? date += 29;
??????????????????? }else{
??????????????????????? date += 28;}
??????? case 2:??? date += 31;
??????? default:??? date += 8,printf("2008年8月8日是該年的第%d天",date);break;
??? }
??? return 0;
}
其中case是怎么分組的?
2016-10-04
你寫的程序中,month是從12倒序排列至2,也就是說每次case 當前month后date的值為當前month-1月的天數(shù),但是由于沒有break,所以繼續(xù)累加至case 2,此時的date已經(jīng)相當于從1月累加至當前month-1的總天數(shù)了,最后再加上default中的當前月天數(shù),得到的結果同樣是正解
2016-10-04
我們算天數(shù)的時候是怎么算的?比如說三月七日,是不是需要計算已經(jīng)過去的月份的總天數(shù)(一月和二月)再加上當前月的天數(shù)(7天),所以程序也這樣設計,sum代表case month之前共有多少天(比如說case 3:執(zhí)行的結果就是sum=31+28=59;)得到當前的sum后break跳出switch,最后再加上day的天數(shù)就得到了所求值