【不是惡夢的開始,而是再度的精進。】
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 值必須是唯一的限制。
.