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

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

求大佬指教為啥運行成功輸出錯誤

#include <stdio.h>

int main()?

{?

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

? ? int year = 2008;

? ? int month = 8;

? ? int day = 8;

? ? int sum=0;

? ? int flag;

? ? /*

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

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

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

? ? ?*/

? ? switch(month)

? ? {?

? ? ? ? case 1:sum+=31;break;

? ? ? ? case 3:sum+=31;break;

? ? ? ? case 5:sum+=31;break;

? ? ? ? case 7:sum+=31;break;

? ? ? ? case 8:sum+=31;break;

? ? ? ? case 10:sum+=31;break;

? ? ? ? case 12:sum+=31;break;

? ? ? ? case 4:sum+=30;break;

? ? ? ? case 6:sum+=30;break;

? ? ? ? case 9:sum+=30;break;

? ? ? ? case 11:sum+=30;break;

? ? ? ? case 2:sum+=28;break;

? ? }

? ? sum=sum+8;

? ? if(year%400==0||(year%4==0&&year%100==0))

? ? {

? ? ? ? flag=0;

? ? }

? ? else

? ? {

? ? ? ? flag=1;

? ? }

? ? if(flag==1&&month>=2)

? ? {

? ? ? ? sum++;

? ? }

? ? printf("%d年%d月%d日是該年的第%d天",year,month,day,sum);

? ??


正在回答

1 回答

你的case得按數字的順序來,要從case 1按順序寫到case 12才行,因為case語句是從上到下執行的,你這樣寫的話,這個程序會從case 8就跳出來,所以就相當于你只是把1、3、5、7、8月的天數加在了一起,少了2、4、6月啊,肯定錯了,而且你要把一月設置為0天,因為你看啊,如果我們現在這個題目不是八月而是讓你找出一月八號是第幾天,你現在已經把一月的天數設置成了31天,然后你從case語句中跳出來之后還把總天數加了8,也就是說現在就有31+8=39天了,一月八號怎么也不可能是一年里的第39天吧

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

weixin_慕仙4062266

而且,你后面的if語句也錯了,你寫的是這個:year%400==0||(year%4==0&&year%100==0),而正確的應該是:year%400==0||(year%4==0&&year%100!=0),這是表示閏年的意思,所以如果滿足這個式子的話,也就是說,這一年是閏年,那么flag就應該記為1,而不是你寫的0,你寫反了,因為閏年的二月才是29天,比平年多一天,像你那樣做的話,就是錯的
2022-11-13 回復 有任何疑惑可以回復我~
#2

慕數據3556412 提問者 回復 weixin_慕仙4062266

謝謝,大佬
2022-11-14 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求大佬指教為啥運行成功輸出錯誤

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

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

幫助反饋 APP下載

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

公眾號

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