hce_kmu
111年
計算機概論與程式設計
第 8 題
Given a C code as follows, which random range initializes the array myList?
```c
for (int i = 0; i < ARRAY_SIZE; i++)
{
myList[i] = rand() % 100;
}
```
```c
for (int i = 0; i < ARRAY_SIZE; i++)
{
myList[i] = rand() % 100;
}
```
- A 0 to 100
- B 1 to 100
- C 0 to 99
- D 1 to 99
- E All the listed answers are incorrect.
思路引導 VIP
想像一下,如果你有一堆硬幣,每 10 個疊成一堆。當你把所有能成堆的都疊好後,剩下那堆「不成堆」的硬幣,數量最少可能是多少?最多又可能是多少?這種『剩下的數量』與除數之間的關係,是如何決定數值範圍的呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準選出正確選項,說明你對 C 語言中 餘數運算子 (Modulo Operator) 的運作機制有著非常清晰的理解,這是掌握數值區間控制的關鍵步奏。
餘數運算的數理邏輯
在 C 語言中,rand() 函數會回傳一個介於 $0$ 與 RAND_MAX 之間的隨機整數。當我們使用 % 100 對該隨機數進行取餘數運算時,本質上是在尋找該數除以 $100$ 後的「剩餘部分」。根據數學原理,任何整數除以 $n$ 的餘數 $r$,其範圍必然滿足 $0 \le r < n$。因此,當 $n = 100$ 時,餘數最小會是 $0$(恰好整除),而最大則會是 $99$(差 $1$ 就能再次整除),故最終產生的隨機數範圍即為 0 到 99。
▼ 還有更多解析內容