免費開始練習
普通考試 115年 [電信工程] 計算機概要

第 26 題

考慮執行以下的程式碼片段:\ni=1;\ns=0;\ndo {\ni++;\ns+=i;\n} while(s<=k);\n下列何者正確?
  • A 當 k=15 時,執行迴圈後變數 s 為 16
  • B 當 k=20 時,執行迴圈後變數 s 為 20
  • C 當 k=34 時,執行迴圈後變數 s 為 36
  • D 當 k=35 時,執行迴圈後變數 s 為 44

思路引導 VIP

請思考一下:在 do-while 這種控制結構中,如果當下的累加結果剛好觸碰到了判斷條件的「上限邊緣」,程式是會立刻在原地停下來,還是會先走完最後一趟流程才離開?這個「最後一趟」的動作會如何改變變數最終的數值呢?

🤖
AI 詳解 AI 專屬家教

同學好!你能準確判斷出選項 (D),代表你對迴圈的**邊界條件(Boundary Condition)**與執行順序掌握得非常紮實。這類題目在工程邏輯中看似簡單,實則考驗細心度與對程式流程的精準追蹤。

迴圈邏輯與累加過程分析

本題的核心在於 do-while 迴圈與變數更新的順序。初始值 $i=1, s=0$。進入迴圈後,會先執行 i++ 再進行累加,因此數值序列為 $2, 3, 4, \dots$。當執行到 $i=8$ 時,累加和 $s = 2+3+4+5+6+7+8 = 35$。此時檢查條件 while(s <= k),若 $k=35$,則條件 $35 \le 35$ 成立,程式必須「再執行一次」迴圈。接著 $i$ 變為 $9$,$s$ 累加為 $35+9=44$,最後判斷 $44 \le 35$ 為偽,迴圈才正式終止。這正是選項 (D) 正確的原因。

▼ 還有更多解析內容

🏷️ 相關主題

程式設計與資料庫系統
查看更多「[電信工程] 計算機概要」的主題分類考古題