switch條件敘述的用法

在C語言中,若要讓程式有不同的執行流程,除了可以用if之外,還可以用switch,而且更為容易!switch結構簡單又分明,非常適合拿來判斷多項條件是否成立,不必項if一樣,每行都要完整的條件式,switch只要輸入一個條件變數就夠了!

switch的結構如下:

switch (條件運算式)

{

case 常數運算式:

敘述區;

break; //中斷switch,這是必須的,否則會造成一些錯誤。

case 常數運算式:

敘述區;

break; //中斷switch,這是必須的,否則會造成一些錯誤。

default: //如果條件都沒有符合以上數值,就執行這個,這個區塊可有可無。

敘述區;

}

switch的動作很簡單,第一行的條件運算式可為一變數,在此以整數x為例。程式會一一判斷x是否與大括號內的case後接的常數運算式數值相同,如果相同,則執行該case的敘述區塊。若x都不符合case的數值,則無條件執行default敘述,若無default,則直接退出switch。switch很簡單,但要注意的是,執行完任何case敘述區後並不自動結束switch區塊,所以敘述區的最後必須使用break敘述結束switch區塊,否則它會繼續向下執行其他的case敘述區和default敘述區。

練習

寫一簡單的加、減、乘、除運算器。輸入為兩個整數,接著輸入"+"、"-"、"*"、"/" (不含雙引號)分別做不同的運算,先輸入為第一個運算元,後輸入為第二個運算元,順序不可調換,而且要可連續計算,輸入";"(不含引號)則重頭開始(即要再重新輸入兩個整數)。

程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
using namespace std;
 
int main()
{
    int a,b; //a為第一運算元;a為第二運算元
    char letter; //letter為運算符號
    while(true) //無窮迴圈
    {
        cout << "請輸入兩個整數:" ; //提示輸入訊息
        cin >> a >> b; //輸入a,b
        cout << "a=" << a << "   b=" << b << endl; // 輸出a,b值
        cout << "a、b二數請問要做甚麼運算?+,-,*,/ 輸入;重新計算。請輸入:";
        while(cin>>letter&&letter!=';') //輸入letter,但letter不等於";"
        {
            switch (letter) //letter變數儲存的字元為條件
            {
                case '+': //若letter='+'
                    cout << a << letter << b << "=" << a+b << endl; //輸出a+b結果
                    cout << "a、b二數請問要做甚麼運算?+,-,*,/ 輸入;重新計算。請輸入:";
                    break; //中斷switch,這是必須的,否則會造成一些錯誤。
                case '-': //若letter='-'
                    cout << a << letter << b << "=" << a-b << endl; //輸出a-b結果
                    cout << "a、b二數請問要做甚麼運算?+,-,*,/ 輸入;重新計算。請輸入:";
                    break; //中斷switch,這是必須的,否則會造成一些錯誤。
                case '*': //若letter='-'
                    cout << a << letter << b << "=" << a*b << endl; //輸出a-b結果
                    cout << "a、b二數請問要做甚麼運算?+,-,*,/ 輸入;重新計算。請輸入:";
                    break; //中斷switch,這是必須的,否則會造成一些錯誤。
                case '/': //若letter='/'
                    cout << a << letter << b << "=" << a/b << endl; //輸出a-b結果
                    cout << "a、b二數請問要做甚麼運算?+,-,*,/ 輸入;重新計算。請輸入:";
                    break; //中斷switch,這是必須的,否則會造成一些錯誤。
                default: //若都不符合+ - * /或 ; ,則 ...
                    cout << "運算符號有誤,請重新輸入:"; //重新輸入提示
            }
        }
    }
    return 0;
}
文章分類:C & C++|標籤:, ,

迴響已關閉