求一個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<<"輸入錯誤!!!"< 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內出現的變量定義語句,最好放在復合語句{}中包起來。 if-else-end語句所對應的是多重判斷選擇,而有時也會遇到多分支判斷選擇的問題。 MATLAB語言為解決多分支判斷選擇提供了switch-case語句。switch-case語句的一般表達形式為:switch〈選擇判斷量〉Case 選擇判斷值1選擇判斷語句1case 選擇判斷值2選擇判斷語句2……otherwise判斷執行語句end與其他的程序設計語言的switch-case語句不同的是,在MATLAB語言中,當其中一個case語句后的條件為真時,switch-case語句不對其后的case語句進行判斷,也就是說在MATLAB語言中,即使有多條case判斷語句為真,也只執行所遇到的第一條為真的語句。 這樣就不必像C語言那樣,在每條case語句后加上break語句以防止繼續執行后面為真的case條件語句。 switch語句的各個case分支可以有多條語句,應該是指兩方面:一方面是指switch后面可以跟多個case。 語句,另外一方面,指每個case中,可以是一個多行語句構成的復合代碼,而不是僅僅能夠寫一行代碼。 例如: switch(n){ case 1: x:=0; break; case 2://這里的case后面有多行(4行)代碼 x=x/2; y=y/3; z=x+y*6; break; case 。 case n://case個數為多個 x=x*2+n; break; }。 switch 語句 :多選一列子: A=1SWITCH(A){CASE 1 : 輸出 A=1; // case 后面的值(“1”)是 switch(a)的判斷結果CASE 2 : 輸出 A=2; //}這個例子結果: 輸出 A=1; 也就是說,switch 語句就是判斷一個條件(switch(a)), 然后在下面的語句中寫上所有可能的結果。 以便在程序運行后,讓程序選擇適合的結果。for語句:是一個循環過程。 for跟switch的區別在于:switch判斷后,如果沒有合適的選項,則運行后,無結果。 而for 語句,在沒有符合條件的情況下,會不停 的執行。 直到符合條件為止。例子: for(int i =0 ; i <-1; i++) -> 在for里面定義i =0;然后判定條件i<-1,每執行一次for語句,i會自加一.也就是說,第一次運行i=0;i是大于-1,的, 第二次在運行,由于i++后 i的值為1.所以進行第二次判斷的適合,i還是大于-1;如此循環下去,i的值永遠不可能小于-1,這個語句也就永遠不可能結束。 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 語句與其它語言中相應語句的區別。 盡管在學習和教計算機語言的過程中, 我們始終認為語言是相通的, 這樣便于學習一門新的語言。 但是真正要把某一門計算機語言學好, 非得掌握它的特點。 ---- 這里僅僅是自己在編程實踐過程中的一點體會, 有錯誤的地方懇請批評指正。 希望對你有幫助!。 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 < 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%。 所 以 可 以 有 如 下 沒 有 錯 誤 的 程 序 段: 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 。 #include <iostream> int main() { using namespace std; int a; cin >> a; switch(a) { case 1: cout <<; "你輸入了1"; break; case 2: cout <<; "你輸入了2"; break; case 3: cout <<; "你輸入了3"; break; default: cout <<; "你輸入的不是1~3"; break; } } 轉載請注明出處華閱文章網 » switch語句舉例 switch語句怎么用
請詳細舉例解釋說明下switch語句的用法
c++中 switch語句的各個case分支可以有多條語句,舉例說明什么是多
switch語句與for語句的區別,能舉例說明嗎?謝啦
C語言里的switch語句怎么用,最好有例子哈~
C語言里的switch語句怎么用,最好有例子哈
C++編程問題,求switch語句的例子