C++ switch case的用法(附带实例)
当分支情况较多时,if 判断语句的可读性较差,使用不当还会产生表达式错误。为解决多分支问题,C++ 中提供了 switch 语句。
switch 语句的一般形式如下:
【实例 1】成绩等级划分。某校成绩等级划分如下:
根据控制台输入的字符 A、B、C、D,输出对应的成绩等级。如果输入的是其他字符,输出“input error”。本例使用 switch 语句实现,具体代码如下:
注意在 switch 语句中,每个 case 分支都使用了 break 语句,作用是匹配成功后跳出整个 switch 判断。如果不使用 break 语句会出现什么问题呢?事实上,由于无法跳出,自匹配成功的 case 语句起,后面的每条 case 语句都会被执行一次,且不再进行判断。
【实例 2】今天是星期几。根据输入的 1~7 中的任意整型数,输出对应的英文星期名称。例如,输入数字 1,输出“Monday”;输入数字 2,输出“Tuesday”……如果输入的是其他字符,就输出“input error”。使用 switch 语句实现,但各 case 分支中不使用 break 语句。具体代码如下:
switch 语句的一般形式如下:
switch(表达式) { case 常量表达式1: 语句块1; case 常量表达式2: 语句块2; ... case 常量表达式n: 语句块n; default: 默认语句块; }其中,“表达式”是一个算术表达式,值是一个整型数或字符。用该值逐一和 case 后常量表达式的值进行比较,如果一致,就执行其后的语句块,并通过 break 关键字跳出整个 switch 语句;如果无法匹配成功,就执行 default 后的语句块。default 分句可以省略,这时 case 语句即便全部匹配不成功,也不再进行任何操作。
注意,switch 括号内的表达式不能是浮点数,否则会因为精度不准确而产生错误。
【实例 1】成绩等级划分。某校成绩等级划分如下:
- A 为 very good;
- B 为 good;
- C 为 normal;
- D 为 failure。
根据控制台输入的字符 A、B、C、D,输出对应的成绩等级。如果输入的是其他字符,输出“input error”。本例使用 switch 语句实现,具体代码如下:
#include <iostream> using namespace std; int main() { char input; // 输入一个字符,表示成绩等级 cin >> input; switch (input) // switch 语句 { case 'A': // 字符为 A cout << "very good" << endl; break; case 'B': // 字符为 B cout << "good" << endl; break; case 'C': // 字符为 C cout << "normal" << endl; break; case 'D': // 字符为 D cout << "failure" << endl; break; default: // 字符为 A、B、C、D 外的其他字符 cout << "input error" << endl; } }程序需要用户输入一个字符,用户输入字符 A,输出“very good”;输入字符 B,输出“good”;输入字符 C,输出“normal”;输入字符 D,输出“failure”;输入其他字符,输出“input error”。
注意在 switch 语句中,每个 case 分支都使用了 break 语句,作用是匹配成功后跳出整个 switch 判断。如果不使用 break 语句会出现什么问题呢?事实上,由于无法跳出,自匹配成功的 case 语句起,后面的每条 case 语句都会被执行一次,且不再进行判断。
【实例 2】今天是星期几。根据输入的 1~7 中的任意整型数,输出对应的英文星期名称。例如,输入数字 1,输出“Monday”;输入数字 2,输出“Tuesday”……如果输入的是其他字符,就输出“input error”。使用 switch 语句实现,但各 case 分支中不使用 break 语句。具体代码如下:
#include <iostream> using namespace std; int main() { int input; // 输入一个整型数 cin >> input; // switch 语句 switch(input) { case 1: // 数字为 1 cout << "Monday" << endl; break; case 2: // 数字为 2 cout << "Tuesday" << endl; break; case 3: // 数字为 3 cout << "Wednesday" << endl; break; case 4: // 数字为 4 cout << "Thursday" << endl; break; case 5: // 数字为 5 cout << "Friday" << endl; break; case 6: // 数字为 6 cout << "Saturday" << endl; break; case 7: // 数字为 7 cout << "Sunday" << endl; break; default: // 数字为 1~7 之外的其他数字 cout << "Input error" << endl; } }输入 1 时,程序运行结果为:
1
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Input error