c語言switch的用法

時間 2021-05-05 08:09:27

1樓:四舍**入

switch用在程式設計中,如c語言中它經常跟case一起使用,是一個判斷選擇**。其功能就是控制業務流程流轉的。

c語言程式語句switch語句的語法如下(switch,case和default是關鍵字):

switch ( controllingexpression )

2樓:彼岸花

c語言程式語句switch:

switch用在程式設計中,如c語言中它經常跟case一起使用,是一個判斷選擇**。其功能就是控制業務流程流轉的。

switch語句的語法如下(switch,case和default是關鍵字):

switch ( controllingexpression )

遵守switch語句規則

switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則:

只能針對基本資料型別使用switch,這些型別包括int、char等。對於其他型別,則必須使用if語句。

case標籤必須是常量表示式(constantexpression),如42或者"42"。如果需要在執行時計算case標籤的值,必須使用if語句。

case標籤必須是惟一性的表示式;也就是說,不允許兩個case具有相同的值。

c語言switch應用例子:

例一:#include

int main()

}例二:

#include

int main()

}例三:

輸入年月日,判斷這一天是這一年的第幾天。

#include

int main()

printf("%4d年%2d月%2d日是這一年的第%d天。\n",year,month,date,days);}

3樓:金剛2q疕k缹

凡是使用過的人都會有同樣的感覺——c語言的使用靈活這個特點既是優點又是缺點, 因為對精通c語言的使用者來講, 靈活就意味著程式設計可以無拘無束, 甚至隨心所欲; 但對初學者或者是尚未摸著規律的使用者來說, 有時候就會覺得c程式設計有點象霧裡看花, 摸不著頭腦。 因為靈活就意味著沒有一個標準。 而實際上,c 語言和其它計算機語言一樣, 只要你真正掌握了該語言的每一個語句的特點, 理解、 運用就不難掌握了。

下面就c語言中switch 語句的使用特點談談自己的體會。 ---- switch 語句的格式如下: switch( 表示式) ---- 從表面上看來,switch 語句與pascal 語言中的case 語句以及foxbase 中的do case 語句非常類似, 只是關鍵字有所不同:

一個是switch; 而另一個是case 或do case。 但如果仔細閱讀過教材或有關參考書的話, 就絕不會有此想法。 從語句的功能上來看,pascal 和case 語句或foxbase 的do case 語句中的常量表示式是用來與case 後面的表示式比較以確定執行哪一個語句, 一旦執行了某一語句, 則會自動地結束這一case 後的語句; 而c 的switch 語句則不然。

首先,switch 語句中的常量表示式只是起到一個入口作用, 一旦執行了相應的語句後, 只要沒有強迫中斷語句(break),它就會一直按順序繼續執行下去, 也就是會執行其它case 後面的語句, 直到遇到「}」 符號才停止。 乍看覺得有點不可事議, 但若仔細回味且切身程式設計體會, 那麼就會感司到c的switch 語句的獨到之處。 接下來就幾個具體例子來剖析:

switch 語句的特點以及區別於其它語言中的相應語句的妙處。 ---- 第一個例子: 根據輸入的百分制成績, 然後給出『a』 ~『e』 相應的等級符(90-100 為『a』、80-89 為『b』、70-79 為『b』、60-69 為『c』、0-59 為『e』)。

主要的處理程式段如下:(temp、score、grade 皆為整型變數) temp=score/10; switch(temp) printf(「the grade is %c」,grade); ---- 仔細閱讀這段程式( 根據c語言的特點),就會發現有很多錯誤。 首先, 對100 分和低於50 分的情況沒有考慮; 其次,c 語言的switch 特點是順序執行, 那麼這段程式不輸入的分數如何, 最後的輸出都將是『e』。

因此, 修改這段程式, 可以得到一個正確答案是: temp=score/10; switch(temp) printf(「the grade is %c,grade」); ---- 但這麼一個結果還不算是一個好的c程式, 因為它只是能得到正確的解, 沒有真正用到c的特點。 如果將c的特點運用到這段程式中, 則程式將優化成如下:

grade=『a』; temp=score/10; switch(temp) printf(「the grade is %c,grade」); ---- 從這段程式中, 我們可以體會到前面所說的該語句的特點。 ---- 第二個例子: 運輸公司對使用者計算運費。

距離(s) 越遠, 每公里運費越低。 具體標準如下: s < 250 (km) 沒有折扣 250 < =s < 500 (km) 2% 折扣 500 < =s < 1000 (km) 5% 折扣 1000 < =s < 2000(km) 8% 折扣 2000 < =s < 3000(km) 10% 折扣 3000 < =s (km) 15% 折扣 ---- 設每公里每噸貨物的基本運費為p, 貨物重為w, 距離為s, 折扣為d, 則總運費計算公式為:

---- f=p*w*s*(1-d) ---- 分析此問題, 折扣的變化是有規律的: 折扣的「 變化點」 都是250 的倍數(250,500,1000,2000,3000)。利用這一特點, 可以再設一變數c, 它代表250 的倍數。

