5 switch语句
switch语句通用格式如下:
switch(integer-expression){
case label1: statement(s)
case label2: statement(s)
...
default : statement(s)
}
执行到switch语句时,程序将跳到使用integer-expression的值标记的那一行。例如,如果integer-expression的值为4,则程序将执行标签为case 4的那一行。integer-expression必须是一个结果为整数值的表达式。另外,每个标签都必须是整数常量表达式。最常见的标签是int或char常量,也可以是枚举量。如果integer-expression不与任何标签匹配,则程序将跳到标签为default的那一行。Default标签是可选的,如果被省略,而又没有匹配的标签,则程序将跳到switch后面的语句处执行。(如图6.3所示) 注意,这里的case标签只是标签,而不是选项之间的界限。也就是说,程序跳到switch中特定代码行后,将依次执行之后的所有语句,除非有明确的其他指示。程序不会在执行到下一个case处自动停止,要让程序执行完一组特定语句后停止,必须使用break语句。这将导致程序跳到switch后面的语句处执行。
程序6.10演示了如何使用switch和break来让用户选择简单菜单。该程序使用showmenu函数显示一组选项,然后使用switch语句,根据用户的反应执行相应的操作:
程序6.10
#include <iostream>
using namespace std;
void showmenu();
void report();
void comfort();
int main()
{
showmenu();
int choice;
cin >> choice;
while (choice != 5){
switch(choice){
case 1 : cout << "\a\n";
break;
case 2 : report();
break;
case 3 : cout << "The boss was in all day.\n";
break;
case 4 : comfort();
break;
default : cout << "That's not a choice.\n";
}
showmenu();
cin >> choice;
}
cout << "Bye!\n";
return 0;
}
void showmenu(){
cout << "Please enter 1, 2, 3, 4, or 5:\n"
"1) alarm 2) report\n"
"3) alibi 4) comfort\n"
"5) quit\n";
}
void report(){
cout << "It's been an excellent week for business.\n"
"Sales are up 120%. Expenses are down 35%.\n";
}
void comfort(){
cout << "Your employees think you are the finest CEO\n"
"in the industry. The board of directors think\n"
"you are the finest CEO in the industry.\n";
}
待补充 200
6 break和continue语句
break和continue语句都使程序能够跳过部分代码。可以在switch语句或任何循环中使用break语句,使程序跳到switch或循环后的语句处执行。continue语句用于循环中,让程序跳过循环体中余下的代码,并开始新一轮循环。(如图6.4所示)
程序6.12演示了这两条语句是如何工作的。程序让用户输入一行文本,循环将回显每个字符,如果该字符为句点,则使用break结束循环。接下来程序计算空格数,但不计算其他字符。当字符不为空格时,循环使用continue语句跳过计数部分。
程序说明:
虽然continue语句导致该程序跳过循环体的剩余部分,但不会跳过循环的更新表达式。在for循环中,continue语句使程序直接跳到更新表达式处,然后跳到测试表达式处。然而,对于while循环来说,continue将使程序直接跳到测试表达式处,因此while循环体中位于continue之后的更新表达式都将被跳过。
该程序可以不使用continue语句,而使用下面的代码:
if(line[i]==' ')
space++;
然而,当continue之后有多条语句时,continue语句可以提高程序的可读性。这样,就不必将所有这些语句放在if语句中。
和C语言一样,C++也有goto语句。下面的语句将使用pairs: 作为标签的位置:
goto pairs;
也就是说,可以有下面这样的代码:
char ch;
cin>>ch;
if(ch=='P')
goto pairs;
cout<<....
pairs: cout<<"arrived pairs\n";
|