• 多路开关模式的switch语句


    在实例10中,将break语句去掉之后,会将符合检验条件后的所有语句都输出。利用这个特点,可以设计多路开关模式的switch语句,例如:在平年一年12个月,1、3、5、7、8、10、12月是31天,4、6、9、11月是30天,2月是28天,如果在控制台上任意输入月份,就可以知道这个月有多少天。这种情况,就可以使用switch语句的多路开关模式,它的形式如下:

    switch(表达式)
    
    {
    
        case 1:
    
             语句1
    
            break;
    
        case 2:
    
        case 3:
    
             语句2
    
             break;
    
        …
    
        default:
    
             默认语句
    
             break;
    
    }

    从形式中可以看到如果在case 2后不使用break语句,那么符合检验时与符合case 3检验时的效果是一样的。也就是说,使用多路开关模式,可以使多种检验条件用一个语句块输出。

    实例11  输入的某个月份属于哪个季节

    在本实例中,要求使用switch语句判断控制台输入的某个月份属于哪个季节,已知3、4、5月是春季,6、7、8月为夏季,9、10、11为秋季,12、1、2月为冬季。具体代码如下:

    01  #include<stdio.h>
    
    02  int main()
    
    03  {
    
    04       int month;                                          /*定义变量月份*/
    
    05       printf("please enter a month:
    ");
    
    06       scanf("%d",&month);                           /*输入月份*/
    
    07       switch(month)                                  /*根据月份分季节*/
    
    08       {
    
    09           /*多路开关模式*/
    
    10            case 3:
    
    11            case 4:   
    
    12            case 5:
    
    13                printf("%d is spring
    ",month);     /*3,4,5月是春季*/
    
    14                break;
    
    15            /*多路开关模式*/
    
    16            case 6:
    
    17            case 7:   
    
    18            case 8:
    
    19                printf("%d is summer
    ",month);     /*6,7,8月是夏季*/
    
    20                break;
    
    21            /*多路开关模式*/
    
    22            case 9:
    
    23            case 10:   
    
    24            case 11:
    
    25                printf("%d is autumn
    ",month);     /*9,10,11月是秋季*/
    
    26                break;
    
    27            /*多路开关模式*/
    
    28            case 12:
    
    29            case 1:    
    
    30            case 2:
    
    31                printf("%d is winter
    ",month);     /*12,1,2月是冬季*/
    
    32                break;
    
    33            default:
    
    34                printf("error!!!
    ");                    /*无此月份*/
    
    35         }
    
    36         return 0;                                     /*程序结束*/
    
    37  }

    运行程序,显示结果如图6.21所示。

     

    图6.21  季节运行图

    从该实例代码和运行结果可以看出:

    程序中使用多路开关模式,使得检测month的值为3、4、5这3种情况时,都会执行相同的操作,并且利用default语句将不符合的数字显示,提示信息表示输入错误。

    练一练:

    已知一个灯泡并联3个开关,分别为开关1,开关2,开关3,;另一串彩灯串联一个开关4,开关5和开关6并联一个白炽灯和节能灯,问随意按下开关哪个灯能亮?

     

    本文摘自明日科技出版的《零基础学C语言》,转载请注明出处!!!

  • 相关阅读:
    题解 SP27102/UVA1747 【Swap Space】
    题解 P1453 【城市环路】
    题解 P5587 【打字练习】
    题解 P5594 【【XR-4】模拟赛】
    git add 的一点说明
    理解 Git 的基本概念 ( Merging Collaborating Rebasing)
    windows 上 Python 通过 SCP 连接linux server
    Neo4j CQL | WITH用法
    Neo4j CQL |create &merge
    Item 4: Prefer Interpolated F-Strings Over C-style Format Strings and str.format(请使用f-string格式化字符串)
  • 原文地址:https://www.cnblogs.com/mrxy/p/8339970.html
Copyright © 2020-2023  润新知