14、
1. 语句格式
switch语句又称情况语句或开关语句,它也是一种结构性语句,其语句格式为:
switch (<表达式>) <语句>
该语句中所包含的<语句>通常是一条复合语句,并在内部的一些语句前加有特殊的语句标号“case <常量表达式>:”或“default:”,因此,switch语句的实际使用格式为:
switch(<表达式>) {
case <常量表达式1>: <语句1-1>
<语句1-2>
15、 M
case <常量表达式2>: <语句2-1>
<语句2-2>
M
M
[default: <语句n-1>
<语句n-2>
M
]
}
该语句中可以使用一次或
16、多次case标号,但只能使用一次default标号,或者省略掉整个default部分。此外,多个case标号也允许使用在同一条语句的前面。
注意:语句标号只起到标记语句位置的作用,对语句的执行不会产生任何影响。
2. 语句执行过程
switch语句的执行过程为:
(1) 计算出<表达式>的值,假定为M,若它不是整型,系统将自动舍去其小数部分,只取其整数部分作为结果值;
(2) 依次计算出每个常量表达式的值,假定它们的值依次为M1,M2,L,同样若它们的值不是整型,则自动转换为整型;
(3) 让M依次同M1,M2,L 进行比较,一旦碰到
17、M与某个值相等,则就从相应标号的语句开始向下执行,若碰不到跳转语句的话,将一直执行到右花括号为止才结束整个switch语句的执行,若M与所有值都不同,则当带有default部分时,就从该标号位置起向下执行,否则不执行任何操作。
在实际使用switch语句时,通常规定当执行完某个语句标号后的一组语句后,就结束整个语句的执行,而不让它继续执行下一个语句标号后面的语句序列,为此,可通过使用break语句来实现。该语句只有保存字break,而没有其他任何成分。它是一条跳转语句,在switch语句中执行到它时,将跳转到所属的switch语句的后面位置,系统将接着向下执行其他语句。
18、 3. 语句格式举例
(1) switch(a) {
case 1: c1++; break;
case 2: c2++; break;
case 3: c3++; break;
case 4: c4++; break;
default 2: c++; break;
}
(2) switch(cr) {
case red: cout<<“red”<19、ase yellow: cout<<“yellow”<20、2;
d2=a*b-2;
break;
default: cout<<“Input error!”<21、第二条语句时,将按照具有枚举类型color的变量cr的值决定输出哪一个常量标记符,当ch取值为red(即0)时输出red标记符,取值为yellow(即1)时输出yellow标记符,取值为blue(即2)时输出blue标记符。输出最后一个常量标记符虽然没有使用break语句转出去,但由于它后面就是语句结束标志,右花括号,所以也会自然地结束该语句。
当执行第三条语句时,若ch值为小写字母a或大写字母A,则执行3~5行的语句,若ch值为小写字母b或大写字母B,则执行7~9行的语句,若ch不是上述取值,则执行10~11行后结束整个程序的运营。
在switch语句所含的复合语句中,可
22、以包含任何语句,当然仍可以是switch语句,所以switch语句也允许出现嵌套的情况。
4. 程序举例
(1) #include
void main()
{
int weekday;
cout<<"今天星期几(0-6)?";
cin>>weekday;
switch(weekday) {
case 0: cout<<"sunday"<23、<"Monday"<24、 cout<<"Input error!"<
#include
void main()
{
float score;
cout<<"输入一个人的成绩:";
cin>>score;
if(score<0 || score>100) {
25、 cout<<"输入数据有误!"<26、core<<":及格"<
#include
#include