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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

?誰能幫我看看哪里錯了

?誰能幫我看看哪里錯了

C C++
qq_踩了口香糖_04206687 2016-11-15 09:23:45
#include <stdio.h>int main()?{?? ? int year = 2008;? ? int month =1;? ? int day = 8;? ? int date;? ? switch(month)? ? {? ? case 1:date+=0;? ? case 2:date+=31;? ? case 3:date+=28;? ? case 4:date+=31;? ? case 5:date+=30;? ? case 6:date+=31;? ? case 7:date+=30;? ? case 8:date+=31;? ? case 9:date+=31;? ? case 10:date+=30;? ? case 11:date+=31;? ? case 12:date+=day; break;? ? } if(year%400==0||(year%4==0&&year%100!=00)) date=date+1+day;? ? else date=date+day;? ? printf("%d年是%d月%d日是該年的第%d天 ",year,month,day,date); return 0;}我輸出的時候那個日期總是錯誤顯示-837847982478一類的
查看完整描述

5 回答

?
聊發少年狂

TA貢獻9條經驗 獲得超9個贊

switch(month){
????case???1:date?=???0;break;
????case??2:date?=??31;break;
????case??3:date?=??59;break;
????case??4:date?=??90;break;
????case??5:date?=?120;break;
????case??6:date?=?151;break;
????case??7:date?=?181;break;
????case??8:date?=?212;break;
????case??9:date?=?243;break;
????case?10:date?=?273;break;
????case?11:date?=?304;break;
????case?12:date?=?334;break;
????default:break;

你date沒有賦初始值,另外switch語句是分支選擇執行而不是順序執行的,所以你這樣定義switch語句分支語句最后結果肯定是只有12月是對的。還有分支語句要用break跳出。

查看完整回答
3 反對 回復 2016-11-15
?
望遠

TA貢獻1017條經驗 獲得超1032個贊

#include?<stdio.h>
int?main()?
{?

????int?year?=?2008;
????int?month?=1;
????int?day?=?8;
????int?date;
????switch(month)
????{
????//switch語句執行步驟-》匹配參數month,一旦發現匹配成功,則執行該case塊的代碼,執行到break語句跳出switch語句
????case?1:date+=0;break;//所以如果month==1,執行case?1?,如果后面沒有break;直接往下執行,不管是否匹配,一直到執行了break或者全部執行完畢
????case?2:date+=31;break;
????case?3:date+=28;break;
????case?4:date+=31;break;
????case?5:date+=30;break;
????case?6:date+=31;break;
????case?7:date+=30;break;
????case?8:date+=31;break;
????case?9:date+=31;break;
????case?10:date+=30;break;
????case?11:date+=31;break;
????default:date+=day;//這里反而是可以不用break的,當然加上也可以,最好是default
????}
if(year%400==0||(year%4==0&&year%100!=00))
date=date+1+day;
????else
date=date+day;
????printf("%d年是%d月%d日是該年的第%d天?",year,month,day,date);
return?0;
}


查看完整回答
3 反對 回復 2016-11-15
已采納
?
一葉追尋

TA貢獻38條經驗 獲得超23個贊


http://img1.sycdn.imooc.com//582a6dc200017a2e02950057.jpg我用你的代碼運行出來是這樣子的,你的switch語句里面只有case 12 后面才有break;這就會導致case 1到case 12 之間的語句都會執行,程序還需要設計一下

查看完整回答
反對 回復 2016-11-15
?
慕容5123895

TA貢獻4條經驗 獲得超1個贊

date沒有初始化,要用switch的話,每個case后面都要加上break;然后在switch外面套一層循環,保證你輸入的月份之前的月都被加上。

查看完整回答
1 反對 回復 2016-11-21
  • 5 回答
  • 0 關注
  • 1726 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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