switch语句
通用格式:
switch (integer_expression) //整数表达式
{
case label1 : statement;
case label2 : statement;
...
default : statement; //可选
}
程序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 bussiness.\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";
}
将枚举量当做标签
程序6.11
#include<iostream>
//creat named constants for 0-6
enum{red,orange,yellow,green,blue,violet,indigo};
int main()
{
using namespace std;
cout << "Enter color code (0-6): ";
int code;
cin >> code;
while (code >= red&&code <= indigo)
{
switch (code)
{
case red: cout << "Her lips were red.\n"; break;
case orange: cout << "Her hair was orange.\n"; break;
case yellow: cout << "Her shoes were yellow.\n"; break;
case green: cout << "Her nails were green.\n"; break;
case blue: cout << "Her sweatsuit was blue.\n"; break;
case violet: cout << "Her eyes were violet.\n"; break;
case indigo: cout << "Her mood was indigo.\n"; break;
}
cout << " Enter color code (0-6): ";
cin >> code;
}
cout << "Bye\n";
system("pause");
return 0;
}
switch 和 if else
switch语句和if else语句都允许从选项中进行选择,相比之下,if else更通用,他可以处理取值范围。
然而,switch并不是为处理取值范围而设计的,switch语句中的每一个case标签都必须是一个单独的值,这个值必须是整数(包括char)。因此switch无法处理浮点测试。
如果所有的选项都可以使用整数常量来标识,则可以使用switch语句或if else语句。由于switch语句是专门为这种情况设计的,因此,如果选项超过两个,为了缩短代码长度和提高运行速度,应使用switch。