switch語句用法-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語句的用法
語法:switch(val){case x: //程序段1 break;case y: //程序段2 break;case z: //程序段3 break;default: //程序段4}首先,程序會用val的值與 x,y,z的值進行比較,如果等于其中某一個值,則程序跳轉至該case執行程序,執行完后退出switch語句。
例如等于x,則程序跳轉到程序段2,然后退出switch。如果所有的case值都不相等,則執行default中的程序,例如上面的程序段4.說明1:val的值應該為整數,case語句的個數可以很多,上面的x,y,z的值也是由你設定,但一定是一個常量說明2:case語句里邊的break別忘了,否則執行完該程序段后,會繼續往下執行。
switch語句的用法
語法:
switch(val)
{
case x:
//程序段1
break;
case y:
//程序段2
break;
case z:
//程序段3
break;
default:
//程序段4
}
首先,程序會用val的值與 x,y,z的值進行比較,如果等于其中某一個值,則程序跳轉至該case執行程序,執行完后退出switch語句。例如等于x,則程序跳轉到程序段2,然后退出switch。如果所有的case值都不相等,則執行default中的程序,例如上面的程序段4.
說明1:val的值應該為整數,case語句的個數可以很多,上面的x,y,z的值也是由你設定,但一定是一個常量
說明2:case語句里邊的break別忘了,否則執行完該程序段后,會繼續往下執行
C語言:switch語句用法
case (c>=90 && c<=100): case后面的必須是一個常量。
你這個可以先將成績除以10,再用switch #include "stdio.h" void main() { char c; /*這里別用char,改成:int c,d;*/ scanf("%c",&c); /*這一句也改成scanf("%d",&c);最好前面再加一句,printf("請輸入成績:"); 在這句后面加一句d=c/10;*/ switch(c) /*然后switch里面用d來判斷,switch(d)*/ { case (c>=90 && c<=100):printf("成績的等級為:A.\n"); break; /*改成: case (10): case (9):printf("成績的等級為:A.\n");break; case (c>=80 && c<=89):printf("成績的等級為:B.\n"); break; /*改成:case (8):printf("成績的等級為:B.\n"); break; } } 因為90到100之間的數經過除以10再取整以后就變成了9;100/10等于10,又因為case調用同一個語句的時候允許就在最后一個語句寫上那個語句,而將前面的那幾個省略掉,所以case (10):后面的就省掉了,當然寫上也不會錯。 你的補充的那個,你可以把它分開表示,就像我給你弄的那個case (c>=90 && c<=100):printf("成績的等級為:A.\n"); break; /*改成: case (10): case (9):printf("成績的等級為:A.\n");break; 雖然有點糾纏不清的感覺,但是希望對解決你的疑問有一定的幫助,呵呵。
java中switch語句的用法
switch 語句的格式:switch ( 整型或字符型變量 ) { case 變量可能值1 : 分支一; break; case 變量可能值2 : 分支二; break; case 變量可能值3 : 分支三; break; 。
default : 最后分支; } 在 switch 的語法里,我們要學到4個關鍵字:switch、case 、break、default。在 switch ( 變量 ) 這一行里,變量只能是整型或字符型。
程序先讀出這個變量的值,然后在各個"case"里查找哪個值和這個變量相等,如果相等,就算條件成立,程序執行相應的分支,直到碰上break或者switch語句結束。了解一下switch,case,break,default的意思,對理解前面的一切也會有幫助,它們分別是:開關,情況,中斷,默認(值)。
那么用一句話套起來的說法就是:根據開關值的不同,執行不同的情況,直到遇上中斷;如果所有的情況都不符合開關值,那么就執行默認的分支。最后說一下關于switch中非常重要的幾個注意點。
第一、switch ( 整型或字符型變量 ) 中,變量的類型如文中所標,只能是整型和字符類型。它們包含 int,char。
當然無符類型或不同的長度整型(unsigned int,short,unsigned char)等都可以。另外,枚舉類型(enum)內部也是由整型或字符類型實現。
所以也可以。實型(浮點型)數就不行,如:float a = 0.123; switch(a) //錯誤!a不是整型或字符類型變量。
{ 。.} 第二、case 之后可以是直接的常量數值,如例中的1、2、3、4,也可以是一個使用常量計算式,如2+2等,但不能是變量或帶有變量的表達式,如 a * 2等。
當然也不能是實型數,如4.1,或2.0 / 2 等。switch(formWay) { case 2-1 : //正確 。
case a-2 : //錯誤 。 case 2.0 : //錯誤 。
} 另外,在case 與常量值之后,需要一個冒號,請注意不要疏忽。第三、break 的作用。
break 使得程序在執行完選中的分支后,可以跳出整個switch語句(即跳到switch接的一對{}之后),完成switch。如果沒有這個break,程序將在繼續前進到下一分支,直到遇到后面的break或者switch完成。
比如,假設現在程序進入case 1: 中的分支,但case 1 的分支這回沒有加break:case 1 : *n("您是通過搜索引擎來到本網站的。"); case 2 : *n("您是通過朋友介紹來到本網站的。
"); 那么,程序在輸出 "您是通過搜索引擎來到本網站的。" 之后,會繼續輸出case 2中的 "您是通過朋友介紹來到本網站的。
" 。請大家將前面實例中的代碼片段改為如下(紅色部分,即將所有的break都通過加//使之無效。)
: 。 case 1 : *n("您是通過搜索引擎來到本網站的。
" ); //break; case 2 : *n("您是通過朋友介紹來到本網站的。"); //break; case 3 : *n("您是通過報刊雜志來到本網站的。
"); //break; case 4 : *n("您是通過其它方法來到本網站的。"); //break; default : *n("錯誤的選擇!請輸入1~4的數字做出選擇。
"); 。運行后,結果會是如何?請大家動手試試,然后在作業中回答我。
第四、default是可選中,前面我們已經說過它的用處,及如果沒有default,程序在找不到匹配的case分支后,將在switch語句范圍內不做什么事,直接完成switch。大家也可以在實例中將default的代碼注釋掉,然后試運行,并且在選擇時輸入5。
。//default : //cout << "錯誤的選擇!請輸入1~4的數字做出選擇。
" << endl;。第五、必要時,可在各個case中使用{}來明確產生獨立的復合語句。
前面我們在講if。語句和其它流程控制語句時,都使用{}來產生復合語句:if (條件) { 分支一; } 除非在分支中的語句正好只有一句,這里可以不需要花括號{}。
但在switch的各個case語句里,我們在語法格式上就沒有標出要使用{},請看:switch ( 整型或字符型變量 ) { case 變量可能值1 : 分支一; break; case 變量可能值2 : 。.} 一般教科書上只是說 case 分支可以不使用{},但這里我想提醒大家,并不是任何情況下case分支都可以不加{},比如你想在某個case里定義一個變量:switch (formWay) { case 1 : int a=2; //錯誤。
由于case不明確的范圍,編譯器無法在此處定義一個變量。 。
case 2 : 。} 在這種情況下,加上{}可以解決問題。
switch (formWay) { case 1 : { int a=2; //正確,變量a被明確限定在當前{}范圍內。 。
} case 2 : 。}。
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子句可以省略不用。
Switch case 語句怎么使用
switch的用法是判斷case后面的表達式和switch后面的表達式是否相匹配,一旦case匹配,就會順序執行后面的程序代碼,而不管后面的case是否匹配,直到遇見break。
Switch case 語句表達式為: switch{case 常量1: 語句體1;case 常量2: 語句體2;case 常量3: 語句體3;case 常量4: 語句體4;。.default : 語句體;} 當常量表達式所表達的量與其中一個case語句中的常量相符時,就執行此case語句后面的語句,并依次下去執行后面所有case語句中的語句,除非遇到break;語句跳出switch語句為止。
如果常量表達式的量與所有case語句的常量都不相符,就執行default語句中的語句并跳出switch語句。 擴展資料 switch 。
case語句的特點: 1、把要討論的表達式與case后面的常量進行比較,發現匹配項之后,從該位置入口,做它下面的所有語句。 2、case 后面的常量不能重復 3、可以在每一個case語句的后面加上break語句,這樣就能保證只做與之相匹配的那一項。
4、break實質:在switch 。case語句里面最先遇到那一個break就從該位置結束該語句 5、可以在最后一個case的下面加上default語句表示如果找不到匹配項時,就做default對應的項。
6、default并不是一定要有,如果前面遇到break,default就不執行。如果沒有遇到break,就一定會執行。
7、case后面的語句可以不執行,表示與下一個case是或的關系。 參考資料來源:百度百科——switch。
c語言中“switch ”語句的用法有哪些
C語言程序語句switch: switch用在編程中,如C語言中它經常跟case一起使用,是一個判斷選擇代碼。
其功能就是控制業務流程流轉的。 switch語句的語法如下(switch,case和default是關鍵字): switch ( controllingExpression ) { case constantExpression1 : case constantExpression2 : case constantExpression3 : statements; //當滿足constantExpression1、constantExpression2、constantExpression3任何一個都執行statements break; case constantExpression : statements ; break; 。
default : statements ; break; } 遵守switch語句規則 switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則: 只能針對基本數據類型使用switch,這些類型包括int、char等。
對于其他類型,則必須使用if語句。 case標簽必須是常量表達式(constantExpression),如42或者"42"。
如果需要在運行時計算case標簽的值,必須使用if語句。 case標簽必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。
C語言switch應用例子: 例一: #include int main() { double score; printf("請輸入分數:\n"); scanf("%lf",&score); switch((int)(score/10)) //如果寫成witch((int)score/10)會出現嚴重錯誤 { case 10: case 9:printf("A(最好)\n");break; case 8:printf("B(優秀)\n");break; case 7:printf("C(良好)\n");break; case 6:printf("D(及格)\n");break; case 5: case 4: case 3: case 2: case 1: case 0:printf("E(不及格)\n");break; default:printf("Error!\n"); } } 例二: #include int main() { char rank; printf("請輸入分數等級:(A、B、C、D、E)\n"); scanf("%c",&rank); switch(rank)//switch((int)score/10)出現嚴重錯誤,switch(((int)score)/10)出現嚴重錯誤, { case 'A':printf("A(90~100)\n");break; case 'B':printf("B(80~89)\n");break; case 'C':printf("C(70~79)\n");break; case 'D':printf("D(60~69)\n");break; case 'E':printf("E(0~59)\n");break; default:printf("error!\n");break; } } 例三: 輸入年月日,判斷這一天是這一年的第幾天。 #include int main() { int year,month,date,leap,days=0; scanf("%4d%2d%2d",&year,&month,&date); leap=(year%4==0&&year%100!=0||year%400==0); switch(month) { case 12:days+=30; case 11:days+=31; case 10:days+=30; case 9:days+=31; case 8:days+=31; case 7:days+=30; case 6:days+=31; case 5:days+=30; case 4:days+=31; case 3:days+=28+leap; case 2:days+=31; case 1:days+=date;break; } printf("%4d年%2d月%2d日是這一年的第%d天。
\n",year,month,date,days); }。
C語言:switch語句用法
case (c>=90 && c<=100):
case后面的必須是一個常量。
你這個可以先將成績除以10,再用switch
#include "stdio.h"
void main()
{
char c; /*這里別用char,改成:int c,d;*/
scanf("%c",&c); /*這一句也改成scanf("%d",&c);最好前面再加一句,printf("請輸入成績:"); 在這句后面加一句d=c/10;*/
switch(c) /*然后switch里面用d來判斷,switch(d)*/
{
case (c>=90 && c<=100):printf("成績的等級為:A.\n");
break; /*改成: case (10):
case (9):printf("成績的等級為:A.\n");break;
case (c>=80 && c<=89):printf("成績的等級為:B.\n");
break; /*改成:case (8):printf("成績的等級為:B.\n"); break;
}
}
因為90到100之間的數經過除以10再取整以后就變成了9;100/10等于10,又因為case調用同一個語句的時候允許就在最后一個語句寫上那個語句,而將前面的那幾個省略掉,所以case (10):后面的就省掉了,當然寫上也不會錯。
你的補充的那個,你可以把它分開表示,就像我給你弄的那個case (c>=90 && c<=100):printf("成績的等級為:A.\n");
break; /*改成: case (10):
case (9):printf("成績的等級為:A.\n");break;
雖然有點糾纏不清的感覺,但是希望對解決你的疑問有一定的幫助,呵呵。
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 語句與其它語言中相應語句的區別。 盡管在學習和教計算機語言的過程中, 我們始終認為語言是相通的, 這樣便于學習一門新的語言。
但是真正要把某一門計算機語言學好, 非得掌握它的特點。 ---- 這里僅僅是自己在編程實踐過程中的一點體會, 有錯誤的地方懇請批評指正。
希望對你有幫助!。