您的位置:

深入解析C++中的switch case语句

switch case语句是C++中的一种流程控制语句,它通常用于多个选项的判断,可以使代码更加简洁和易读。在本篇文章中,我们将从多个方面对switch case语句进行详细的阐述。

一、switch case成绩

在学习switch case语句时,第一个经典的例子是计算成绩等级。以下是一个示例代码:

#include 

using namespace std;

int main()
{
    int score;
    cin >> score;
    switch(score/10)
    {
        case 10:
        case 9:
            cout << "A" << endl;
            break;
        case 8:
            cout << "B" << endl;
            break;
        case 7:
            cout << "C" << endl;
            break;
        case 6:
            cout << "D" << endl;
            break;
        default:
            cout << "E" << endl;
            break;
    }
    return 0;
}

  

这个例子中,我们通过输入成绩来判断成绩等级,并打印出对应的等级。通过这个例子,我们可以发现switch case语句的语法结构:

  1. 在括号中指定需要进行判断的变量或表达式;
  2. 在case语句中指定可能的情况;
  3. 在break语句中结束当前case语句;
  4. 在default语句中指定未匹配到任何case语句时的默认情况。

在这个例子中,我们使用了两个连续的case语句,这是因为当成绩等级为A或B时,我们需要输出相同的内容。

二、switch case成绩等级

在上一个例子中,我们已经展示了通过switch case语句实现成绩等级判断的方法,但实际上,我们还可以使用多个case语句来实现相同的效果。以下是一个相应的示例代码:

#include 

using namespace std;

int main()
{
    char grade;
    cin >> grade;
    switch(grade)
    {
        case 'A':
        case 'a':
            cout << "90~100" << endl;
            break;
        case 'B':
        case 'b':
            cout << "80~89" << endl;
            break;
        case 'C':
        case 'c':
            cout << "70~79" << endl;
            break;
        case 'D':
        case 'd':
            cout << "60~69" << endl;
            break;
        case 'E':
        case 'e':
            cout << "<60" << endl;
            break;
        default:
            cout << "Input error" << endl;
            break;
    }
    return 0;
}

  

在这个例子中,我们将大写字母和小写字母都视为同一个等级,并输出相应的分数段。这个例子展示了switch case语句对字符类型数据的支持。

三、switch case穿透

switch case穿透是指当我们没有在某个case语句中使用break语句时,程序会依次执行后面的语句直到遇到下一个break语句或整个switch case语句结束。以下是一个示例代码:

#include 

using namespace std;

int main()
{
    int x = 2;
    switch(x)
    {
        case 1:
            cout << "This is case 1" << endl;
        case 2:
            cout << "This is case 2" << endl;
        case 3:
            cout << "This is case 3" << endl;
            break;
        default:
            cout << "This is default" << endl;
            break;
    }
    return 0;
}

  

在这个例子中,当变量x的值为2时,程序会输出以下内容:

This is case 2
This is case 3

这是因为我们在case 2中没有使用break语句,所以程序会继续执行case 3的代码。这种现象被称为switch case穿透,我们可以通过在每个case语句中添加break语句来避免它。

四、switch casec语言

switch case语句最初是由C语言引入的,C++中的switch case语句支持了更多的数据类型,但其语法的基本结构和C语言是相同的。以下是一个C语言中的示例代码:

#include
int main()
{
    int x;
    scanf("%d",&x);
    switch(x)
    {
        case 1:
            printf("This is case 1\n");
        case 2:
            printf("This is case 2\n");
        case 3:
            printf("This is case 3\n");
            break;
        default:
            printf("This is default");
            break;
    }
    return 0;
}

  

与C++版本的switch case语句相比,C语言中的switch case语句更加简洁,但对变量的类型有所限制。在C语言中,变量必须是整型或字符型,而在C++中,变量可以是整型、字符型、枚举型、浮点型和指针类型等等。

五、switch case出不来

在使用switch case语句时,有时候会遇到无法输出正确结果的情况。这可能是因为我们没有在case语句中匹配上变量或者有多个case语句匹配了同一个情况的缘故。以下是一个示例代码:

#include 

using namespace std;

int main()
{
    int x = 2;
    switch(x)
    {
        case 1:
            cout << "This is case 1" << endl;
            break;
        case 2:
            cout << "This is case 2" << endl;
        case 3:
            cout << "This is case 3" << endl;
            break;
        default:
            cout << "This is default" << endl;
            break;
    }
    return 0;
}

  

在这个例子中,当变量x的值为2时,程序应该输出以下内容:

This is case 2
This is case 3

但实际上程序只会输出以下内容:

This is case 2
This is case 3

这是因为我们在case 2中没有使用break语句,所以程序会穿透到下一个case语句并执行它们的代码。为了避免这个问题,我们应该在case 2的末尾添加一个break语句,以结束这个case语句。

本文中,我们对C++中的switch case语句进行了详细的阐述,从语法结构到实例代码,希望读者能够通过本文对这个重要的流程控制语句有更深入的理解。