網頁設計

==== switch 敘述 ====

 

一、switch 敘述

上一頁我們介紹了 if 敘述的用法,if 敘述通常用在要判斷的情況不多的時候,如果要處理的情況很多,則用 if 敘述寫起來會很長,而且很麻煩。例如我們以一個整數來記錄學生的縣市,1代表台中市、2代表台中縣、3代表彰化縣、4代表南投縣、5代表雲林縣、6代表苗栗縣、7代表其他,接下來我們輸入一個整數,印出它對應的縣市,程式如下:

int a;
cin >> a;
if ( a == 1 )
{
    cout << "台中市" << endl;
}
else if ( a == 2 )
{
    cout << "台中縣" << endl;
}
else if ( a == 3 )
{
    cout << "彰化縣" << endl;
}
else if ( a == 4 )
{
    cout << "南投縣" << endl;
}
else if ( a == 5 )
{
    cout << "雲林縣" << endl;
}
else if ( a == 6 )
{
    cout << "苗栗縣" << endl;
}
else
{
    cout << "其他" << endl;
}

是不是滿麻煩的?在這裡我們介紹另一種語法─ switch 敘述,switch 敘述通常是用在對一個變數或運算式的各種可能的值分別做不同的處理,它的語法如下:

switch ( 運算式或變數 )
{
  case 值1 :
    指令1-1;
    指令1-2;
    ...
    break;
  case 值2 :
    指令2-1;
    指令2-2;
    ...
    break;
  ...
  default:
    指令n-1;
    指令n-2;
    ...
   break; 
}

上面 switch 後面的小括號 ( ) 裡,可以是一個變數的名稱,也可以是一個含有變數的運算式。而大括號 { } 裡有多個 case ,每個 case 後面接一種可能的值,下面接符合該值時要執行的指令,然後有一行 break; , 如果沒有這行 break ,則它會一直執行下去,直到遇到 break} 為止。而最後一個 default 為不符合上面任何一個 case 時,所要執行的動作,如果用不到也可以不要寫。

而我們將上面的程式改用 switch 的寫法為:

int a;
cin >> a;
switch ( a )
{
  case 1:
    cout << "台中市" << endl;
    break;
  case 2:
    cout << "台中縣" << endl;
    break;
  case 3:
    cout << "彰化縣" << endl;
    break;
  case 4:
    cout << "南投縣" << endl;
    break;
  case 5:
    cout << "雲林縣" << endl;
    break;
  case 6:
    cout << "苗栗縣" << endl;
    break;
  default:
    cout << "其他" << endl;
    break;
}

這樣是不是比較清楚呢?

 

二、實例─郵遞區號

接下來我們希望寫一個程式,輸入台中市八個區的郵遞區號,然後印出它的區名,如果不是輸入這 8 個區的郵遞區號,則印出 "不屬於台中市"。這八個區的郵遞區號及區名對照如下:

郵遞區號 區名
400 中區
401 東區
402 南區
403 西區
404 北區
406 北屯區
407 西屯區
408 南屯區

程式如下:

int a;
cin >> a;
switch ( a )
{
  case 400:
    cout << "中區" << endl;
    break;
  case 401:
    cout << "東區" << endl;
    break;
  case 402:
    cout << "南區" << endl;
    break;
  case 403:
    cout << "西區" << endl;
    break;
  case 404:
    cout << "北區" << endl;
    break;
  case 406:
    cout << "北屯區" << endl;
    break;
  case 407:
    cout << "西屯區" << endl;
    break;
  case 408:
    cout << "南屯區" << endl;
    break;
  default:
    cout << "不屬於台中市" << endl;
    break;
}

此外,上面的題目中,如果輸入的郵遞區號改成用 5 位數,則我們可以用:

switch ( a / 100 ) {

的方式,來取得前面三位數。

 

三、隨堂練習

1.編班問題

自由國小有新生 200 名,要編入四個班級裡,學校的作法是將學生依名字的筆劃順序編了 1 到 200 號,然後 1 號在一班、 2 號在二班、 3 號在三班、 4 號在四班,而 5 號又回到一班、 6 號在二班、 7 號在三班、 8 號在四班,以此類推……

現在,我們要寫一個程式,輸入一個 1 到 200 的整數(不必檢查是否超出這個範圍),印出該名學生要編到哪一班,例如:

輸入1:75

輸出1:三班

輸入2:120

輸出2:四班

2.班級編號

為了方便記錄,我們常常把年級和班級以三個數字來稱呼,例如 "三年二班" 稱為 302、二年十一班稱為 211 等,其中百位數為年級,而後兩位數為班級。台中市自由路上的某間女子高中有三個年級,每個年級各有18個班。

現在我們要寫一個程式,輸入前面提到的三位數,然後印出它所代表的班級,如果輸入了無法對應的年級或班級,則印出 "某年" 或 "某班",例如:

輸入1:302

輸出1:三年二班

輸入2:211

輸出2:二年十一班

輸入3:501

輸出3:某年一班

輸入4:119

輸出4:一年某班

提示:請將年級和班級分開用兩次的 switch 來處理,至於如何從輸入的數字取得它的年級和班級,則可以使用 /% 這兩個運算子。

3.四則運算

請你寫一個程式,可以輸入類似 123+456 這樣的運算式,前後兩個數都是浮點數,中間的運算符號可以是加(+)、減(-)、乘(*)、除(/)等四種,然後印出計算結果,例如:

輸入1:123+456

輸出1:579

輸入2:543-111

輸出2:432

輸入3:30*12

輸出3:360

輸入4:987/4

輸出4:246.75

提示:運算符號為一個字元,以請 char 型態宣告,而在 switch 裡則是用 case '+' : 這樣的語法,也就是把字元前後加上 ' 符號。

 

[上一頁] [首頁] [下一頁]

++ 網頁製作 By 我心中的新西多摩 2004 ++