switch語句怎么用啊 具體
switch語句的用法詳解 C語言還提供了另一種用于多分支選擇的switch語句, 其一般形式為:switch(表達式){ case常量表達式1: 語句1; case常量表達式2: 語句2; … case常量表達式n: 語句n; default:語句n+1;} 其語義是:計算表達式的值。
并逐個與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時, 即執行其后的語句,然后不再進行判斷,繼續執行后面所有case后的語句。如表達式的值與所有case后的常量表達式均不相同時,則執行default后的語句。
main() { int a; printf("input integer number: "); scanf("%d",&a); switch (a) { case 1:printf("Monday\n"); case 2:printf("Tuesday\n"); case 3:printf("Wednesday\n"); case 4:printf("Thursday\n"); case 5:printf("Friday\n"); case 6:printf("Saturday\n"); case 7:printf("Sunday\n"); default:printf("error\n"); } } 本程序是要求輸入一個數字,輸出一個英文單詞。但是當輸入4之后,卻執行了case4以及以后的所有語句,輸出了Wednesday及以后的所有單詞。
這當然是不希望的。為什么會出現這種情況呢?這恰恰反應了switch語句的一個特點。
在switch語句中,“case 常量表達式”只相當于一個語句標號, 表達式的值和某標號相等則轉向該標號執行,但不能在執行完該標號的語句后自動跳出整個switch 語句,所以出現了繼續執行所有后面case語句的情況。這是與前面介紹的if語句完全不同的,應特別注意。
為了避免上述情況,C語言還提供了一種break語句,專用于跳出switch語句,break 語句只有關鍵字break,沒有參數。在后面還將詳細介紹。
修改例題的程序,在每一case語句之后增加break 語句, 使每一次執行之后均可跳出switch語句,從而避免輸出不應有的結果。 switch 的分支語句一共有 n+1 種,而我們通常希望的都是選擇其中的一個分支來執行,執行完后就結束整個 switch 語句,而繼續執行 switch后面的語句,此時就可以通過在每個分支后加上 break 語句來實現了。
如下:switch (表達式) { case 常量表達式1: 語句1; break; case 常量表達式2: 語句2; break;。
case 常量表達式n: 語句n; break; default: 語句n+1; break; } 加了這個 break 語句后,一旦“常量表達式 x”與“表達式”的值相等了,那么就執行“語句 x”,執行完畢后,由于有了 break 則直接跳出 switch 語句,繼續執行 switch 語句后面的程序了,這樣就可以避免執行不必要的語句。把上面改成下面 main() { int a; printf("input integer number: "); scanf("%d",&a); switch (a) { case 1:printf("Monday\n");break; case 2:printf("Tuesday\n"); break; case 3:printf("Wednesday\n");break; case 4:printf("Thursday\n");break; case 5:printf("Friday\n");break; case 6:printf("Saturday\n");break; case 7:printf("Sunday\n");break; default:printf("error\n"); } } 在使用switch語句時還應注意以下幾點: 在case后的各常量表達式的值不能相同,否則會出現錯誤。
在case后,允許有多個語句,可以不用{}括起來。 各case和default子句的先后順序可以變動,而不會影響程序執行結果。
default子句可以省略不用。
C語言里的switch語句怎么用,最好有例子哈~
C語言“switch 語句” 的使用技巧顧紅 ---- C 語言作為國際上流行的計算機語言已經和正在被廣大的計算機用戶使用。
凡是使用過的人都會有同樣的感覺——C語言的使用靈活這個特點既是優點又是缺點, 因為對精通C語言的用戶來講, 靈活就意味著編程可以無拘無束, 甚至隨心所欲; 但對初學者或者是尚未摸著規律的用戶來說, 有時候就會覺得C程序設計有點象霧里看花, 摸不著頭腦。 因為靈活就意味著沒有一個標準。
而實際上,C 語言和其它計算機語言一樣, 只要你真正掌握了該語言的每一個語句的特點, 理解、 運用就不難掌握了。 下面就C語言中switch 語句的使用特點談談自己的體會。
---- switch 語句的格式如下: switch( 表達式) {case 常量表達式1: 語句1 case 常量表達式2: 語句2 case 常量表達式3: 語句3 case 常量表達式n: 語句n default : 語句n+1 } ---- 從表面上看來,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) {case 9:grade='A'; case 8:grade='B'; case 7:grade='C'; case 6:grade='D'; case 5:grade='E'; } printf(“the grade is %c”,grade); ---- 仔細閱讀這段程序( 根據C語言的特點),就會發現有很多錯誤。
首先, 對100 分和低于50 分的情況沒有考慮; 其次,C 語言的switch 特點是順序執行, 那么這段程序不輸入的分數如何, 最后的輸出都將是'E'。因此, 修改這段程序, 可以得到一個正確答案是: temp=score/10; switch(temp) {case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf(“the grade is %c,grade”); ---- 但這么一個結果還不算是一個好的C程序, 因為它只是能得到正確的解, 沒有真正用到C的特點。
如果將C的特點運用到這段程序中, 則程序將優化成如下: grade='A'; temp=score/10; switch(temp) {case 0: case 1: case 2: case 3: case 4: case 5:grade++; case 6:grade++; case 7:grade++; case 8:grade++; case 9: case 10: } printf(“the grade is %c,grade”); ---- 從這段程序中, 我們可以體會到前面所說的該語句的特點。 ---- 第二個例子: 運輸公司對用戶計算運費。
距離(s) 越遠, 每公里運費越低。 具體標準如下: s =12 時,d=15%。
所以可以有如下沒有錯誤的程序段: scanf(“%f,%f,%d”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c) {case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15; } f=p*w*s*(1-d/100.0); printf(“freight%15.f”,f); ---- 如同前一個題目, 這個程序段也完全可以利用switch 特點, 改進優化得到如下程序段: d=0 scanf(“%f,%f,%k”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c) {case 12:d+=5; case11: case 10: case 9: case 8:d+=2; case 7: case 6: case 5: case 4:d+=3; case 3: case 2:d+=3; case 1:d+=2; case 0: } f=p*w*s*(1-d/100.0); printf(“freight%15.4f”,f); ---- 從上面兩個例子分析, 使我們可以比較清楚地看見C語言中switch 語句與其它語言中相應語句的區別。 盡管在學習和教計算機語言的過程中, 我們始終認為語言是相通的, 這樣便于學習一門新的語言。
但是真正要把某一門計算機語言學好, 非得掌握它的特點。 ---- 這里僅僅是自己在編程實踐過程中的一點體會, 有錯誤的地方懇請批評指正。
希望對你有幫助!。
switch語句
#include<stdio.h>
int main()
{
int score,grade;
printf("Enter:");
scanf("%d",&score);
grade=score/10;
switch(grade)
{
case 10 :
case 9: printf("A");break;
case 8: printf("B");break;
case 7: printf("C");break;
case 6: printf("D");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: printf("E");break;
default: printf("error!");
}
getchar();
}
已調試通過!
新人關于switch語句問題
x=4;
switch(m)
{
default :x++ ;
case 1 : x++ ;
case 2 : x++; break ;
case 3 : x++;
case 4 : x++;
}
當m = 5的時候,由于沒有對應的case。就直接運行到default. x = 5;
但是 default 后沒有 break。 繼續執行下一個case語句 x = 6
同樣,case 1 也沒有 break. 執行case 2 x = 7. 此時到break停止。
當m= 4 的時候,直接運行case 4. x = 5了。
原理非常簡單,遇到break才停止。否則就一直運行下條case.
c語言中的switch語句
switch不能判斷一個數的范圍。除非這些數成線性關系,進行歸一化處理,使其每個條件變成一個數。
若沒有規律可以處理,還非要用switch會很累的。如下:
switch(x)
{
case 0:
case 1:
。//此處省略n行
case 850:
y=0;break;
case 851:
case 852;
。//沒完沒了的省略
case 1350;
y=5;break;
。//省略很多呢
}