麻煩指導(dǎo)一下錯(cuò)在哪了
#include <stdio.h>
int main()?
{?
? ? /* 定義需要計(jì)算的日期 */
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? int x, i;
? ? x == 0;
? ? switch(month)
? ? {
? ? ? ? case 1:x += day;break;
? ? ? ? case 2:x += 31;break;
? ? ? ? case 3:x += 28;break;
? ? ? ? case 4:x += 31;break;
? ? ? ? case 5:x += 30;break;
? ? ? ? case 6:x += 31;break;
? ? ? ? case 7:x += 30;break;
? ? ? ? case 8:x += 31;break;
? ? ? ? case 9:x += 31;break;
? ? ? ? case 10:x += 30;break;
? ? ? ? case 11:x += 31;break;
? ? ? ? case 12:x += 30;break;
? ? ? ? default:break;
? ? }
? ? if(year%400==0||(year%4==0 &&year%100!=0))
? ? ? ? i=1;
? ? else
? ? ? ? i=0;
? ? if(i==1&&month>2)
? ? ? ? x++;
? ? printf("%d年%d月%d日是該年的第%d天",year, month, day, x);
return 0;
}
2021-03-01
case 8:x += 31;break;應(yīng)該只執(zhí)行這一句。
2021-03-31
有一個(gè)大神寫的這個(gè)代碼原理是:當(dāng)case=8時(shí)才開始運(yùn)行代碼,在case12;case 11;case=10;case=9并不會(huì)運(yùn)行代碼;是因?yàn)閙onth=8,要從8開始,運(yùn)行8后,為什么不跳出去,而繼續(xù)運(yùn)行,是因?yàn)闆]有8的后面并沒有break,所以代碼就會(huì)一直運(yùn)行,直至遇到default中的break才會(huì)跳出,這就導(dǎo)致了date一直進(jìn)行累加。而你在8的后面加了break,所以導(dǎo)致代碼跳出去,從而date并不會(huì)進(jìn)行累加。
希望能幫到你。