最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

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

請學(xué)帝看看哪里不對? 為什么不能累加

#include <stdio.h>
int main()
{
??? int year = 2008;
??? int month = 8;
??? int day = 8;
??? int sum = 0;
??? int i = 1;
??? switch(month)
??? {
??????? case 1 :sum==31;
??????? case 2 :sum+=29;
??????? case 3 :sum+=31;
??????? case 4 :sum+=30;
??????? case 5 :sum+=31;
??????? case 6 :sum+=30;
??????? case 7 :sum+=31;
??????? case 8 :sum+=31;break;
??????? case 9 :sum+=30;break;
??????? case 10 :sum+=31;break;
??????? case 11 :sum+=30;break;
??????? case 12 :sum+=31;break;
??????? default :;break;
??? }
??? if(year%4==0&&year%100!=0)
??? sum=sum+day;
??? else
??? sum=sum+day+i;
??? printf("%d年%d月%d日是該年中的第%d天",year,month,day,sum);
?return 0;
}

正在回答

4 回答

理解你的思維,可是寫反了,改為如下:

#include <stdio.h>
int main()?
{?
??? int year = 2008;
??? int month = 8;
??? int day = 8;
??? int sum = 0;
??? int i = 1;
??? switch(month)
??? {
??????? case 12 :sum==30;
??????? case 11 :sum+=31;
??????? case 10 :sum+=30;
??????? case 9 :sum+=31;
??????? case 8:sum+=31;
??????? case 7 :sum+=30;
??????? case 6 :sum+=31;
??????? case 5 :sum+=30;
??????? case 4 :sum+=31;
??????? case 3 :sum+=28;
??????? case 2 :sum+=31;
??????? case 1:sum+=0;
??????? default :;break;
??? }
??? if(year%4==0&&year%100!=0)
??? sum=sum+day;
??? else
??? sum=sum+day+i;
??? printf("%d年%d月%d日是該年中的第%d天",year,month,day,sum);
?return 0;
}

2 回復(fù) 有任何疑惑可以回復(fù)我~
#1

我就是我顏色不一樣的 提問者

非常感謝!
2016-06-05 回復(fù) 有任何疑惑可以回復(fù)我~

應(yīng)該是這樣吧
#include <stdio.h>
int main()
{
??? int year = 2008;
??? int month = 12;
??? int day = 8;
??? int sum = 0;
??? int i = 1;
??? switch(month)
??? {
??????? case 12 :sum+=30;
??????? case 11 :sum+=31;
??????? case 10 :sum+=30;
??????? case 9 :sum+=31;
??????? case 8:sum+=31;
??????? case 7 :sum+=30;
??????? case 6 :sum+=31;
??????? case 5 :sum+=30;
??????? case 4 :sum+=31;
??????? case 3 :sum+=28;
??????? case 2 :sum+=31;
??????? case 1:sum+=0;
??????? default :;break;
??? }
??? if((year%4==0&&year%100!=0)||year%400==0)
??? sum=sum+day+i;
??? else
??? sum=sum+day;
??? printf("%d年%d月%d日是該年中的第%d天",year,month,day,sum);
?return 0;
}

0 回復(fù) 有任何疑惑可以回復(fù)我~

month=8; ?進(jìn)入switch后就直接找case8了,然后break。就相當(dāng)于只算了一個8月份的天數(shù)。

0 回復(fù) 有任何疑惑可以回復(fù)我~

這道題中你對case語句后不加break;情況的理解有些偏差。

首先,我們先看看為什么結(jié)果不累加

你的程序結(jié)果為39,很明顯是31+8(day)得來的,那么這個31是怎么來的?有人可能理解為來自case 1:? ,但這里沒有break;? 即然程序到這里為什么沒有繼續(xù)執(zhí)行,而是跳出來了呢?很顯然這個31并不是這里的。那么我們看前面,因為mouth=8,所以程序進(jìn)入swich內(nèi),應(yīng)該直接執(zhí)行case 8: 的語句,然后跳出來,這樣就可以說清了。

那為什么不是按照你的想法讓前8個疊加后再跳出呢,這就是理解的偏差問題了。雖然咱們前面看到過這樣的知識點(diǎn):“在case子句后如果沒有break;會一直往后執(zhí)行一直到遇到break;才會跳出switch語句。”實際上這句話的前提是“符合條件的正被執(zhí)行的case子句后如果沒有…………”,你程序中因為mouth=8,所以程序進(jìn)入swich內(nèi),直接執(zhí)行case 8: 的語句,而不是case 1: 的,那也就用不上剛才提到的規(guī)則了。

希望對你有幫助!

?

2 回復(fù) 有任何疑惑可以回復(fù)我~
#1

我就是我顏色不一樣的 提問者

謝謝你
2016-06-05 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
C語言入門
  • 參與學(xué)習(xí)       927388    人
  • 解答問題       21538    個

C語言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語言

進(jìn)入課程

請學(xué)帝看看哪里不對? 為什么不能累加

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號