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別忘了,否則執行完該程序段后,會繼續往下執行。
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內出現的變量定義語句,最好放在復合語句{}中包起來。
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;
雖然有點糾纏不清的感覺,但是希望對解決你的疑問有一定的幫助,呵呵。
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語句怎么用
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來定位
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); }。
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 : 。}。
c語言中switch語句的用法問題
百度知道不支持縮進,看代碼累 switch(a%3) { ``case 0: //當(a%3)==0時執行下面的語句直到遇到break或return ````m++; ````break; ``case 1: //當(a%3)==1時執行下面的語句直到遇到break或return ````m++; ``````switch(b%2) // 此switch在m++執行后繼續執行 ``````{ ````````case 0: //當b%2==0時執行下面的語句直到遇到break或return ``````````m++; ``````````break; ````````default: //當b%2 !=0時執行下面的語句直到遇到break或return或后面沒語句了自然結束此switch ``````````m++; ``````} }。
轉載請注明出處華閱文章網 » 在switch語句的用法