#include?<stdio.h>
int?main()?
{?
????/*?定義需要計算的日期?*/
????int?year?=?2008;
????int?month?=?8;
????int?day?=?8;
????int?sum,flag;
????/*
?????*?請使用switch語句,if...else語句完成本題
?????*?如有想看小編思路的,可以點擊左側任務中的“不會了怎么辦”
?????*?小編還是希望大家獨立完成哦~
?????*/
????switch(month)
????{
????????case?1:sum+=0;break;
????????case?2:sum+=31;break;
????????case?3:sum+=29;break;
????????case?4:sum+=30;break;
????????case?5:sum+=31;break;
????????case?6:sum+=30;break;
????????case?7:sum+=31;break;
????????case?8:sum+=30;break;
????????case?9:sum+=31;break;
????????case?10:sum+=30;break;
????????case?11:sum+=31;break;
????????case?12:sum+=30;break;
????????default:?printf("一年中只有12個月");break;
????}
????sum+=day;
????if(year%400==0?||?(year%4==0?&&?year%100!=0))
????flag=1;
????else
????flag=0;
????if(flag==1?&&?month>2)
????sum++;
????printf("%d年%d月%d日是該年的第%d天",year,month,day,sum);
?return?0;
}
2015-12-25
因為當month == 8的時候,執(zhí)行case 8,sum就為30,然后就break了跳出了,然后執(zhí)行sum += day變成38
最后進if判斷完成sum++就是39了。
你可以參考這個:
#include <stdio.h>
int main()
{
??? /* 定義需要計算的日期 */
??? int year = 2008;
??? int month = 8;
??? int day = 8;
??? /*
???? * 請使用swtich語句,if...else語句完成本題
???? * 如有想看小編思路的,可以點擊左側任務中的“不會了怎么辦”
???? * 小編還是希望大家獨立完成哦~
???? */
??? switch(month-1)
??? {
??????? case 12:day+=31;
??????? case 11:day+=30;
??????? case 10:day+=31;
??????? case 9:day+=30;
??????? case 8:day+=31;
??????? case 7:day+=31;
??????? case 6:day+=30;
??????? case 5:day+=31;
??????? case 4:day+=30;
??????? case 3:day+=31;
??????? case 2:if((year%4==0 && year%100) || year%400==0) day+=29; else day+=28;
??????? case 1:day+=31;
??? }
??? printf("2008年8月8日是該年的第%d天",day);
??? return 0;
}