我的if嵌套錯(cuò)了?為什么輸出少一天?
#include <stdio.h>
int main()
{
??? /* 定義需要計(jì)算的日期 */
??? int year = 2008;
??? int month = 8;
??? int day = 8;
??? int sum,i;
??? /*
???? * 請(qǐng)使用switch語(yǔ)句,if...else語(yǔ)句完成本題
???? * 如有想看小編思路的,可以點(diǎn)擊左側(cè)任務(wù)中的“不會(huì)了怎么辦”
???? * 小編還是希望大家獨(dú)立完成哦~
???? */
??? switch(month)
??? {
??????? case 1:sum=0;break;
??????? case 2:sum=31;break;
??????? case 3:sum=59;break;
??????? case 4:sum=90;break;
??????? case 5:sum=120;break;
??????? case 6:sum=151;break;
??????? case 7:sum=181;break;
??????? case 8:sum=212;break;
??????? case 9:sum=243;break;
??????? case 10:sum=273;break;
??????? case 11:sum=304;break;
??????? case 12:sum=334;break;
??????? default:printf("大兄弟你在醉嗎?");break;
??? }
??? if(year%4==0&&(year%100==0||year%400==0))
??? {
??????? if(month>2)
??????? {
??????????? sum=sum+day+1;
??????? }
??????? else
??????? {
??????????? sum=sum+day;
??????? }
??? }
??? else
??? {
??????? sum=sum+day;
??? }
??? printf("%d年%d月%d日是該年中的第%d天",year,month,day,sum);
??? return 0;
}
???
???
2018-10-03
if(year%4==0&&year%100!=0||year%400==0) 應(yīng)該是這樣的
2018-10-02
? if(year%4==0&&(year%100==0||year%400==0))
這一句錯(cuò)了
2018-09-28
#include <stdio.h>
int main()?
{?
? ? /* 定義需要計(jì)算的日期 */
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? int sum,i;
? ? /*
? ? ?* 請(qǐng)使用switch語(yǔ)句,if...else語(yǔ)句完成本題
? ? ?* 如有想看小編思路的,可以點(diǎn)擊左側(cè)任務(wù)中的“不會(huì)了怎么辦”
? ? ?* 小編還是希望大家獨(dú)立完成哦~
? ? ?*/
? ? switch(month)
? ? {
? ? ? ? case 1:sum=0;break;
? ? ? ? case 2:sum=31;break;
? ? ? ? case 3:sum=59;break;
? ? ? ? case 4:sum=90;break;
? ? ? ? case 5:sum=120;break;
? ? ? ? case 6:sum=151;break;
? ? ? ? case 7:sum=181;break;
? ? ? ? case 8:sum=212;break;
? ? ? ? case 9:sum=243;break;
? ? ? ? case 10:sum=273;break;
? ? ? ? case 11:sum=304;break;
? ? ? ? case 12:sum=334;break;
? ? ? ? default:printf("大兄弟你在醉嗎?");break;
? ? }
? ? if(year%4==0&&(year%100==0||year%400==0))
? ? {
? ??
? ? ? ? ? ? sum=sum+day;
? ? ? ??
? ? }
? ? else
? ? {
? ? ? ? sum=sum+day+1;
? ? }
? ? printf("%d年%d月%d日是該年的第%d天",year,month,day,sum);
return 0;
}
應(yīng)該這樣才對(duì)。
你的程序中,switch里面case8算的是閏年時(shí)的前七個(gè)月天數(shù);
而你判斷完某一年是閏年后 ,用了這個(gè)sum=sum+day+1;其實(shí)你應(yīng)該是---如果某一年是平年用?sum=sum+day+1;閏年直接?sum=sum+day就好了
平年二月29天,閏年28
還有printf語(yǔ)句中打多了一個(gè)字“中”
?printf("%d年%d月%d日是該年中的第%d天",year,month,day,sum);
改為?printf("%d年%d月%d日是該年的第%d天",year,month,day,sum);