開啟章節選單
基本用法
極為常見條件判斷是什麼?
在寫程式時,我們常需要依照題目要求判斷現在的狀況,再決定下一步要做什麼,這時候條件判斷就派上用場了。
if - 如果
在程式中,我們的判斷架構會像這樣:
if (條件) { (敘述1) }
其中,if
後面的 ()
裡裝的是條件,最簡單的第一種寫法就是直接放一個數學不等式進去,像是 x != 10
、x < y
之類的。如果這個條件成立,就會做 敘述1
的內容。舉個例子,假設你要寫個程式判斷你有沒有及格,那你的 code 應該會長這樣:
int score; cin >> score; if (score >= 60) { cout << "Oh yes~"; }
else - 否則
繼續上面的例子,如果你及格了,程式會輸出 Oh yes~
,但那這時候問題就來了,如果你很不幸地沒有及格怎麼辦勒?
或許你會想到再加一個 if
像是這樣:
if (score >= 60) { cout << "Oh yes~"; } if (score < 60) { cout << "Oh no qwq..."; }
不過這樣寫有點麻煩,所以我們可以用 else
來簡化:
if (score >= 60) { cout << "Oh yes~"; } else { cout << "Oh no qwq..."; }
else
的意思就是否則,當 if
的條件不成立時,就會執行 else
裡面的內容。
else if - 否則如果
那如果條件判斷不是二元的呢?不用擔心,還有 else if
!這個東西可以讓你在 if
不成立時再檢查一次條件,像是這樣:
int score; cin >> score; if (score >= 90) { cout << "Oh yes~"; } else if (score >= 60) { cout << "That's OK."; } else { cout << "Oh no qwq..."; }
把 if 寫在一行
這邊再介紹一個小技巧,如果你的 if
或 else
要執行的敘述不多,你可以把它們寫在一行:
if (score >= 60) cout << "Oh yes~"; else cout << "Oh no qwq...";
那如果要執行的敘述有兩行呢?你可用逗號 ,
來分隔:
if (score >= 60) cout << "Oh yes~", cout << "You're great!"; else cout << "Oh no qwq...", cout << "You can do better!";
雖然行數看起來少了,但如果想這麼寫的話,請確保你的程式碼還是容易閱讀的。另外,這個技巧不只適用在 if
裡,其他地方也可以用,你可以自己試試看!
switch - 多重條件判斷
switch
是一個可以讓你一次判斷多個條件的結構,通常用在有很多種情況要判斷的時候。
這是基本的 switch
架構:
switch (x) { case (情況1): (敘述1) break; case (情況2): (敘述2) case (情況3): (敘述3) break; case (情況4): case (情況5): (敘述4) break; ... default: (敘述4) }
簡單來說,case 們代表的就是原本 if
裡的各種狀況,只要 case 後面括弧內的值和 x
相同,case 下的敘述就會被執行,否則就會繼續檢查下面的其他 case。最後如果全部都不符合,就會執行 default
後的內容。
一旦進入 switch
的某個 case
裡面,除非遇到 break
,否則一定會等到 default
才會退出 switch
。如果像上面的第二個 case
一樣後面沒有加 break
,那麼第三個 case
的敘述也會被執行到。
舉個例子,假設給你兩個正整數 a、b 和一個符號 c( + , - , * , / , % ),請你求 a、b 經過 c 運算後的結果。
如果只用 if
的話要寫成這樣:
if (c == '+') { cout << a + b; } else if (c == '-') { cout << a - b; } else if (c == '*') { cout << a * b; } else if (c == '/') { cout << a / b; } else { cout << a % b; }
而換成 switch
的話就變成這樣:
switch (c) { case '+': cout << a + b; break; case '-': cout << a - b; break; case '*': cout << a * b; break; case '/': cout << a / b; break; default: cout << a % b; break; }
是不是比 if
的版本更容易理解呢?
但好像比較麻煩(?
小測驗
下面這段程式碼的輸出為何?
#include <bits/stdc++.h> using namespace std; int main() { int x = 2; switch (x) { case 1: cout << "A"; case 2: cout << "B"; case 3: cout << "C"; break; case 4: cout << "D"; } cout << endl; }