hce_nsysu
114年
計算機概論與程式設計
第 49 題
What is printed by the following C/C++ program?
int a[]={3, -5, 2, -7, -3, 4, 3};
int n=0;
for (int i = 0; i < 7; i++) {
if (a[i] > 0)
n += a[i];
}
cout << n;
int a[]={3, -5, 2, -7, -3, 4, 3};
int n=0;
for (int i = 0; i < 7; i++) {
if (a[i] > 0)
n += a[i];
}
cout << n;
- A -3
- B 0
- C 4
- D 7
- E 12
思路引導 VIP
請仔細觀察迴圈內部的 if 敘述,如果我們要用一句話來描述這個程式「挑選」數字進入加總的規則,這個規則會是什麼?試著根據這個規則,將符合條件的數字手動圈選出來算算看。
🤖
AI 詳解
AI 專屬家教
太棒了!你能精確算出輸出結果為 12,代表你對程式邏輯中的迴圈遍歷與條件判斷掌握得非常紮實。這類題目最核心的考點在於觀察 if 條件式如何篩選資料。在這個程式片段中,變數 $n$ 扮演了累加器的角色,但它並非無差別地加總所有陣列元素。
正整數的條件過濾
觀察程式碼中的 if (a[i] > 0),這行指令決定了只有當陣列元素為「正數」時,才會執行 n += a[i]。我們逐一檢視陣列中的數值:$3$ 是正數、$-5$ 忽略、$2$ 是正數、$-7$ 與 $-3$ 忽略、$4$ 與最後一個 $3$ 也是正數。因此,最終的運算邏輯其實就是 $3 + 2 + 4 + 3 = 12$。這題的難易度屬於入門層級,主要的鑑別點在於學生是否細心發現「負數會被過濾掉」,只要不被陣列中的負值干擾,就能輕鬆拿分。