免費開始練習
地特四等申論題 113年 [資訊處理] 程式設計概要

第 三 題

📝 此題為申論題,共 4 小題

小題 (三)

執行下列 C++程式,當使用者輸入 32,其輸出結果為何?(5 分)

思路引導 VIP

本題需要仔細追蹤程式流程。變數 x 初始化為使用者輸入的 32。迴圈 for (int i = 1; x > 0; i++)。第一個 if 判斷 x % i == 0,若成立印出 i 與空格,這是在尋找 x 的因數。當 i 一路遞增到 32 時,32 % 32 == 0 成立,印出 "32 "。接著進入第二個 if:if (x == i),此時 32 == 32 成立,執行區塊內邏輯:將 i 設為 0,印出換行,印出字串 "請輸入一個正整數:",並等待 cin >> x;。題目只問「當使用者輸入 32,其輸出結果為何」,表示追蹤到程式等待下一次輸入前的所有畫面輸出。

🤖
AI 詳解
AI 專屬家教

【考點分析】 測驗流程控制追蹤能力,包含取餘數運算子 %、條件判斷以及在迴圈內部修改計數器變數對執行流程的影響。 【理論/法規依據】

小題 (一)

請將下列 C++語言的迴圈程式以 for 迴圈方式改寫,並寫出此程式片段輸出的結果。(5 分)
int i=1;
while (i <= 10)
{
if (i < 5 && i !=2)
std::cout << 'X';
i ++;
}

思路引導 VIP

本題要求兩項任務:1. 將 while 迴圈改寫為 for 迴圈。2. 追蹤程式碼並寫出輸出結果。思考順序:先將初始化 (int i=1)、條件判斷 (i<=10)、遞增 (i++) 整合到 for(;;) 語法中。接著追蹤變數 i 從 1 到 10 的變化,條件為 i < 5 且 i != 2,因此符合條件的 i 為 1, 3, 4,每次符合印出 'X',共印出三次。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗迴圈結構轉換(while 轉 for)的能力,以及布林邏輯運算(&&, !=)與程式追蹤能力。 【理論/法規依據】

小題 (二)

下列 C++程式有一行錯誤,使得編譯無法通過。請列出那一行錯誤,並寫出正確程式碼。修正後執行此程式,使用者輸入 153 後輸出為何?(5 分)

思路引導 VIP

看到本題(配合第2頁程式碼),首先進行語法檢查。掃描每一行,發現第 12 行 result += remainder*remainder*remainder 結尾漏了分號 ;。接著追蹤邏輯:使用者輸入 153 給 numberoriginalNumber = 153。進入 while 迴圈:第一次 remainder=3,result=0+333=27,original/=10->15;第二次 remainder=5,result=27+555=152,original->1;第三次 remainder=1,result=152+111=153,original->0。結束迴圈,輸出 "輸出為:153"。這是一個計算阿姆斯壯數(Armstrong number)的邏輯。

🤖
AI 詳解
AI 專屬家教

【考點分析】 測驗 C++ 基礎語法除錯(Debug)能力,以及對數值拆解(利用 %10 取餘數與 /10 取商數)迴圈的追蹤能力。 【理論/法規依據】

小題 (四)

請利用 C, C#, C++, Java 或 Python 程式語言寫一個副程式,求二個正整數的最大公因數(GCD)及最小公倍數(LCM)。(10 分)

思路引導 VIP

本題要求寫一個副程式(Function/Method),同時求出 GCD 與 LCM。思考演算法:求 GCD 最有效率的方法是「輾轉相除法(Euclidean algorithm)」;而求 LCM 的公式為 (a * b) / GCD(a, b)。寫作時,因為要回傳兩個值,在 Python 中可以直接回傳 Tuple 非常方便;若選用 C/C++,可透過「傳遞參照 (Pass by Reference)」或指標來實作,或者直接在副程式中印出結果(若題目未嚴格規定回傳方式,印出或回傳皆可,但回傳或修改參照較符合「求」的含義)。

🤖
AI 詳解
AI 專屬家教

【考點分析】 測驗基礎演算法(輾轉相除法)的實作能力,以及副程式(Function)參數傳遞或多重回傳值的語法應用。 【理論/法規依據】