原住民族考試四等考試-電子工程類科 104 年 · 第 27 題 原住民族考試四等考試-電子工程類科 計算機概要 104 年 第 27 題 單選題
執行下列 C 語言程式後產生的輸出為何?
#include <stdio.h>
main() {
int x = 5, y = 25;
if( y > 15) {
x += y;
}
if( x > 15) {
y += x;
} else {
y -= x;
}
printf(''%d, %d\n'', x, y);
} A 5,20
B 30,25
C 30,55 正確答案
D 30,–5
C 正確答案
依序執行兩個 if:x=5+25=30,x>15 成立 y=25+30=55,最終輸出 30,55。
為什麼答案是 C 第一個 if:y=25>15 成立,x=5+25=30。第二個 if:x=30>15 成立,y=25+30=55。輸出 30,55 正確。
載入中…
完整詳解 Pro · 無限 重點 依序執行兩個 if:x=5+25=30,x>15 成立 y=25+30=55,最終輸出 30,55。
兩個 if 獨立執行,先算 x 再算 y。x=30、y=55。
逐選項分析 A ✕
5,20 是完全沒執行任何 if 區塊的錯誤結果,忽略了 y>15 和 x>15 兩個條件都成立。
B ✕ 陷阱
誤以為 printf 印的是原始 x=5+25=30 與原值 y=25,忽略第二個 if 會更新 y=y+x=55。
C ✓ 正確
第一個 if:y=25>15 成立,x=5+25=30。第二個 if:x=30>15 成立,y=25+30=55。輸出 30,55 正確。
D ✕ 陷阱
誤走 else 分支算成 y=25-30=-5。但 x 已被更新為 30,條件 x>15 為真,應走 if 而非 else。
程式執行追蹤 步驟 判斷 結果 x, y 初始 — — 5, 25 if(y>15) 25>15 真 x+=y 30, 25 if(x>15) 30>15 真 y+=x 30, 55 printf — 輸出 30, 55
最常見陷阱:第二個 if 判斷時,x 已被第一個 if 更新為 30(非原始 5)。許多考生仍用舊 x=5 判斷,誤走 else 得到 y=20 或直接沿用 y=25,產生 A、B、D 的錯誤答案。兩個 if 是循序獨立執行,變數會持續累積更新。