求大佬指教為啥運行成功輸出錯誤
#include <stdio.h>
int main()?
{?
? ? /* 定義需要計算的日期 */
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? int sum=0;
? ? int flag;
? ? /*
? ? ?* 請使用switch語句,if...else語句完成本題
? ? ?* 如有想看小編思路的,可以點擊左側任務中的“不會了怎么辦”
? ? ?* 小編還是希望大家獨立完成哦~
? ? ?*/
? ? 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得按數字的順序來,要從case 1按順序寫到case 12才行,因為case語句是從上到下執行的,你這樣寫的話,這個程序會從case 8就跳出來,所以就相當于你只是把1、3、5、7、8月的天數加在了一起,少了2、4、6月啊,肯定錯了,而且你要把一月設置為0天,因為你看啊,如果我們現在這個題目不是八月而是讓你找出一月八號是第幾天,你現在已經把一月的天數設置成了31天,然后你從case語句中跳出來之后還把總天數加了8,也就是說現在就有31+8=39天了,一月八號怎么也不可能是一年里的第39天吧