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; } |