怎么算出來結果不對?
#include <stdio.h>
int main()?
{?
? ? /* 定義需要計算的日期 */
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? /*
? ? ?* 請使用switch語句,if...else語句完成本題
? ? ?* 如有想看小編思路的,可以點擊左側任務中的“不會了怎么辦”
? ? ?* 小編還是希望大家獨立完成哦~
? ? ?*/
? ? int sum;
? ? for(sum=1;sum<=12;sum++)
? ? {
? ? ? ? switch(sum)
? ? ? ? {
? ? ? ? ? ? case 1:
? ? ? ? ? ? if(month>=1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=0;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ??
? ? ? ? ? ? case 2:
? ? ? ? ? ? if(month>=2)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=31;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ? ? ??
? ? ? ? ? ? case 3:
? ? ? ? ? ? if(month>=3)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(year%4==0&&year%100!=0||year%400==0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? day+=29;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? day+=28;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ? ? ??
? ? ? ? ? ? case 4:
? ? ? ? ? ? if(month>=4)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=31;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ? ? ??
? ? ? ? ? ? case 5:
? ? ? ? ? ? if(month>=5)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=30;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ? ? ??
? ? ? ? ? ? case 6:
? ? ? ? ? ? if(month>=6)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=31;
? ? ? ? ? ? }
? ? ? ? ? ? else break; ? ? ? ?
? ? ? ? ? ??
? ? ? ? ? ? case 7:
? ? ? ? ? ? if(month>=7)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=30;
? ? ? ? ? ? }
? ? ? ? ? ? else break; ? ? ? ? ??
? ? ? ? ? ??
? ? ? ? ? ? case 8:
? ? ? ? ? ? if(month>=8)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=31;
? ? ? ? ? ? }
? ? ? ? ? ? else break; ??
? ? ? ? ? ??
? ? ? ? ? ? case 9:
? ? ? ? ? ? if(month>=9)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=31;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ??
? ? ? ? ? ? case 10:
? ? ? ? ? ? if(month>=10)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=30;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ??
? ? ? ? ? ? case 11:
? ? ? ? ? ? if(month>=11)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=31;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ??
? ? ? ? ? ? case 12:
? ? ? ? ? ? if(month>=12)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? day+=30;
? ? ? ? ? ? }
? ? ? ? ? ? else break;
? ? ? ? }
? ? }
? ? printf("%d",day);
??
return 0;
}
2018-04-14
我給樓上補充一下吧,你這個確實是sum=1的時候就運行出結果了。首先你在case語句中使用的是if-else語句;sum=1時,執行case1,注意:此時并沒有執行break語句,因為if語句成立(if不成立才執行else語句);case1執行結束,沒有break,執行case2,一直往下加,直到month=8。下面的month>=9不成立,執行else語句(執行break),跳出循環,然后sum++,再執行一遍case。
2018-04-14
你的代碼根本用不上for,用了反而錯了,因為當sum等2的時候,就從case 2開始執行了,本來sum=1的時候已經得到結果了,你在讓day+=31,明顯重復了
2018-04-13
#include <stdio.h>
int main()?
{?
? ? /* 定義需要計算的日期 */
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? int sumday=0;
? ? switch(month)
{
case 1:sumday=day;break;
case 2:sumday=31+day;break;
case 3:sumday=59+day;break;
case 4:sumday=90+day;break;
case 5:sumday=120+day;break;
case 6:sumday=151+day;break;
case 7:sumday=181+day;break;
case 8:sumday=212+day;break;
case 9:sumday=243+day;break;
case 10:sumday=273+day;break;
case 11:sumday=304+day;break;
case 12:sumday=334+day;break;
default:break;
}?
if(month>2)
{
if((year%4==0 && year%100!=0) || year%400==0 )
{
sumday=sumday+1;
printf("%d年%d月%d日是該年的第%d天",year,month,day,sumday);
}
else
{
printf("%d年%d月%d日是該年的第%d天",year,month,day,sumday);
}?
}
else
{
printf("%d年%d月%d日是該年的第%d天",year,month,day,sumday);
}?
return 0;
}
可以把判斷閏年放在最后