switch 语句

本文介绍了C/C++编程中的switch语句,作为多分支选择的一种方式,它提高了代码的可读性。详细讲解了switch语句的基本形式、注意事项、以及多路开关模式的应用,并通过实例演示了如何使用switch语句处理不同情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

  1. 一、switch 语句的基本形式
  2. 说明:
  3. 注意:
  4. 警示:
  5. 二.多路开关模式的switch语句
  6. 总结:

前言

在实际问题中,常常会用到多分支的选择。当然,使用嵌套的 if 的语句也可以实现多分支的选择,但如果分支较多,就会使的嵌套的 if 语句层数过多,程序冗余,可读性也不好。C语言中可以使用switch语句直接处理多分支选择的情况,将程序代码的可读性提高。

一、switch 语句的基本形式

switch语句是多分支选择语句。一般形式如下:

switch(表达式)
{
   case 情况1:
        语句块1;
   case 情况2:
        语句块2;

    ...

    case 情况n:
        语句块n;
    default:
        默认语句块;
}

switch 后面的表达式就是要进行判断的条件,然后使用 case 关键字表示检验条件符合的各种情况,其后的各语句块是相应的操作。其中还有一个 default 关键字,作用是如果没有符合条件的情况,那么执行 default 后面的默认情况语句。

说明:

switch 语句检验的条件必须是一个整型表达式,这意味着其中也可以包含运算符和函数调用。而case 语句检验的值必须是整型常量,即常量表达式或者常量运算。

下面通过代码体会一下 switch 语句的使用方法。

switch(selection)
{
    case1:
        printf("processing receivables\n");
        break;
    case2:
        peintf("processing payables\n");
        break;
    case3
        printf("quitting\n");
        break;
    default:
        printf("error\n");
        break;
}

首先 switch 判断 selection 变量的值,然后利用 case 语句检验 selection 值的不同情况。假设selection 的值为2,那么执行 case 为2时的情况,执行后跳出switch语句。如果selection 的值不是case中所列出的情况,那么执行 default 中语句。在,在每一个case或者default语句后都有一个break关键字。break语句用于跳出switch循环,不再执行下面的代码。

注意:

switch语句中,如果所有case后面的值都不能匹配switch语句的条件,就执行default语句后面的代码。其中,任意两个case语句都不能使用相同的常量值;每个switch结构只能有一个default语句,而且default可以省略

下面通过实例来感受一下:

如果是周末就是休息日,如果不是周末就要上班。同时,休息日也可以是星期六,也可以是星期日,星期六我们可以和朋友去逛街,星期日我们可以陪家人在家。用switch语句模拟此场景。

#include<stdio.h>
int main()
{
    int day=0;   //定义变量day表示输入的日期
    printf("enter a day df week to get course:\n");//提示信息
    scanf("%d",&day);   //输入日期
    switch(day)
    {
    case 1:
        peintf("have a metting in the company\n");
        break;
    case 6:
        printf("go shopping with friends\n");
        break;
    case 7:
        peintf("at home with families\n");
        break;
    default:
        peintf("working with partner\n");
        break;
    }
    return 0;
}

在程序中,使用switch...case检验时,不要忘记case检验的条件只能是常量或者常量表达式,而不能对变量进行检验。

警示:

初学switch语句时,很容易认为break是switch语句的一部分,是switch的必要条件。但是不是这样,break可以不与switch匹配。

二.多路开关模式的switch语句

将某个case语句后的语句块及break去掉之后,可以设计出多路开关模式的switch语句。例如:

switch(表达式)
{
    case 1:
        语句1;
        break;
    case 2:
    case 3:
        语句2;
        break;

        ...
    default:
        默认语句
        break;
}

可以看到,如果在case2后不再使用break语句,那么符合case2检验与符合case3检验时的输出效果是一样的,也就是说,也就是说多路开关模式可使得多种检验条件执行同一个操作。

通过下面这个实例来感受一下多路开关模式的用处:

#include<stdio.h>
int main()
{
    int mouth;//定义变量mouth表示月份
    printf("please enter a mouth:\n");
    scanf("%d",&mouth);//输入月份
    switch(mouth)//根据月份判断季节
    {
    case 3:
    case 4:
    case 5:
        printf("%d is spring\n",month);//多路开关模式
        break;
    case 6;
    case 7:
    case 8:
        printf("%d is summer\n",month);//多路开关模式
        break;
    case 9:
    case 10:
    case 11:
        printf("%d is autumn\n",month);//同上
    case 12:
    case 1:
    case 2:
        printf("%d is winter\n",mouth);//同上
        break;
    default:
        printf("error!!!\n")//无此月份
    }
    return 0;//程序结束
}

总结:

switch语句一般用于处理简单而繁琐的数据,复杂点的数据,比如涉及到大小判断,加减计算等等一般要运用if...else 语句等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值