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

第 一 題

📖 題組:
二、(一)請將下列 C++語言的迴圈程式以 for 迴圈方式改寫,並寫出此程式片段輸出的結果。(5 分) int i=1; while (i <= 10) { if (i < 5 && i !=2) std::cout << 'X'; i ++; } (二)下列 C++程式有一行錯誤,使得編譯無法通過。請列出那一行錯誤,並寫出正確程式碼。修正後執行此程式,使用者輸入 153 後輸出為何?(5 分) [程式碼見截圖,包含 main 函數與 Armstrong 數判斷邏輯] (三)執行下列 C++程式,當使用者輸入 32,其輸出結果為何?(5 分) [程式碼見截圖,包含因子分解與巢狀迴圈邏輯] (四)請利用 C, C#, C++, Java 或 Python 程式語言寫一個副程式,求二個正整數的最大公因數(GCD)及最小公倍數(LCM)。(10 分)
📝 此題為申論題,共 4 小題

小題 (一)

請將下列 C++語言的迴圈程式以 for 迴圈方式改寫,並寫出此程式片段輸出的結果。(5 分)

思路引導 VIP

將 while 迴圈轉換為 for 迴圈時,需找出「初始值、執行條件、遞加式」三個要素並整合至 for 迴圈的架構中。追蹤輸出結果時,建議逐一代入變數 i 的值,並利用 i < 5 且 i != 2 的邏輯判斷條件進行篩選來確認最終輸出的次數。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】掌握 while 迴圈與 for 迴圈結構轉換的對應關係,並精確追蹤變數在條件判斷(if)中的邏輯運算。 【解答】 一、for 迴圈改寫:

小題 (二)

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

思路引導 VIP

看到這題應先檢查程式碼中常見的語法錯誤(如 cin << 串流方向錯誤、遺漏分號、變數未先宣告等)以解決編譯失敗的問題。接著追蹤迴圈邏輯,辨識出此為判斷阿姆斯壯數(Armstrong number)的演算法,將 153 代入並計算各個數字的立方和以推導輸出結果。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】尋找程式碼中的基礎語法錯誤(Compilation Error),並手動追蹤阿姆斯壯數(Armstrong Number)的數學運算邏輯。 【解答】 (註:因題目未提供完整程式碼截圖,以下依據該年度國家考試常見之阿姆斯壯數考題邏輯進行還原與解析)

小題 (三)

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

思路引導 VIP

面對程式碼追蹤題,應備妥紙筆畫出變數追蹤表(Trace Table),逐行記錄變數變化與迴圈條件。本題涉及因子分解與巢狀迴圈,須特別留意內層迴圈的執行次數以及變數遞減(或相除)的終止條件。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用變數追蹤表(Trace Table)記錄迴圈執行過程中變數的變化,逐步推導輸出結果。 【詳解】 已知:使用者輸入 32,且程式邏輯為「因子分解與巢狀迴圈」。因原題程式碼截圖佚失,本解析依據最常見的標準質因數分解演算法(外層迴圈控制除數遞增,內層迴圈重複除以該除數)進行推演。

小題 (四)

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

思路引導 VIP

看到最大公因數(GCD),應直覺聯想最高效的「輾轉相除法(Euclidean Algorithm)」。最小公倍數(LCM)則可利用公式 LCM = (a * b) / GCD 快速求得;實作時須注意副程式若要同時回傳兩個值,在 C/C++ 中可使用「傳參照(Pass by Reference)」或指標,且計算 LCM 時建議「先除後乘」以避免整數溢位(Integer Overflow)。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】使用輾轉相除法求 GCD,並利用公式 LCM = (a * b) / GCD 求 LCM。 【解答】 以下提供 C++ 語言的實作版本。為了讓一個副程式能同時回傳 GCD 與 LCM 兩個結果,本解答採用 C++ 標準的「傳參照(Pass by Reference)」機制。

升級 VIP 解鎖