四、switch--case語句
在編寫程序時(shí), 經(jīng)常會(huì)碰到按不同情況分轉(zhuǎn)的多路問題, 這時(shí)可用嵌套if -else-if語句來實(shí)現(xiàn), 但if-else-if語句使用不方便, 并且容易出錯(cuò)。對(duì)這種情況, Turbo C2.0提供了一個(gè)開關(guān)語句。開關(guān)語句格式為:
switch(變量)
{
case 常量1:
語句1或空;
case 常量2:
語句2或空;
case 常量n:
語句n或空;
default:
語句n+1或空;
}
執(zhí)行switch開關(guān)語句時(shí),將變量逐個(gè)與case后的常量進(jìn)行比較,若與其中一個(gè)相等,則執(zhí)行該常量下的語句,若不與任何一個(gè)常量相等,則執(zhí)行default后面的語句。
注意:
1.switch中變量可以是數(shù)值,也可以是字符,但必須是整數(shù)。
2.可以省略一些case和default。
3.每個(gè)case或default后的語句可以是語句體,但不需要使用{和}括起來。
例如:
main()
{
int x,y;
scanf(%d,&x);
witch(x)
{
case 1:
y=x+1;
break; /*退出開關(guān)語句,遇到break才退出*/
case 4:
y=2*x+1;
break;
default:
y=x--;
break;
}
printf(%d\n,y);
}
從上面的例子可以看出,用開關(guān)語句編的程序一定可以用if語句做。那么在什么情況下需要用switch語句呢?一般在出現(xiàn)比較整的情況下或者能轉(zhuǎn)化成比較整數(shù)的情況下使用。看下面的例子:
例子:一個(gè)學(xué)生的成績分成五等,超過90分的為'A',80-89的為'B',70-79為'C',60-69為'D',60分以下為'E',F(xiàn)在輸入一個(gè)學(xué)生的成績,輸出他的等級(jí)。
(1).用if語句
main()
{
float num;
char grade;
scanf(%d,&num);
if(num>=90) grade='A';
else if(num>=80&&num<89) grade='B';
else if(num>=70&&num<79) grade='C';
else if(num>=60&&num<69) grade='D';
else grade='E';
printf(%c,grade);
}
(2).用switch語句
main()
{
int num;
char grade;
scanf(%d,&num);
num/=10;
switch(num)
{
case 10:
case 9:
grade='A';
break;
case 8:
grade='B';
break;
case 7:
grade='C';
break;
case 6:
grade='D';
break;
default:
grade='E';
break;
}
printf(%c,grade);
}
說明一點(diǎn),并不是每個(gè)case里面有都語句,有時(shí)侯里面是空的,就好象這一題。switch語句執(zhí)行的順序是從第一case判斷,如果正確就往下執(zhí)行,直到break;如果不正確,就執(zhí)行下一個(gè)case。所以在這里,當(dāng)成績是100分時(shí),執(zhí)行case 10:然后往下執(zhí)行,grade='A';break;退出。
想想看,這里為什么要用num/=10;?
假設(shè)當(dāng)程序中有浮點(diǎn)數(shù)時(shí)怎么辦呢?
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)C語言教程匯總計(jì)算機(jī)等級(jí)考試二級(jí)C語言常見知識(shí)點(diǎn)總結(jié)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |