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

 

if()測試
在 if 測試條件為真時,就執行單一敘述,或是執行用大括號包住的區塊敘述。

 

巢狀if()測試
當if()測試中條件為真(true)時,所要執行的區塊敘述內可以包含if()測試,這就形成了巢狀if()測試。
只有當外層的條件為真時,才會進入內層做測試,理論上可以含有無限層次的巢狀,但我沒測過無限層次。

 

#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{
    
    int datai = 0;
    
    cout << "輸入一數字:  ";
    cin >> datai ;
    cout << "\n\n";
    
    if(datai > 10)
    {
        if(datai < 20)
        {
            if(datai == 16)
            {
            
            cout << "選中超級幸運數字了\n";
            return 0;
              }
          
          cout << " 擦邊球喔 , 要不要再試一次\n\n";
          return 0;
         }
     } 
        
    cout << "可惜沒選中....\n\n";
    
    return 0;
    
}


if-else測試
之前的if()測試,都是當測試條件為真(true)時,執行一個敘述或一個區塊敘述,然後程式再循序執行下去。
但是有時候也可能當測試條件為假(false)時就需執行特定的程式碼,然後程式再循序執行下去。

 

例:

#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{
    
    int datai = 0;
    
    cout << "輸入一數字:  ";
    cin >> datai ;
    cout << "\n\n";
    
    if(datai > 10)
    {
        if(datai < 20)
        {
            if(datai == 16)
            {
            
            cout << "選中超級幸運數字了\n";
            return 0;
              }
          
          cout << " 擦邊球喔 , 要不要再試一次\n\n";
          return 0;
         }
     } 
    else
    {    
    cout << "可惜沒選中....\n\n";
    // ...當然還可以寫很多你想要執行的程式碼 
        }
    return 0;
    
}

 


再小改一下程式碼


#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{
    
    int datai = 0;
    
    cout << "輸入一數字:  ";
    cin >> datai ;
    cout << "\n\n";
    
    if(datai > 10)
    
        if(datai < 20)
        {
            if(datai == 16)
            {
            
            cout << "選中超級幸運數字了\n";
        
            return 0;
                }
          
          cout << " 擦邊球喔 , 要不要再試一次\n\n";
          return 0;
           }
      
    else
    {
    cout << "可惜沒選中....\n\n";
    // ...當然還可以寫很多你想要執行的程式碼 
        }

    return 0;
    
}
 
這個 else 是跟著哪個 if() 成一組呢?
測試的結果有沒有和你想的一樣?


巢狀的if-else測試
我們已經知道在if()測試中有巢狀的if()測試,同樣的在if-else中可以有巢狀的if()測試,而且在if()測試中
也可以有巢狀的if-else測試,甚至在if-else中也有if-else測試,這提供了許多用途,也提供了混亂的可能。


switch 條件判斷
當面對許多種選擇的情況時,先看看 switch 的括號,當中置放要取出數值的變數或運算式,取得數值之後,會與 case 設定的數字或字元比對,如果符合就執行以下的陳述句,直到遇到 break 後離開 switch 區塊,若沒有符合的數值或字元,會執行 default 後的陳述句,default 不需要時可以省略。

 

例:

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

 

switch 的條件判斷,用任意的 case 值定義可能的選項,在此例中 case 111,case 222 ....共享相同的動作,這並不違反 case 值必須是唯一的限制。

 

 

 

 

.

arrow
arrow
    全站熱搜

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