計算機概論:C/C++程式設計

 

3. 讓程式選擇與決定:流程控制

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/cpp

E-mail : pierre@isu.edu.tw   

 

3.7 switch-case陳述

基本上,if陳述可以應用在所有的條件判斷的情況。但是如果針對單一運算式的差異性條件判斷問題,switch-case語法提供了一個理想的陳述方式。它的標準型式如下:

    switch ( 判斷變數 )

{

        case  變數值1:

            陳述1;

            break;

        case  變數值2:

            陳述2;

            break;

        ......

        default:

            陳述N;

    }

在上面語法中,每一個case最後都需包含關鍵字break,注意到最後有一個default的宣告,當所有的case都沒有被啟動時(也就是所有預設的數值都不等於判斷變數值),則default內的陳述才會被啟動。

使用switch-case陳述有一些注意事項:

l         case後的變數值必須是整數或是字元常數。

l         各個case陳述放置的順序並不重要,也就是不會影響條件判斷結果。

l         依一般程式慣例,default的宣告總是放置在case-switch的最後。

以下範例程式應用一個switch statement讓使用者輸入選擇,來模擬一個簡單的選擇目錄

/*------------------------------------------------------------------*

//  範例程式3-12

//  Copyright (c) 陳慶瀚, 2001

/*------------------------------------------------------------------*

    #include <iostream.h>

    void main()

    {

        int menu, numb1, numb2, total;

        cout<<"輸入兩個數值 -->";

        cin>>numb1>>numb2;

        cout<<"1=加法\n";

        cout<<"2=減法\n";

        cout<<"3=乘法\n";

        cout<<"請輸入運算功能選項\n";

cin>>menu;

        switch( menu )

        {

            case 1:

total = numb1 + numb2;

break;

            case 2:

total = numb1 - numb2;

break;

            case 3:

total = numb1 * numb2;

break;

            default:

cout<<"無效的運算功能選項\n";

        }

        if( menu == 1 )

            cout<<numb1<<" + "<<numb2<<" = "<<total ;

        else if( menu == 2 )

            cout<<numb1<<" - "<<numb2<<" = "<<total ;

        else if( menu == 3 )

cout<<numb1<<" * "<<numb2<<" = "<<total ;

    }

 

範例程式輸出1

    輸入兩個數值 --> 37 23

    1=加法

    2=減法

    3=乘法

請輸入運算功能選項 2

    37 - 23 = 14

範例程式輸出2

輸入兩個數值 --> 5 8

    1=加法

    2=減法

    3=乘法

請輸入運算功能選項 8

    無效的運算功能選項

 

以下範例程式,我們使用一個字變數元作為判斷變數,使用者從鍵盤輸入任意字元,case-switch將啟動其中一個case

/*--------------------------------------------------------*

//  範例程式3-13

//  Copyright (c) 陳慶瀚, 2001

/*-------------------------------------------------------*

void main( )

{

char c;

int count=0;

cout<<"請輸入一個字元-->";

cin>>c;

switch(c)

{

case 'a':

case 'e':

case 'i':

case 'o':

case 'u':

count++;

                  break;

             default :

count--;

}

cout<<"count="<<count<<endl;

} 

執行範例:

請輸入一個字元-->a

count=0

請輸入一個字元-->u

count=1

請輸入一個字元-->x

count=-1


課堂練習3-7

寫一個C++的程式,使用switch-case陳述,可以讓使用者輸入一個介於0-100的成績,如果分數小於60則輸出”fail!”,如果成績大於等於60且小於75則輸出”passed!”,如果成績大於等於75且小於90輸出”good”,如果成績大於等於90輸出”very good”。 


 

計算機概論:C/C++程式設計

義守大學電機系 陳慶瀚 
2001.10.15