|
. case 常量n; 語(yǔ)句n或空; default: 語(yǔ)句n+1或空; }
執(zhí)行switch開(kāi)關(guān)語(yǔ)句時(shí), 將變量逐個(gè)與case后的常量進(jìn)行比較, 若與其中一個(gè)相等, 則執(zhí)行該常量下的語(yǔ)句, 若不與任何一個(gè) 常量相等, 則執(zhí)行default 后面的語(yǔ)句。 注意: 1. switch中變量可以是數(shù)值, 也可以是字符。 2. 可以省略一些case和default。 3. 每個(gè)case或default后的語(yǔ)句可以是語(yǔ)句體, 但不需要使用"{"和"}"括起來(lái)。
下例的switch中變量為整數(shù)型。
例19:
main() { int test; for(test=0; test<=10; test++) { switch(test) /*變量為整型數(shù)的開(kāi)關(guān)語(yǔ)句*/ { case 1: printf("%d\n", test); break; /*退出開(kāi)關(guān)語(yǔ)句*/ case 2: printf("%d\n", test); break; case 3: printf("%d\n", test); break; default: puts("Error"); break; } } }
下例的switch中變量為字符型。
例20:
#include<stdio.h> main() { char c; while(c!=27) /*循環(huán)直到按Esc鍵結(jié)束*/ { c=getch(); /*從鍵盤(pán)不回顯接收一個(gè)字符*/ switch(c) { case 'A': /*接收的字符為'A'*/ putchar(c); break; /*退出開(kāi)關(guān)語(yǔ)句*/ case 'B': putchar(c); break; default: /*接收的字符非'A'和'B'*/ puts("Error"); break; } } }
1.3.4 break、continue和goto語(yǔ)句
1.3.4.1 break語(yǔ)句 break語(yǔ)句通常用在循環(huán)語(yǔ)句和開(kāi)關(guān)語(yǔ)句中。當(dāng)break用于開(kāi)關(guān)語(yǔ)句switch中時(shí), 可使程序跳出switch而執(zhí)行switch以后的語(yǔ) 句; 如果沒(méi)有break語(yǔ)句, 則將成為一個(gè)死循環(huán)而無(wú)法退出。break在switch 中的用法已在前面介紹開(kāi)關(guān)語(yǔ)句時(shí)的例子中碰到,這 里不再舉例。 當(dāng)break語(yǔ)句用于do-while、for、while循環(huán)語(yǔ)句中時(shí), 可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語(yǔ)句, 通常break語(yǔ)句總是與if 語(yǔ)句聯(lián)在一起。 即滿足條件時(shí)便跳出循環(huán)。
例19:
main() { int i=0; char c; while(1) /*設(shè)置循環(huán)*/ { c='\0'; /*變量賦初值*/ while(c!=13&&c!=27) /*鍵盤(pán)接收字符直到按回車(chē)或Esc鍵*/ { c=getch(); printf("%c\n", c); } if(c==27) break; /*判斷若按Esc鍵則退出循環(huán)*/ i++; printf("The No. is %d\n", i); } printf("The end"); }
注意: 1. break語(yǔ)句對(duì)if-else的條件語(yǔ)句不起作用。 2. 在多層循環(huán)中, 一個(gè)break語(yǔ)句只向外跳一層。
1.3.4.2 continue 語(yǔ)句 continue語(yǔ)句的作用是跳過(guò)循環(huán)本中剩余的語(yǔ)句而強(qiáng)行執(zhí)行下一次循環(huán)。 continue語(yǔ)句只用在for、while、do-while等循環(huán)體中,常與if條件語(yǔ)句一起使用,用來(lái)加速循環(huán)。
例20:
main() { char c; while(c!=0X0D) /*不是回車(chē)符則循環(huán)*/ { c=getch(); if(c==0X1B) continue; /*若按Esc鍵不輸出便進(jìn)行下次循環(huán)*/ printf("%c\n", c); } }
1.3.4.3 goto 語(yǔ)句 goto語(yǔ)句是一種無(wú)條件轉(zhuǎn)移語(yǔ)句, 與BASIC中的goto語(yǔ)句相似。goto 語(yǔ)句的使用格式為:
goto 標(biāo)號(hào);
其中標(biāo)號(hào)是Turbo C2.0中一個(gè)有效的標(biāo)識(shí)符, 這個(gè)標(biāo)識(shí)符加上一個(gè)":" 一起出現(xiàn)在函數(shù)內(nèi)某處, 執(zhí)行g(shù)oto語(yǔ)句后, 程序?qū)⑻D(zhuǎn) 到該標(biāo)號(hào)處并執(zhí)行其后的語(yǔ)句。另外標(biāo)號(hào)必須與goto語(yǔ)句同處于一個(gè)函數(shù)中, 但可以不在一個(gè)循環(huán)層中。通常 goto 語(yǔ)句與if條件 語(yǔ)句連用, 當(dāng)滿足某一條件時(shí), 程序跳到標(biāo)號(hào)處運(yùn)行。 goto語(yǔ)句通常不用, 主要因?yàn)樗鼘⑹钩绦驅(qū)哟尾磺? 且不易讀, 但在多層嵌套退出時(shí), 用goto語(yǔ)句則比較合理。 例19用goto語(yǔ)句時(shí)變?yōu)?
例21:
main() { int i=0; char c; while(1) { c='\0'; while(c!=13) { c=getch(); if(c==27) goto quit; printf("%c\n", c); } i++; printf("The No. is %d\n", i); } quit: printf("The end"); }
|