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

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

怎么算出來結果不對?

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

}






正在回答

3 回答

我給樓上補充一下吧,你這個確實是sum=1的時候就運行出結果了。首先你在case語句中使用的是if-else語句;sum=1時,執行case1,注意:此時并沒有執行break語句,因為if語句成立(if不成立才執行else語句);case1執行結束,沒有break,執行case2,一直往下加,直到month=8。下面的month>=9不成立,執行else語句(執行break),跳出循環,然后sum++,再執行一遍case。

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

王師1984 提問者

非常感謝!
2018-04-24 回復 有任何疑惑可以回復我~

你的代碼根本用不上for,用了反而錯了,因為當sum等2的時候,就從case 2開始執行了,本來sum=1的時候已經得到結果了,你在讓day+=31,明顯重復了

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

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

}



可以把判斷閏年放在最后


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

舉報

0/150
提交
取消

怎么算出來結果不對?

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

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

幫助反饋 APP下載

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

公眾號

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