5.4.1 switch结构简介

在C语言中,关键字switch表示开关,即根据用户所指定的条件,执行不同的功能代码。在实际使用时,switch必须与case配合使用。在本小节中,将介绍switch…case的使用原型及其相应的功能。

1.switch…case使用原型

当用户在使用switch…case选择结构实现功能之前,必须熟悉该结构的使用原型。switch…case的具体使用原型如下:

switch(开关条件)//switch…case使用原型
{
    case 条件1://条件1
            ……;//功能代码1
    case 条件2://条件2
            ……;//功能代码2
    case 条件3://条件3
            ……;//功能代码3
    default://默认情况下
            ……;//默认执行代码
}

在使用原型中,switch参数的“开关条件”表示所指定的判断条件,而case的参数则表示具体的判断条件值。若case中的参数值与switch中的参数值相同,则程序将执行指定的功能代码。如果在程序中,没有与switch条件参数值相同的case语句,程序将默认执行default中的功能代码段,其流程图如图5.19所示。

图5.19 switch…case开关结构流程图

注意 在实际编程时,用户可以将一些没有考虑到的条件所对应的功能代码放在default代码段中执行。这样,用户就可以尽可能地避免出现程序运行错误。

2.switch…case使用实例

在本小节中,为了能够深入地理解switch…case选择结构的使用方法,将根据该结构的使用原型编写一个实例程序对其进行详细介绍。

例如,在一个学校中,将根据学生的考试成绩对其进行评级。若考试成绩在60分以下,则为不及格。若考试成绩在60~80分,则为良好。若考试成绩在80分以上,则为优。并且将根据不同的评级,输出不同的提示语。具体代码如下:

#include <stdio.h>//包含头文件
main()//主函数开始
{
    int scor[6]={0};//定义并初始化整型数组
    int bool=0;//定义并初始化判断条件值
    for(int i=0;i<6;i++)//for循环用于输入成绩
    {
        printf("请用户输入第%d个成绩: ",i);//输出提示语
        scanf("%d",&scor[i]);//接收用户输入的数据
    }
    for(int i1=0;i1<6;i1++)//for循环用于值判断
    {
        if(scor[i1]<60)//若成绩小于60,则将条件值设置为1
        {
            bool=1;
        }
        else//否则,继续判断
        {
        if(scor[i1]>60)//若成绩大于60
        {
            if(scor[i1]<80)//并且小于80,则将条件值设置为2
            {
            bool=2;
            }
        }
        if(scor[i]>80)//若成绩大于80,则将条件值设置为3
        {
            bool=3;
            }
        }
        switch(bool)//根据条件值进行判断
        {
        case 1://若成绩小于60者
            {
            printf("第%d个学生成绩不及格 ",i1);//输出提示语
            break;//跳出循环
                }
        case 2://若成绩大于60并小于80者
            {
            printf("第%d个学生成绩良好 ",i1);//输出提示语
            break;//跳出循环
                }
        case 3://若成绩大于80者
            {
            printf("第%d个学生成绩优异 ",i1);//输出提示语
            break;//跳出循环
                }
    default://默认情况下
        printf("不能判断学生的分数等级");//输出提示语
            break;
    }
  }
}

在上面的代码中,首先利用一个for循环结构循环接收输入的学生成绩,并将其保存在整型数组scor中。然后,再通过一个for循环对整型数组scor中的值进行判断。如果其值小于60,则将条件值设置为1。如果整型数组值大于60而小于80,则将条件值设置为2。如果整型数组值大于80,则将条件值设置为3。这样,用户就可以使用switch…case选择结构根据条件值,对不同的分数段进行统计输出。

图5.20 程序运行结果

注意 在本实例中,主要是对不同分数段的学生成绩进行判断后,输出该学生成绩的相应评级情况。而关键字break的功能十分强大,用户利用该关键字可以直接跳出循环体,而执行循环结构后面的代码。

将上面的代码进行编译、运行,其运行结果如图5.20所示。

如图5.20所示,当程序运行之后,用户可以循环输入6个成绩。当输入完成后,程序会根据用户输入的学生成绩进行级别划分,并输出相应的提示语。