求大佬指教為啥運(yùn)行成功輸出錯(cuò)誤
#include <stdio.h>
int main()?
{?
? ? /* 定義需要計(jì)算的日期 */
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? int sum=0;
? ? int flag;
? ? /*
? ? ?* 請(qǐng)使用switch語(yǔ)句,if...else語(yǔ)句完成本題
? ? ?* 如有想看小編思路的,可以點(diǎn)擊左側(cè)任務(wù)中的“不會(huì)了怎么辦”
? ? ?* 小編還是希望大家獨(dú)立完成哦~
? ? ?*/
? ? switch(month)
? ? {?
? ? ? ? case 1:sum+=31;break;
? ? ? ? case 3:sum+=31;break;
? ? ? ? case 5:sum+=31;break;
? ? ? ? case 7:sum+=31;break;
? ? ? ? case 8:sum+=31;break;
? ? ? ? case 10:sum+=31;break;
? ? ? ? case 12:sum+=31;break;
? ? ? ? case 4:sum+=30;break;
? ? ? ? case 6:sum+=30;break;
? ? ? ? case 9:sum+=30;break;
? ? ? ? case 11:sum+=30;break;
? ? ? ? case 2:sum+=28;break;
? ? }
? ? sum=sum+8;
? ? if(year%400==0||(year%4==0&&year%100==0))
? ? {
? ? ? ? flag=0;
? ? }
? ? else
? ? {
? ? ? ? flag=1;
? ? }
? ? if(flag==1&&month>=2)
? ? {
? ? ? ? sum++;
? ? }
? ? printf("%d年%d月%d日是該年的第%d天",year,month,day,sum);
? ??
2022-11-13
你的case得按數(shù)字的順序來(lái),要從case 1按順序?qū)懙絚ase 12才行,因?yàn)閏ase語(yǔ)句是從上到下執(zhí)行的,你這樣寫(xiě)的話(huà),這個(gè)程序會(huì)從case 8就跳出來(lái),所以就相當(dāng)于你只是把1、3、5、7、8月的天數(shù)加在了一起,少了2、4、6月啊,肯定錯(cuò)了,而且你要把一月設(shè)置為0天,因?yàn)槟憧窗?,如果我們現(xiàn)在這個(gè)題目不是八月而是讓你找出一月八號(hào)是第幾天,你現(xiàn)在已經(jīng)把一月的天數(shù)設(shè)置成了31天,然后你從case語(yǔ)句中跳出來(lái)之后還把總天數(shù)加了8,也就是說(shuō)現(xiàn)在就有31+8=39天了,一月八號(hào)怎么也不可能是一年里的第39天吧