学科分类
目录
C语言

switch条件语句

switch条件语句也是一种很常用的选择结构语句,和if条件语句不同,它针对某个表达式的值做出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据某个输入的数字来输出对应中文格式的星期值,可以通过下面的一段伪代码来描述:

用于表示星期的数字
  如果等于1,则输出星期一
  如果等于2,则输出星期二
  如果等于3,则输出星期三
  如果等于4,则输出星期四
  如果等于5,则输出星期五
  如果等于6,则输出星期六
  如果等于7,则输出星期天
  如果不是1~7,则输出此数字为非法数字

对于上面一段伪代码的描述,大家可能会立刻想到用刚学过的if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。这时就可以使用C语言中的switch语句来实现。在switch语句中,switch关键字后面有一个表达式,case关键字后面有目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。接下来通过一段伪代码来描述switch语句的基本语法格式,具体如下:

switch(表达式)
{
  case 目标值1:
    执行语句1
    break;
  case 目标值2:
    执行语句2
    break;
  …
  case 目标值*n*:
    执行语句*n*
    break;
  default:
    执行语句*n*+1
    break;
}

在上面的语法格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,就会执行相应case后的语句,直到遇到break时退出当前代码块。break语句可以省略不写,如果忽略break语句不写,目标值将会不断与后边的目标值进行比较。default用于匹配所有条件都不适用的情况,default也可以省略不写。

下面通过一个案例演示switch条件语句的用法,该案例要求根据数字1~7输出对应的中文格式的星期值,案例具体实现代码如例1所示。

例1 switch.c

 1  #define _CRT_SECURE_NO_WARNINGS
 2  #include <stdio.h>
 3  int main()
 4  {
 5    int week = 5;
 6    printf("请输入1~7之间的整数值:");
 7    scanf("%d", &week);
 8    switch(week)
 9    {
 10   case 1:
 11     printf("星期一\n");
 12     break;
 13   case 2:
 14     printf("星期二\n");
 15     break;
 16   case 3:
 17     printf("星期三\n");
 18     break;
 19   case 4:
 20     printf("星期四\n");
 21     break;
 22   case 5:
 23     printf("星期五\n");
 24     break;
 25   case 6:
 26     printf("星期六\n");
 27     break;
 28   case 7:
 29     printf("星期天\n");
 30     break;
 31   default:
 32     printf("输入的数字不正确...");
 33     break;
 34   }
 35   return 0;
 36 }

例1的运行结果如图1所示。

图1 例4-5运行结果

在例1中,第7行代码使用scanf()函数读取week的值,第8~34行代码通过switch…case结构匹配week的值,匹配成功就输出case语句下的信息。由图1可知,当从键盘输入5时,程序匹配到case 5语句,输出结果为“星期五”。

在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句书写一次即可,这是一种简写的方式。例如,使用数字1~7来表示星期一到星期天,当输入的数字为1、2、3、4、5时视为工作日,否则视为休息日,这时如果需要判断一周中的某一天是否为工作日,就可以采用switch语句的简写方式,示例代码如下:

switch(week)
{
case 1:
case 2:
case 3:
case 4:
case 5:
  //当 week 满足值 1、2、3、4、5中任意一个时,处理方式相同
  printf("今天是工作日\n");
  break;
case 6:
case 7:
  //当 week 满足值 6、7中任意一个时,处理方式相同
  printf("今天是休息日\n");
  break;
default:
  printf("输入的数字不正确...");
  break;
}

以上示例中,当变量week的值为1、2、3、4、5中任意值时,处理方式相同,都会打印“今天是工作日”。同理,当变量week值为6、7中任意值时,打印“今天是休息日”。

点击此处
隐藏目录