亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

輸入month=18,結果不對

答案有個問題,就是month>12的時候,程序不是輸出“一年只有12個月哦”后就終止,而是繼續往下執行,最后輸出“一年只有12個月哦2008年18月8日是該年的第9天”,如何處理可以在month>12時輸出一年只有12個月哦,然后終止呢?求教

正在回答

6 回答

慘痛的教訓啊,需要寫代碼的回答我再也不會這么草率了,寫完一定要仔細檢查。

題主,代碼我重寫了,這次一定沒問題,嗯!

#include?"stdio.h"
main()
{
?int?year,month,day,iday=0,mday;
?printf("請輸入年/月/日:\n");
?scanf("%d/%d/%d",&year,&month,&day);
?switch(month)
?{
????????case?1:iday=0;mday=31;break;
????????case?2:iday=31;mday=28;break;
????????case?3:iday=59;mday=31;break;
????????case?4:iday=90;mday=30;break;
????????case?5:iday=120;mday=31;break;
????????case?6:iday=151;mday=30;break;
????????case?7:iday=181;mday=31;break;
????????case?8:iday=212;mday=31;break;
????????case?9:iday=243;mday=30;break;
????????case?10:iday=273;mday=31;break;
????????case?11:iday=304;mday=30;break;
????????case?12:iday=334;mday=31;break;
?}
?if((year%400==0)||(year%100!=0&&year%4==0)&&month==2)?mday++;
?if(month<=12&&month>=1)
?{
??iday+=day;
??if((year%400==0)||(year%100!=0&&year%4==0)&&month>2)?iday++;
??if(day>0&&day<=mday)
???printf("%d年%d月%d日是該年的第%d天",year,month,day,iday);
??else
???printf("%d月沒有%d日哦",month,day);
?}
?else
??printf("一年中只有12個月哦");
}


0 回復 有任何疑惑可以回復我~
#1

書笑 提問者

非常感謝!
2016-01-01 回復 有任何疑惑可以回復我~

goto只是一個玩笑罷了,雖然也能做,但是肯定會被批判一番;

題主想要的是可以輸出某月某日是一年當中的第幾天的程序,并且能對錯誤輸入有相應的反饋,那么我的答案如下;

#include?"stdio.h"
int?imonth(int?year,int?month);
main()
{
?int?year,month,day,iday=0,mday;
?printf("請輸入年/月/日\n");
?scanf("%d/%d/%d",&year,&month,&day);
?switch(month)
?{
??case?12:iday+=31;
??case?11:iday+=30;
??case?10:iday+=31;
??case?9:iday+=30;
??case?8:iday+=31;
??case?7:iday+=31;
??case?6:iday+=30;
??case?5:iday+=31;
??case?4:iday+=30;
??case?3:iday+=31;
??case?2:iday+=28;
??case?1:iday+=31;
?}
?mday=imonth(year,month);
?if((year%400==0)||(year%100!=0&&year%4==0))?iday++;
?if(month<=12&&month>=1)
?{
??iday+=day;
??if(day>0&&day<=mday)
???printf("%d年%d月%d日是該年的第%d天",year,month,day,iday);
??else
???printf("%d月沒有%d日哦",month,day);
?}
?else
??printf("一年中只有12個月哦");
}
int?imonth(int?year,int?month)
{
?int?iday=0;
?switch(month)
?{
??case?12:iday+=31;break;
??case?11:iday+=30;break;
??case?10:iday+=31;break;
??case?9:iday+=30;break;
??case?8:iday+=31;break;
??case?7:iday+=31;break;
??case?6:iday+=30;break;
??case?5:iday+=31;break;
??case?4:iday+=30;break;
??case?3:iday+=31;break;
??case?2:iday+=28;break;
??case?1:iday+=31;break;
?}
?if((year%400==0)||(year%100!=0&&year%4==0))?iday++;
?return?iday;
}

有對月份的檢查,也有對日期的檢查。

0 回復 有任何疑惑可以回復我~
#1

1100001

丟死人了,題主請不要采納,我寫錯了
2015-12-30 回復 有任何疑惑可以回復我~

和我一起念,goto大法好!

0 回復 有任何疑惑可以回復我~

不對,switch里面的default:printf("一年只有12個月");break;只能跳出這個結構,下面的還會繼續執行,剛才試著改成這樣可以:

#include <stdio.h>

int main()?

{?

? ? /* 定義需要計算的日期 */

? ? int year = 2008;

? ? int month = 8;

? ? int day = 8;

? ? /*

? ? ?* 請使用switch語句,if...else語句完成本題

? ? ?* 如有想看小編思路的,可以點擊左側任務中的“不會了怎么辦”

? ? ?* 小編還是希望大家獨立完成哦~

? ? ?*/

? ? ? int sum,flag; ?

? ? ?if(month>0&&month<=12)

? ? ?{ ?

? ? ? ? ?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;

? ? ? ?}

? ? sum=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);

? ? ?}

? ? ?else?

? ? ?{printf("一年只有12個月哦");}

? ? return 0;?

? ??

}


0 回復 有任何疑惑可以回復我~

你有測試員的潛質

0 回復 有任何疑惑可以回復我~

default:

printf("一年只有12個月");

break;?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

輸入month=18,結果不對

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號