【不是惡夢的開始,而是再度的精進。】
當面臨多重選擇時,我們不必再巢狀的 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;
}
延伸閱讀
.