條件判斷 · 複習測驗

10 題涵蓋 if/else if、switch、真假、大括號、dangling else · 達 90% 放行
尚未作答
作答後按交卷自動算正確率:≥ 90% 過關;未達則回 Quizlet / 講義 複習再測。每題交卷後顯示正解與解析。

Q1int s=78; 走 A/B/C/F 的 else if 鏈,印出?預測輸出

C。從上到下,`78>=90` 假、`78>=80` 假、`78>=70` 真→印 C,後面全跳過。

Q2n=1case 1 沒 break、case 2 有 break,印出?預測輸出

one 和 two。case 1 沒 break → 貫穿 case 2 印 two,遇 break 停。

Q3else if 鏈把 s >= 60 放最前面,95 分會印哪一級?概念

D。第一個成立就停,95 先滿足 `>=60` 印 D,後面 `>=90` 永遠到不了。所以**嚴格條件要放上面**。

Q4int x=5; if (x = 0) printf("A"); else printf("B"); 結果?抓 bug

印 B,x 變 0。`x = 0` 是指派、回傳 0=假 → else;要比較用 `==`。

Q5沒大括號:if (x>0) printf("a\n"); printf("b\n");,當 x = -1 印什麼?概念

只印 b。沒大括號時 if 只管下一個敘述(印 a);印 b 那行永遠執行。goto fail 教訓,永遠加 {}。

Q6巢狀 if 的 else 沒大括號時,配對哪個 if?

最近的 if。dangling else 規則:else 配對最近的 if。加 {} 消歧義。

Q7if (-1) printf("yes"); 會執行嗎?概念

會。C 中任何非零都是真,只有 0 是假。`-1` 非零=真。

Q8a=7,b=12,c=5; max=a; if(b>max)max=b; if(c>max)max=c; 後 max?預測輸出

12。max=7 → 12>7 → max=12 → 5>12 假 → max=12。兩個獨立 if 都檢查。

Q9三個獨立 if(>0 印「正」、>10 印「大」、>100 印「超大」),x=50 印什麼?

「正」「大」。獨立 if 每個都檢查:50>0 真、50>10 真、50>100 假。(若用 else if 只會印一個)

Q10switch 的某個 case 忘了寫 break,會怎樣?

貫穿。沒 break 會繼續執行下一個 case 的程式碼,直到遇到 break 或 switch 結束。