四、switch--case語句
在編寫程序時, 經(jīng)常會碰到按不同情況分轉(zhuǎn)的多路問題, 這時可用嵌套if -else-if語句來實現(xiàn), 但if-else-if語句使用不方便, 并且容易出錯。對這種情況, Turbo C2.0提供了一個開關(guān)語句。開關(guān)語句格式為:
switch(變量)
{
case 常量1:
語句1或空;
case 常量2:
語句2或空;
.
.
.
case 常量n:
語句n或空;
default:
語句n+1或空;
}
執(zhí)行switch開關(guān)語句時,將變量逐個與case后的常量進(jìn)行比較,若與其中一個相等,則執(zhí)行該常量下的語句,若不與任何一個常量相等,則執(zhí)行default后面的語句。
注意:
1.switch中變量可以是數(shù)值,也可以是字符,但必須是整數(shù)。
2.可以省略一些case和default。
3.每個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ù)的情況下使用。看下面的例子:
例子:一個學(xué)生的成績分成五等,超過90分的為'A',80-89的為'B',70-79為'C',60-69為'D',60分以下為'E'。現(xiàn)在輸入一個學(xué)生的成績,輸出他的等級。
(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);
}
說明一點,并不是每個case里面有都語句,有時侯里面是空的,就好象這一題。switch語句執(zhí)行的順序是從第一case判斷,如果正確就往下執(zhí)行,直到break;如果不正確,就執(zhí)行下一個case。所以在這里,當(dāng)成績是100分時,執(zhí)行case 10:然后往下執(zhí)行,grade='A';break;退出。
想想看,這里為什么要用num/=10;?
假設(shè)當(dāng)程序中有浮點數(shù)時怎么辦呢?
2015年全國職稱計算機考試教材(2007模 .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 | |
全國職稱計算機考試速成過關(guān)系列套裝:W .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |