8.2.1 开关语句
(2006-10-22 07:19:42)
分类:C语言程序设计~ |
-else-fi语句来实现, 但if-else-if语句使用不方便, 并且容易出错。对这种情
况, Turbo C2.0提供了一个开关语句。开关语句格式为:
个相等, 则执行该常量下的语句, 若不与任何一个常量相等, 则执行default 后
面的语句。
来。
时, 可使程序跳出switch而执行switch以后的语句; 如果没有break语句,
成为一个死循环而无法退出。break在switch 中的用法已在前面介绍开关语句时
的例子中碰到, 这里不再举例。
而执行循环后面的语句, 通常break语句总是与if语句联在一起。即满足条件时
便跳出循环。
起使用, 用来加速循环。
使用格式为:
出现在函数内某处, 执行goto语句后, 程序将跳转到该标号处并执行其后的语句。
另外标号必须与goto语句同处于一个函数中,
goto语句与if条件语句连用, 当满足某一条件时, 程序跳到标号处运行。
套退出时, 用goto语句则比较合理。
3.2.2 开关语句
开关语句的一般的形式是:
switch (<表达式>) {
case <常量表达式1>:<语句序列1>;break;
case <常量表达式2>:<语句序列2>;break;
...
case <常量表达式n>:<语句序列n>;break;
default :<语句序列n+1>;
}
开关语句也称switch语句,是进行多次判断选择,执行常量表达式为真的语句。
比如:一个产品由高到低分为m、p、q共3个等级,其价格分别为:1500元、1000元、500元。根据等级输出相应的产品的价格。
switch (grade){
case 'm': cout<< "1500";break;
case 'p':cout<< "1000"; break;
case 'q':cout<< "500"; break;
defaut :cout<< "没有这个等级";
}
最后一个default语句当常量表达式全假时执行,意思是输入的不是合法的产品等级。
switch语句应该注意以下几点:
① 虽然括号内的表达式可以是任意类型,但最好使用整型、字符型和枚举型的表达式。
② 各常量表达式的值必须不相同,否则不知该执行哪条语句,各常量值出现的次序并不影响执行结果。
③ 每个case 的后面可跟若干条语句,且不必用{ }括起来,因为每个case 是入口的标志,一旦进入某个入口,则一直会被执行下去,并非遇到下一个case就终止。这样,若干个case可以共享语句。为了让每个case 后的语句执行完后终止switch 语句的执行,必须在每个case后的若干条语句的最后加break,break语句的作用就是跳出switch 语句。
【例3.5】根据输入的整数x的值,求函数Y的值:
提示:使用整除运算符。例3.5源程序
#include <iostream.h> void main() { int x,y; cout<<"x=";cin>>x; switch(x/100) { case 0:y=x+1;break; case 1:y=x-1;break; default:y=0; } cout<<"x="<<x<<" y="<<y<<endl; }
【例3.6】将月份的阿拉伯数字转换成对应月份的英文单词。
练习3.2:输入分数,输出对应的等级(如输入87,则应输出“良好”),要求使用条件语句和开关语句分别实现。练习3.2源程序
#include <iostream.h> void main() { int score; cout<<"请输入分数:"; cin>>score; switch (score/10) { case 0: case 1: case 2: case 3: case 4: case 5:cout<<"不及格";break; case 6:cout<<"及格";break; case 7:cout<<"中等";break; case 8:cout<<"良好";break; case 9: case 10:cout<<"优秀";break; default:cout<<"分数错误"; }//分数在101~109和-9~-1之间如何识别? cout<<endl; }