有關C語言 switch語句的例題講解
格式太 不好了,我給你弄了下很清楚明顯了,希望以后一定要注意格式,這樣不僅美觀,而且對找問題很有幫組:
void main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1:
switch(b<0) //b明顯大于0,所以這里的判斷b<0得到的結果明顯為假,也就是0,而下面的case里面只有1,2所以都不滿足
{
case 1:printf("@");break;
case 2:printf("!");break;
//上面2個條件都不滿足,而后面又沒有break等,所以順序執行下面的語句
}
case 0: //也就是到這里來了
switch(c==5) //c明顯等于5,所以這里得到的結果真,也就是1
{
case 0:printf("*");break;
case 1:printf("#");break; //滿足這個條件,然后打印“#”,并break推出
case 2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
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語句用法
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語句
執行case 2是因為在switch (x) 中x=1,所以執行case 1,然而case 1 這條語句沒有break,所以switch (x)在執行了case 1之后將繼續往下依次執行case語句,直到碰到break就跳出switch 循環。
對于“a的自加是先執行后在自加,當此程序a自加的時候沒有執行其他語句啊?????? ” 則是你沒看到程序中的語句a++,b++它自加完了以后把值任然是賦值給a,b本身的,而不是賦值給其他變量例如c=a++;z=b++。如果是這樣賦值給別的變量的話那么就很明確了c,z的值將和課本上說得一樣都是自加以前的值 。
也就是說這個程序當中最后printf輸出的是a,b的值,但是a,b在自加過程中值都變化了,就是說相當于語句a=a++,b=b++. 我將你的程序進行了更改,你將兩個程序都運行下然后再對照著看一下就明白為什么a,b的值最后是2和1了,程序如下#include
c語言switch語句
不能,case后面的常量表達式只能是整型,字符型
#include<stdio.h>
void main()
{
int score=0;
int grade=0;
printf("成績(0-100)\n");
scanf("%d",&score); //鍵盤輸入學生成績
while(score>=0&&score<=100)
{
grade=score/10;
switch(grade)
{
case 10:
case 9:
printf("A");
break;
case 8:
printf("C");
break;
case 7:
printf("D");
break;
case 6:
printf("E");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("不及格");
break;
}
scanf("%d",&score); //鍵盤輸入下一個學生成績
}
printf("輸入錯誤!");
}
這個程序可一連續輸入成績,直道你輸入0-100之外的數就會結束程序的運行!
求一個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<<"輸入錯誤!!!"< 比如。你要開燈,現在有7種顏色的燈:1--赤;2--橙;3--黃;4--綠;5--藍;6--靛;7--紫。 各種顏色的代號如上所示。 現在你要選擇燈的顏色,就可以用swtich語句: switch(light) { case 1:printf("開赤燈\n");break; case 2:printf("開橙燈\n");break; case 3:printf("開黃燈\n");break; case 4:printf("開綠燈\n");break; case 5:printf("開藍燈\n");break; case 6:printf("開靛燈\n");break; case 7:printf("開紫燈\n");break; default:printf("沒有此顏色的燈\n"); } 還有什么問題請繼續指教。滿意的話。。O(∩_∩)O 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語句也是屬于判斷語句,if else語句適合3個以內的判斷,但是多了用if就不太方便了,所以這時3個以上的判斷用switch語句就比較方便了,結構就像樓上的兄弟們那樣寫的,大概怎么用我舉個例子你就懂了。 例:判斷一周的食譜,就是星期幾的食譜是什么,首先一個星期7天,那么判斷七次,用switch語句寫法如下: #include void main() { int a;//定義變量用于開辟1到7的數字即一星期的天數。 printf("看看星期幾的食譜是什么?"); scanf("%d",&a); switch(a)//開始判斷1-7的食譜。 { case 1:printf("星期一吃水果\n"); break;//結束語句,判斷這天后提示完就不執行下面的語句了,否則邏輯錯誤。 case 2:printf("星期二吃蔬菜\n"); break; case 3:printf("星期三吃火鍋\n"); break; case 4:printf("星期四吃米飯\n"); break; case 5:printf("星期五吃西餐\n"); break; case 6:printf("星期六吃米飯\n"); break; case 7:printf("星期天吃滿漢全席\n"); break; default:printf("請輸入正確的日期\n");//default語句類似else,如果不輸入1到7的正確日期就顯示這個語句。 break; } } 擴展資料 if 語句:“如果”語句;if—else 語句:“若…(則)…否則…”語句;switch 語句:“切換”語句;switch—case:“切換—情況”語句。 跳轉結構 return:用在函數體中,返回特定值(如果是void類型,則不返回函數值)。(K&R時期引入) continue:結束當前循環,開始下一輪循環。(K&R時期引入) break:跳出當前循環或switch結構。(K&R時期引入) goto:無條件跳轉語句。(K&R時期引入) 分支結構 if:條件語句,后面不需要放分號。(K&R時期引入) else:條件語句否定分支(與if連用)。(K&R時期引入) switch:開關語句(多重分支語句)。(K&R時期引入) case:開關語句中的分支標記,與switch連用。(K&R時期引入) default:開關語句中的“其他”分支,可選。(K&R時期引入) 參考資料:搜狗百科 c語言 轉載請注明出處華閱文章網 » c語言switch語句格式 C語言的switch語句
C語言里的switch語句怎么用,最好有例子哈~
c語言中switch怎么用