C语言switch语句

C语言switch语句,if语句一般用于处理一个或两个分支的选择结构,如果分支较多,就需要使用if语句的嵌套,但嵌套的if语句层数越多,程序越复杂,可读性就越差。C语句提供的switch语句能同时处理多个分支选择结构。其语法格式为:

        switch(表达式)
        {
            case常量1:语句组1
            case常量2:语句组2
            …
            case常量n:语句组n
            default:语句组n+1
        }

switch语句在执行过程中,首先计算表达式的值,当表达式的值与某一个case后面的常量表达式的值相等、相匹配时,就去执行此case后面的语句。如果所有的case中的常量表达式的值都与“表达式”的值都不相匹配,就执行default(默认)后面的语句。

C语言switch语句

这里要说明的是:

  • switch后面括号内的 “表达式”可以是任何类型的数据。可以是整型表达式、字符型表达式,也可以是枚举类型数据。
  • 每个case的常量表达式的值必须互不相同,否则会产生错误的选择。
  • 各个case和default的出现次序不影响执行的结果。
  • 在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,执行完该case语句后,继续执行下一个case语句,不再进行标号判断。case常量表达式只起到入口标示的作用。

示例:输入考试成绩的等级,打印出百分制分数段(A等:85分以上,B等:70~84,C等:60~69,D等:60分以下)。

#include <stdio.h>
void main()
{
    char grade;          /*定义一个字符型变量*/
    scanf("%c", &grade); /*输入一个字符型的值*/
    switch (grade)       /*判读输入的值*/
    {
    case 'A':
        printf("85~100\n");
    case 'B':
        printf("70~84\n");
    case 'C':
        printf("60~69\n");
    case 'D':
        printf("<60\n");
    default:
        printf("Error\n");
    }
}

程序运行时,当输入:A↙
程序运行的结果为:

        85~100
        70~84
        60~69
        <60
        Error

程序运行时,当输入:B↙
程序运行的结果为:

        70~84
        60~69
        <60
        Error

从上面的运行结果可以看出,当switch后面圆括号中表达式的值与某个case后面的常量表达式的值相等时,就执行此case后面的语句,然后自动进入下一个case语句继续执行。如果这样执行,会得到一些我们不需要的结果,为了解决这个问题,需要使用break语句,执行一个case后,跳出switch语句。一般形式为:

        switch(表达式)
        {
            case常量1:语句1;break;
            case常量2:语句2; break;
            …
            case常量n:语句n; break;
            default:语句n+1;
        }
#include <stdio.h>
void main()
{
    char grade;          /*定义一个字符型变量*/
    scanf("%c", &grade); /*输入一个字符型的值*/
    switch (grade)       /*判读输入的值*/
    {
    case 'A':
        printf("85~100\n");
        break;
    case 'B':
        printf("70~84\n");
        break;
    case 'C':
        printf("60~69\n");
        break;
    case 'D':
        printf("<60\n");
        break;
    default:
        printf("Error\n");
    }
}

程序运行时,当输入:A↙
程序运行的结果为:

        85~100

程序运行时,当输入:B↙
程序运行的结果为:

        70~84

这里需要说明的是,switch-case语句中,default总是放在最后,这里default后不需要break语句,而default也不是必需的,如果switch-case语句中没有default部分,当switch后面圆括号中表达式的值与所有case后面的常量表达式的值都不相等时,则不执行任何一个分支,直接退出switch语句。

  • 在switch-case语句中,多个case可以共用一条执行语句。

示例:输入年号和月号,计算这一年的这个月有多少天。

#include <stdio.h>
void main()
{
    int year, month, day;
    printf("请输入年月:\n");
    scanf("%d,%d", &year, &month);
    switch (month)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        day = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        day = 30;
        break;
    case 2:
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
            day = 29;
        else
            day = 28;
        break;
    default:
        printf("输入的月份是错误的!\n");
    }
    printf("year:%d,month:%d,day=%d\n", year, month, day);
}

程序运行的结果为:

        请输入年月:
        2008,2↙
        year:2008,month:2,day=29

酷客网(coolcou.com) – 专注IT精品教程和实例

赞(0)

评论 抢沙发

评论前必须登录!