首页 > 编程笔记 > C++笔记 阅读:104

C++ switch case的用法(附带实例)

当分支情况较多时,if 判断语句的可读性较差,使用不当还会产生表达式错误。为解决多分支问题,C++ 中提供了 switch 语句。

switch 语句的一般形式如下:
switch(表达式)
{
    case 常量表达式1:
        语句块1;
    case 常量表达式2:
        语句块2;
    ...
    case 常量表达式n:
        语句块n;
    default:
        默认语句块;
}
其中,“表达式”是一个算术表达式,值是一个整型数或字符。用该值逐一和 case 后常量表达式的值进行比较,如果一致,就执行其后的语句块,并通过 break 关键字跳出整个 switch 语句;如果无法匹配成功,就执行 default 后的语句块。default 分句可以省略,这时 case 语句即便全部匹配不成功,也不再进行任何操作。

注意,switch 括号内的表达式不能是浮点数,否则会因为精度不准确而产生错误。


【实例 1】成绩等级划分。某校成绩等级划分如下:
根据控制台输入的字符 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

显然后面的分支语句依次执行了一遍,这并不是我们想要的结果。

相关文章