免費開始練習
普考申論題 114年 [資訊處理] 程式設計概要

第 二 題

📖 題組:
依據以下 C#程式碼,回答下列問題:
1 using System;
2 namespace CSP4
3 {
4 class Program
5 {
6 static bool CSP4_1(int x)
7 {
8 if (x < 0) return false;
9 int L = 0, R = x;
10 while (L <= R)
11 {
12 int M = L + (R - L) / 2;
13 long S = (long)M * M;
14 if (S == x) return true;
15 else if (S < x) L = M + 1;
16 else R = M - 1;
17 }
18 return false;
19 }
20 static long CSP4_2(int n)
21 {
22 if (n <= 1) return n;
23 long a = 0, b = 1;
24 for (int i = 2; i <= n; i++)
25 {
26 long temp = a + b;
27 a = b;
28 b = temp;
29 }
30 return b;
31 }
32 static void Main()
33 {
34 int[] arrays = { 9, 10, -4 };
35 foreach (var n in arrays)
36 {
37 Console.WriteLine($"{n} is CSP4_1? {CSP4_1(n)}");
38 Console.WriteLine($"CSP4_2({n}) = {CSP4_2(n)}");
39 }
40 }
41 }
42 }
📝 此題為申論題,共 3 小題

小題 (二)

20~31 行程式碼功能(8 分)

思路引導 VIP

先觀察迴圈內的變數替換邏輯:temp = a + b; a = b; b = temp;,這是典型的「將前兩項相加產生下一項」的特徵。接著結合初始條件 a = 0, b = 1,即可輕易辨識出此為計算費氏數列(Fibonacci sequence)的迭代解法。

🤖
AI 詳解
AI 專屬家教

【解答】 第 20~31 行程式碼(CSP4_2 函式)的功能為:計算並回傳第 n 個費氏數列(Fibonacci sequence)的數值。 【詳細解析】

小題 (一)

6~19 行程式碼功能(9 分)

思路引導 VIP

看到 L、R 變數與 while (L <= R) 搭配中點 M 的結構,應立刻聯想到「二元搜尋法 (Binary Search)」。接著觀察核心判斷式 S = M * M 與 x 的比較,即可推敲出此函式旨在尋找某整數的平方是否等於 x,亦即判斷 x 是否為完全平方數。

🤖
AI 詳解
AI 專屬家教

【破題】 第 6~19 行(CSP4_1 函式)的核心功能為「判斷輸入的整數 x 是否為完全平方數 (Perfect Square)」。 【論述】

小題 (三)

此程式輸出結果為何?(8 分)

思路引導 VIP

看到此題應先獨立分析 CSP4_1 與 CSP4_2 兩個函式的運作邏輯(分別為判斷完全平方數的二分搜尋法、計算費波那契數列的迭代法)。接著將陣列 {9, 10, -4} 依序代入手動追蹤,並特別注意 C# 中布林值輸出為字串時首字為大寫的特性(True / False)。

🤖
AI 詳解
AI 專屬家教

【解題思路】先釐清兩函式的演算法意義:CSP4_1 為判斷數字是否為完全平方數,CSP4_2 為計算費氏數列(Fibonacci Sequence)的第 n 項,接著逐一帶入陣列元素追蹤程式碼。 【詳解】 已知測試陣列為 arrays = { 9, 10, -4 },程式會用 foreach 依序帶入計算:

🏷️ 相關主題

程式語言與演算法實作
查看更多「[資訊處理] 程式設計概要」的主題分類考古題