【不是惡夢的開始,而是再度的精進。】

當面臨多重選擇時,我們不必再巢狀的 if else-if else-if 不斷的判斷,避免掉 if 和 else-if 配對混淆造成的閱讀困難及執行上的錯誤,改而使用 switch-case 敘述則簡約明暸,其格式如下: 

switch(運算式)
{
  case 選擇值1:
       敘述主體1;
       break;
  case 選擇值2:
       敘述主體2;
       break;
       .....
  case 選擇值n:
       敘述主體n;
       break;

  default:
       敘述主體;

}


在選擇值方面只能是字元或常數,例 'a','A',1,2...等等,接著來看看範例。

例: 

#include<iostream>

using namespace std;

 

int main(int argc, char** argv)
{
    char grade ;
    cout << "輸入等級 A,B,C,D : \n";
    cin >> grade;
    
    switch(grade)
    {
        case 'a':
        case 'A':
        cout << "優等喔!   \n";
        break;
        
        case 'b':
        case 'B':
        cout << "成績頗佳...  \n";
        break;
        
        case 'c':
        case 'C':
        cout << "加油喔... \n";
        break;
        
        case 'd':
        case 'D':
        cout << "有待加強... \n";
        break;
        
        default:
        cout << "輸入錯誤!!   \n";    
    }
    
    system("pause");
    return 0;
}


在switch條件判斷中,break; 是必須的,他可以在條件成立並處理完敘述後即跳脫switch,若 case少了break,程式會繼續的往下執行到 switch 敘述的尾端,才會離開 switch 敘述,可想而知這並不是我們所要的,往往會造成程式邏輯上的錯誤。


程式碼中
      
 case 'a':
        case 'A':
        cout << "優等喔!   \n";
        break;

這代表 case 'a' 和 case 'A' 共用 cout << "優等喔!   \n"; 敘述。


再另外一例: 

#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{

 int luckyi = 0; 

    cout << "輸入三位數幸運號碼: "; 
    cin >> luckyi; 

    switch(luckyi) { 
           case 111:
       case 222:
       case 333:
       case 444:
       case 555:
       case 999:
        
            cout << "\n恭喜贏得第二獎 " << endl; 
            break; 

           case 777:
       case 888:
        
            cout << "\n恭喜贏得頭獎 " << endl; 
            break; 
        
        default: 
            cout << "\n抱歉! 沒贏得任何獎項 " << endl; 
            break;
    } 

    return 0;
}

此例是選擇值為常數的時候....
一般而言 case 會設定一個字元或特定的數值,但當我們要處理類似智商啦,或是風力等級時,面對的是一個範圍而不是只有某一特定數值時,該怎麼處理?

 

 

再另外一例: 


#include<iostream>

using namespace std;

 

int main(int argc, char** argv)
{
    int scorei = 0 ;
    cout << "大帥,你考幾分?  \n";
    cin >> scorei;
    
    switch(scorei)
    {

        case 90 ... 100:
        cout << "優等喔!   \n";
        break;
        

        case 60 ... 89:
        cout << "有及格哩...  \n";
        break;
        

        case 50 ... 59:
        cout << "記得要補考... \n";
        break;
        

        case 0 ... 49:
        cout << "死當了...   明年見 \n";
        break;
        
        default:
        cout << "輸入錯誤!!   \n";    
    }
    
    system("pause");
    return 0;
}

 

 

 

 

 

 

延伸閱讀

 

[做中學 dev c++] dev c++

 

[伊蒙 dev c++] 視窗程式學習筆記

 

 

.


 

arrow
arrow
    全站熱搜

    伊蒙‧普羅客 發表在 痞客邦 留言(0) 人氣()