多路開關模式的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:\n");
06      scanf("%d",&month);                             /*輸入月份*/
07       switch(month)                                  /*根據月份分季節*/
08       {
09              /*多路開關模式*/
10          case 3:
11          case 4:    
12          case 5:
13              printf("%d is spring\n",month);     /*3,4,5月是春季*/
14              break;
15              /*多路開關模式*/
16          case 6:
17          case 7:    
18          case 8:
19              printf("%d is summer\n",month);     /*6,7,8月是夏季*/
20              break;
21          /*多路開關模式*/
22          case 9:
23          case 10:    
24          case 11:
25              printf("%d is autumn\n",month);     /*9,10,11月是秋季*/
26              break;
27          /*多路開關模式*/
28          case 12:
29          case 1:    
30          case 2:
31              printf("%d is winter\n",month);     /*12,1,2月是冬季*/
32              break;
33          default:
34              printf("error!!!\n");                   /*無此月份*/
35         }
36         return 0;                                        /*程序結束*/
37  }

運行程序,顯示結果如圖6.21所示。
多路開關模式的switch語句
圖6.21 季節運行圖

從該實例代碼和運行結果可以看出:
程序中使用多路開關模式,使得檢測month的值爲3、4、5這3種情況時,都會執行相同的操作,並且利用default語句將不符合的數字顯示,提示信息表示輸入錯誤。

練一練:
已知一個燈泡並聯3個開關,分別爲開關1,開關2,開關3,;另一串彩燈串聯一個開關4,開關5和開關6並聯一個白熾燈和節能燈,問隨意按下開關哪個燈能亮?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章