當c<1 時, 無折扣;1<=c<2 時, 折扣為d=2%;2<=c<4 時,d=5%;4<=c<8 時,d=8%;8<=c<12 時,d=10%; c>=12 時,d=15%。 所以可以有如下沒有錯誤的程式段>=3000)c=12 else c=s/250 switch(c) f=p*w*s*(1-d/100.

0); printf(「freight%15.f」,f); ---- 如同前一個題目, 這個程式段也完全可以利用switch 特點, 改進優化得到如下程式段>=3000)c=12 else c=s/250 switch(c) f=p*w*s*(1-d/100.

0); printf(「freight%15.4f」,f); ---- 從上面兩個例子分析, 使我們可以比較清楚地看見c語言中switch 語句與其它語言中相應語句的區別。 儘管在學習和教計算機語言的過程中, 我們始終認為語言是相通的, 這樣便於學習一門新的語言。

但是真正要把某一門計算機語言學好, 非得掌握它的特點。 ---- 這裡僅僅是自己在程式設計實踐過程中的一點體會, 有錯誤的地方懇請批評指正。 希望對你有幫助!

4樓:匿名使用者

特意找課本看了一下:

switch(表示式)

其語義是:計算表示式的值。 並逐個與其後的常量表示式值相比較,當表示式的值與某個常量表示式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。

如表示式的值與所有case後的常量表示式均不相同時,則執行default後的語句。

在switch語句中,「case 常量表示式」只相當於一個語句標號, 表示式的值和某標號相等則轉向該標號執行,但不能在執行完該標號的語句後自動跳出整個switch 語句,所以出現了繼續執行所有後面case語句的情況。 這是與前面介紹的if語句完全不同的,應特別注意。為了避免上述情況, c語言還提供了一種break語句,專用於跳出switch語句,break 語句只有關鍵字break,沒有引數。

在後面還將詳細介紹。修改例題的程式,在每一case語句之後增加break 語句, 使每一次執行之後均可跳出switch語句,從而避免輸出不應有的結果。

5樓:匿名使用者

執行case 2是因為在switch (x) 中x=1,所以執行case 1,然而case 1 這條語句沒有break,所以switch (x)在執行了case 1之後將繼續往下依次執行case語句,直到碰到break就跳出switch 迴圈。

對於「a的自加是先執行後在自加,當此程式a自加的時候沒有執行其他語句啊?????? 」 則是你沒看到程式中的語句a++,b++它自加完了以後把值任然是賦值給a,b本身的,而不是賦值給其他變數例如c=a++;z=b++。如果是這樣賦值給別的變數的話那麼就很明確了c,z的值將和課本上說得一樣都是自加以前的值 。

也就是說這個程式當中最後printf輸出的是a,b的值,但是a,b在自加過程中值都變化了,就是說相當於語句a=a++,b=b++.

我將你的程式進行了更改,你將兩個程式都執行下然後再對照著看一下就明白為什麼a,b的值最後是2和1了,程式如下

#include

main()

case 2: c=a++,z=b++;break;

case 3:a++,b++;

} printf("c=%d,z=%d\n",c,z) ;

}對於 ++i 和i++ 有什麼區別?

簡單而言: ++i在i 儲存的值上增加一併向使用它的表示式「返回」 新的, 增加後的值; 而i++ 對i增加一, 但返回原來的是未增加的值。

c語言中的switch是什麼意思?

6樓:飛喵某

1、switch語句的字面意思是開關,是用來進行多重選擇。具體的用法首先開啟c-free5.0軟體,然後新建一個名為switch.c檔案,然後在引入標頭檔案和main主函式:

2、首先定義一個整型數值,然後從外面寫入這個值,這裡用到的scanf函式就是從外面讀入一個值給a,然後執行一下,輸入一個數驗證:

3、接著用switch先判斷獲得是什麼值,按照獲得的值來執行相應的步驟,注意這裡輸入的值必須是定義的值,否則switch語句的條件不會被觸發;最後的default則是用來判斷不滿足以上條件用的,不滿足的時候這裡列印出另一句話告訴使用者輸入非法了:

4、最後編譯除錯下程式,看看對不對, 當輸入1-5任意一個值的時候,螢幕上會列印出相應的語句。以上就是c語言中switch語句的用法:

c語言中switch結構的使用,C語言中switch結構的使用

秋風依舊好 因為case後面不能接範圍,也就是說case後面是一個確實固定的常量.用下面的方法比較好,include int main 你可以先把範圍用字母或常量代替 再用switch語句 資料 include void main else printf score scanf d s system...

c語言中函式指標用法,C語言中函式指標用法

函式在記憶體中有一個物理位置,而這個位置是可以賦給一個指標的。一零點函式的地址就是該函式的入口點。因此,函式指標可被用來呼叫一個函式。函式的地址是用不帶任何括號或引數的函式名來得到的。這很類似於陣列地址的得到方法,即,在只有陣列名而無下標是就得到陣列地址。怎樣說明一個函式指標變數呢 為了說明一個變數...

c語言strcpy用法,c語言中strcpy函式幹什麼用的

飛喵某 2 接著定義兩個陣列a和b,程式經過strcpy函式處理,將b陣列中的字串複製到a陣列中,最後列印出結果 3 最後來看看效果。開啟除錯視窗,輸入一句話,按下回車輸出了這句話。以上就是c語言中strcpy的用法 例如 定義一個字串char a 20 和一個字串c i am a teacher ...