# APCS 觀念題 - 運算式 ###### tags: `APCS` ## 第 1 題 下方程式碼執行後輸出結果為何? ```c int a = 2, b = 3; int c = 4, d = 5; int val; val = b / a + c / b + d / b; printf("%d\n", val); ``` (A) 3 (B) 4 \(C\) 5 (D) 6 <!-- A --> ## 第 2 題 假設 `x`, `y`, `z` 為布林 (boolean) 變數,且 `x = TRUE`, `y = TRUE`, `z = FALSE`。請問下面各布林運算式的真假值依序為何?(`TRUE` 表真,`FALSE` 表假) * `!(y || z) || x` * `!y || (z || !x)` * `z || (x && (y || z))` * `(x || x) && z` (A) `TRUE FALSE TRUE FALSE` (B) `FALSE FALSE TRUE FALSE` \(C\) `FALSE TRUE TRUE FALSE` (D) `TRUE TRUE FALSE TRUE` <!-- A --> ## 第 3 題 下列程式碼是自動計算找零程式的一部分,程式碼中三個主要變數分別為 `Total` (購買總額),`Paid` (實際支付金額),`Change` (找零金額)。但是此程式片段有冗餘的程式碼,請找出冗餘程式碼的區塊。 ```c int Total, Paid, Change; // ... Change = Paid - Total; printf("500 : %d pieces\n", (Change - Change % 500) / 500); Change = Change % 500; printf("100 : %d coins\n", (Change - Change % 100) / 100); Change = Change % 100; // A 區 printf("50 : %d coins\n", (Change - Change % 50) / 50); Change = Change % 50; // B 區 printf("10 : %d coins\n", (Change - Change % 10) / 10); Change = Change % 10; // C 區 printf("5 : %d coins\n", (Change - Change % 5) / 5); Change = Change % 5; // D 區 printf("1 : %d coins\n", (Change - Change % 1) / 1); Change = Change % 1; ``` (A) 冗餘程式碼在 A 區 (B) 冗餘程式碼在 B 區 \(C\) 冗餘程式碼在 C 區 (D) 冗餘程式碼在 D 區 <!-- D --> ## 第 4 題 若函式 `rand()` 的回傳值為一介於 0 和 10000 之間的亂數,下列那個運算式可產生介於 100 和 1000 之間的任意數(包含 100 和 1000)? (A) `rand() % 900 + 100` (B) `rand() % 1000 + 1` \(C\) `rand() % 899 + 101` (D) `rand() % 901 + 100` <!-- D --> ## 第 5 題 若要邏輯判斷式 `!(X1 || X2)` 計算結果為真 (True),則 `X1` 與 `X2` 的值分別應為何? (A) `X1` 為 `False`,`X2` 為 `False` (B) `X1` 為 `True`,`X2` 為 `True` \(C\) `X1` 為 `True`,`X2` 為 `False` (D) `X1` 為 `False`,`X2` 為 `True` <!-- A --> ---- ## 解答 |1|2|3|4|5| |-|-|-|-|-| |A|A|D|D|A| [目錄](https://hackmd.io/@kaeteyaruyo/APCS-concept-index) | [APCS 觀念題 - 流程控制 >>](https://hackmd.io/@kaeteyaruyo/APCS-concept-selection)