switch語句怎么用
switch(x){ (prime(x)){case2:case3:case5:case7:process_prime(x);}else{case4:case6:case8:case9:case10:process_composite(x);}}你能說出它如何執行嗎?switch語句的格式為:switch(條件)語句其中,條件的類型可以是整數類型,枚舉類型,或者類類型(但該類需要有單一的轉換到整數類型或(可以是字符類型,但不能是浮點類型、字符串、指針類型等),語句部分不一定非得是一條復合語句。
因此,switch("123"[2]+(int)3。1);是條合法的switch語句,switch(j)case5:i++;也是條合法的switch語句。
如果switch的語句部分是一條非復合語句,則其內定義的變量作用域,效果上等同于該條語句加上了{}。 如inti=3;switch(i)inti=4;,相當于inti=3;switch(i){inti=4;},因此這并不會導致同一局部域下的重復定義錯誤。
case標號后為一個整數類型的常量表達式,因此inti=3;switch(i){case3:;}合法,而inti=3;switch(3){casei:;}不合法,因為casei:的i不是個靜態表達式。 如果將inti=3;換成constinti=3;則后者在C++中就合法了,但在C中仍然不合法。
原因是C和C++對const的處理不同,在C中,const限定的量是不能直接去修改的,但它本身并不是常量表達式;在C++中,const限定的量,如果其值能在編譯時確定,則其可出現在必須使用常量表達式之處。 同一個switch的各個case標號的值不能夠相互重復。
要注意的是,case標號在實現中是有上限的:C89標準要求至少257個,這保證了ASCII被switch列舉一遍。雖然要求case標號是常量表達式,看起來似乎不是很零活方便(比如對比VB的SelectCase),但是這樣的設計可以保證更高的效率,而效率則是C和C++最為看重的因素。
因為case標號的值是編譯時可確定的整數類型,又因為其不可有重復,因此編譯器可以進行優化。最后要強調的問題是,C++中goto不能從前往后跳過變量定義,因此switch內出現的變量定義語句,最好放在復合語句{}中包起來。
求一個switch語句的例子
隨便寫了一個,輸入月份,判斷天數。
語句中有注釋。 #include
case 1: cout<<"1月有31天";break; case 2: cout<<"2月有28天";break; case 3: cout<<"3月有31天";break; case 4: cout<<"4月有30天";break; case 5: cout<<"5月有31天";break; case 6: cout<<"6月有30天";break; case 7: cout<<"7月有31天";break; case 8: cout<<"8月有31天";break; case 9: cout<<"9月有30天";break; case 10: cout<<"10月有31天";break; case 11: cout<<"11月有30天";break; case 12: cout<<"12月有31天";break; default: cout<<"輸入錯誤!!!"< C語言中switch語句的格式是這樣的 switch(表達式) { case 常量表達式1: 語句1 case 常量表達式2: 語句2 。 case 常量表達式n: 語句n default : 語句n+1 } 它的執行流程:當表達式的值和某個case后面的語句相同時執行這個case后面的語句(并接著執行下面的語句,如果不希望接著執行下面的語句要用break語句跳出)。 下面C語言實現的你的邏輯要求(程序已調試過了): #include "stdio.h" main() { int num; scanf("%d",&num); switch(num) { case 1: putchar('A'); break; case 2: putchar('B'); break; case 3: putchar('C'); break; case 4: putchar('D'); break; default: putchar('?'); } printf("\n"); } 希望對朋友你有幫助! 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 語句與其它語言中相應語句的區別。 盡管在學習和教計算機語言的過程中, 我們始終認為語言是相通的, 這樣便于學習一門新的語言。 但是真正要把某一門計算機語言學好, 非得掌握它的特點。 ---- 這里僅僅是自己在編程實踐過程中的一點體會, 有錯誤的地方懇請批評指正。 希望對你有幫助!。 #include void main() { switch(1+1) { case 2:printf("回答正確"); break; case 3:printf("錯誤"); break; case 4:printf("錯誤"); break; case 5: printf("錯誤"); break; default : d=a/b; printf("報錯咯“); break; } 在C語言中,switch語句是開關語句,一般與case、break、default配合使用,對流程進行控制。 switch語句的語法規則: switch ( 變量表達式 ) { case 常量1 :語句;break; case 常量2 :語句;break; case 常量3 :語句;break; 。 case 常量n:語句;break; default :語句;break; } 其中switch、case、break、default都是關鍵詞。 switch作為一個開關,當變量表達式的值對應case中的值時,執行case后面的語句后跳出switch語句,如果都不符合則執行default后面的語句后跳出switch語句。 使用舉例:判斷分數等級,程序如下。 擴展資料: switch語句規則: 1、switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則: 2、只能針對基本數據類型中的整型類型使用switch,這些類型包括int、char等。 對于其他類型,則必須使用if語句。 3、switch()的參數類型不能為實型 。 4、case標簽必須是常量表達式(constantExpression),如42或者'4'。 5、case標簽必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。 參考資料來源:百度百科-switch(計算機語言關鍵詞)。 switch語句的語法如下(switch,case和default是關鍵字): switch ( 表達式) { case 常量表達式1 :語句1;break; case 常量表達式2 :語句2;break; …… case 常量表達式n :語句n;break; default:語句n+1;break;}說明:break退出{ }case后面只能跟一個值(加冒號:),而不能是一個表達式 switch(表達式) 后面沒有;(分號){}前后沒有;(分號)switch語句規則 case標簽必須是常量表達式(constant Expression) 只能針對基本數據類型使用switch,這些類型包括int、char等。 對于其他類型,則必須使用if語句。 case標簽必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。 不要問為什么,C就這規定!我們只需要了解規則,學會應用即可!猜想原因:浮點型數據不是準確的數據,在機器中只能表示出一個近似值,如:0.1 在機器中存的是0.09999612。. 也可能是0.09999723。 . 根據精度不同,數據來源不同,其值是個不確定的數據,因此,不能用CASE來定位。 if-else-end語句所對應的是多重判斷選擇,而有時也會遇到多分支判斷選擇的問題。 MATLAB語言為解決多分支判斷選擇提供了switch-case語句。 switch-case語句的一般表達形式為: switch〈選擇判斷量〉 Case 選擇判斷值1 選擇判斷語句1 case 選擇判斷值2 選擇判斷語句2 …… otherwise 判斷執行語句 end 與其他的程序設計語言的switch-case語句不同的是,在MATLAB語言中,當其中一個case語句后的條件為真時,switch-case語句不對其后的case語句進行判斷,也就是說在MATLAB語言中,即使有多條case判斷語句為真,也只執行所遇到的第一條為真的語句。這樣就不必像C語言那樣,在每條case語句后加上break語句以防止繼續執行后面為真的case條件語句。 轉載請注明出處華閱文章網 » switch語句怎么用給個示例 switch語句怎么用啊?(剛學單片機,switch語句書上就幾句話,連例
C語言里的switch語句怎么用,最好有例子哈~
【c語言初學者】switch語句用法,給寫個例子,比如1+1=?,a:2,b:3,c:4,
switch語句怎么用啊
switch語句怎么用
matlab中switch語句的用法例子