# 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)