麻煩指導一下錯在哪了
#include <stdio.h>
int main()?
{?
? ? /* 定義需要計算的日期 */
? ? 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;應該只執行這一句。
2021-03-31
有一個大神寫的這個代碼原理是:當case=8時才開始運行代碼,在case12;case 11;case=10;case=9并不會運行代碼;是因為month=8,要從8開始,運行8后,為什么不跳出去,而繼續運行,是因為沒有8的后面并沒有break,所以代碼就會一直運行,直至遇到default中的break才會跳出,這就導致了date一直進行累加。而你在8的后面加了break,所以導致代碼跳出去,從而date并不會進行累加。
希望能幫到你。