110 農會招考九職等以下 資訊管理 農會第6次招考新進人員九職等以下 資訊管理(程式設計) 考古題詳解

110 年・農會招考・九職等以下・資訊管理
試題代碼 110年農會第6次招考新進人員九職等以下 資訊管理(程式設計)

第 1 題1 分

判斷題:C 語言程式 int a=3.8; cout<<a; 的輸出為 4。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查浮點數轉換為整數時的型別轉換規則。

題目宣稱為 C 語言,但 cout 是 C++ 的輸出串流物件;依題目 intended semantics,應以 C++ 程式解讀:

  • 3.8 的型別是浮點數,通常視為 double。
  • a 宣告為 int,只能儲存整數。
  • 將 double 指派給 int 時,小數部分會被捨去,結果為整數部分 33。
  • 此轉換不是四捨五入,因此不會得到 44。

解題方法

執行下列敘述:

int a = 3.8;

可視為將浮點數 3.83.8 轉換成整數:

3.8⟶33.8 \longrightarrow 3

轉換後,變數 a 的值為 33。接著執行:

cout << a;

輸出變數 a 的整數值,因此輸出為:

3

題目敘述判斷

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 2 題1 分

判斷題:_I3a 是 C++ 語言合法變數名稱。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

C++ 變數名稱屬於識別字(identifier),命名規則如下:

  1. 第一個字元必須是英文字母或底線 _。
  2. 後續字元可使用英文字母、數字或底線 _。
  3. 不得使用 C++ 保留字,例如 int、if、while。
  4. C++ 識別字區分大小寫。

解題方法

檢查 _I3a 的每個字元:

  • 第一個字元 _:底線,符合開頭規則。
  • 第二個字元 I:英文字母。
  • 第三個字元 3:數字,但數字不是第一個字元,因此合法。
  • 第四個字元 a:英文字母。
  • _I3a 不是 C++ 保留字。

因此,依一般考試所採用的 C++ 變數命名規則,_I3a 是合法的變數名稱。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 3 題1 分

判斷題:C 語言的浮點數資料型別 double 佔記憶體 8 Bytes。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 C 語言資料型別的記憶體大小是否由語言標準固定規定。

double 是 C 語言的雙精度浮點數型別,通常可提供比 float 更高的精確度。許多現代電腦系統採用 IEEE 754 雙精度格式,因此:

1 double=8 Bytes=64 bits1\text{ double}=8\text{ Bytes}=64\text{ bits}

但 C 語言標準並未規定 double 必定佔用 8 Bytes。各資料型別實際所佔的記憶體大小,會依編譯器、處理器架構及系統平台而定。

解題方法

判斷此敘述是否正確,應區分:

  1. 常見實作方式。
  2. C 語言標準的強制規定。

在一般使用 GCC、Visual C++ 的現代 32 位元或 64 位元環境中,執行:

#include <stdio.h>

int main(void) {
 printf("%zu\n", sizeof(double));
 return 0;
}

通常會得到:

8

因此,若題目問「常見的 double 大小」,回答 8 Bytes 通常成立。

但題目敘述使用「double 佔記憶體 8 Bytes」的絕對說法,代表所有符合 C 語言規範的環境都必須如此。事實上,C 語言只規定各浮點型別需符合一定的表示能力與型別關係,沒有把 double 的儲存大小固定為 8 Bytes。

實際大小應以:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 4 題1 分

判斷題:在 C 語言程式中,char id[]="11001";,其中的陣列 id 共有 5 個元素。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 C 語言中「字串常值初始化字元陣列」的規則。

在 C 語言中,字串 "11001" 包含 5 個可見字元:

  • '1'
  • '1'
  • '0'
  • '0'
  • '1'

此外,C 語言會在字串結尾自動加入字串結束字元 '\0',因此實際需要的陣列元素數量為:

5+1=65+1=6

解題方法

程式碼如下:

char id[] = "11001";

因為陣列未指定大小,C 語言會依初始化字串的完整內容自動決定陣列大小。

實際配置內容為:

索引內容
id[0]'1'
id[1]'1'
id[2]'0'
id[3]'0'
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 5 題1 分

判斷題:R 語言為一高階且適用於統計領域的程式語言,所以其不能使用遞迴函數。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查兩個觀念:

  1. R 語言的用途與語言特性。
  2. 遞迴函數(recursive function)的定義與使用條件。

R 語言雖然是高階程式語言,且廣泛應用於統計分析、資料處理與資料視覺化,但「適用於統計領域」並不代表不能使用遞迴函數。

遞迴函數是指函數在執行過程中直接或間接呼叫自身的函數。正常的遞迴通常包含:

  • 終止條件:避免函數無限呼叫。
  • 遞迴呼叫:將問題縮小後再次呼叫函數本身。

解題方法

判斷本題敘述是否正確,應將題幹拆成兩部分:

  • 「R 語言為高階且適用於統計領域的程式語言」:此敘述正確。
  • 「所以其不能使用遞迴函數」:此推論錯誤。

R 語言支援函數定義,也允許函數在函數本體內呼叫自身。例如,以下程式計算階乘:

factorial_recursive <- function(n) {
 if (n == 0) {
 return(1)
 }
 return(n * factorial_recursive(n - 1))
}

factorial_recursive(5)

執行過程為:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 6 題1 分

判斷題:Java 有自動記憶體管理回收機制,若物件不再被需要時,該物件所佔用的記憶體會自動地被回收。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Java 的自動記憶體管理機制,以及垃圾回收(Garbage Collection, GC)的基本原理。

Java 程式中的物件通常建立於 Heap(堆積)記憶體。當某物件已不存在任何「仍可被程式存取的參考」時,該物件即成為垃圾回收的候選對象,Java 虛擬機器(JVM)可透過 GC 回收其所占用的記憶體。

例如:

Student s = new Student;
s = null;

當 s 被指定為 null 後,原先建立的 Student 物件已沒有任何有效參考指向它,因此具備被垃圾回收的資格。

解題方法

判斷本題可分成兩個重點:

  1. Java 是否具有自動記憶體管理與垃圾回收機制?
  2. 物件不再被使用後,是否由程式設計師手動釋放記憶體?

Java 確實提供自動垃圾回收機制。程式設計師不必像在 C 或 C++ 中使用 free 或 delete 手動釋放一般物件的記憶體。

當物件已沒有任何可達參考(reachable reference)時,JVM 會將其視為可回收物件,並在適當時機執行 GC,回收該物件所占用的記憶體。因此,依照一般考試命題用語,本敘述正確。

須注意的是,「可被回收」不代表「立即被回收」。GC 的實際執行時間由 JVM 管理,程式設計師無法保證物件在失去參考後立刻釋放記憶體。

選項分析

本題為判斷題,題述如下:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 7 題1 分

判斷題:PHP 為網頁設計語言,所以沒有支援物件導向。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 PHP 的語言特性,以及「網頁設計語言」與「物件導向程式設計」之間的關係。

PHP 是一種常用於伺服器端網頁開發的程式語言,支援:

  • 程序導向程式設計
  • 物件導向程式設計(Object-Oriented Programming, OOP)
  • 類別與物件
  • 封裝、繼承、多型
  • 介面、抽象類別、建構子等機制

因此,PHP 雖然廣泛應用於網頁設計,並不代表它不支援物件導向。

解題方法

判斷本題敘述中的兩個部分:

  1. 「PHP 為網頁設計語言」:基本上正確。PHP 主要用於伺服器端網頁程式開發。
  2. 「所以沒有支援物件導向」:錯誤。PHP 支援物件導向程式設計,並可使用類別、物件、繼承與多型等功能。

題目前半句的描述,不能推導出後半句的結論。「主要應用於網頁」是用途分類;「是否支援物件導向」是程式語言的設計特性,兩者屬於不同層次的概念。

例如 PHP 可以定義類別與建立物件:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 8 題1 分

判斷題:raise 為 Python 語言的關鍵字。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Python 的「關鍵字(keyword)」定義。

Python 關鍵字是語言保留、具有特殊語法意義的字詞,不能任意當作變數名稱、函式名稱或類別名稱使用。raise 即為 Python 的內建關鍵字,用來主動引發例外(exception)。

解題方法

判斷題目中的字詞是否屬於 Python 保留的語法關鍵字。raise 的功能是引發指定例外,常見語法如下:

raise Exception("發生錯誤")

也可在例外處理中重新引發目前捕捉到的例外:

raise

因此,raise 具有固定的語法用途,屬於 Python 語言的關鍵字。

選項分析

題目敘述:「raise 為 Python 語言的關鍵字。」

此敘述正確。raise 是 Python 保留字,用於主動引發例外,例如:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 9 題1 分

判斷題:在 Python 語言程式中,"ABCDE">"ABCdE" 的結果為 TRUE。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Python 字串的「字典序比較」與「大小寫字元的編碼順序」。

Python 比較兩個字串時,會由左至右逐一比較對應位置的字元:

  1. 先比較第一個字元。
  2. 若相同,繼續比較下一個字元。
  3. 第一個出現不同的字元,決定整個字串的大小。
  4. Python 的字串比較區分大小寫,依 Unicode code point 順序判斷。

解題方法

比較:

"ABCDE" > "ABCdE"

逐字比較:

位置左字串右字串結果
1AA相同
2BB相同
3CC相同
4Dd不同

因此比較重點是大寫 D 與小寫 d。

其 Unicode code point 為:

ord⁡(′D′)=68\operatorname{ord}('D')=68
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 10 題1 分

判斷題:在 Python 語言程式中,list(range(5)) 的結果為 [0, 1, 2, 3, 4]。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Python 內建函式 range 的範圍規則,以及 list 將可迭代物件轉換為串列的功能。

range(5) 代表從 00 開始,產生小於 55 的整數序列,預設遞增值為 11:

0,1,2,3,40,1,2,3,4

list(range(5)) 再將此序列轉換成 Python 串列,因此結果為:

[0, 1, 2, 3, 4]

解題方法

Python 的 range 常見格式如下:

range(stop)
range(start, stop)
range(start, stop, step)

本題使用 range(5),屬於單一參數形式:

  • 起始值預設為 00
  • 終止值為 55,但不包含 55
  • 遞增值預設為 11

因此產生的元素為:

0, 1, 2, 3, 40,\ 1,\ 2,\ 3,\ 4
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 1 題2 分

單選題:在 C 語言程式中,int a[]={3,4,5,6,7};,a[3] 的值為多少?

這一題的完整詳解

核心觀念

本題考查 C 語言陣列的「索引值」與「以 0 開始編號」的規則。

程式碼:

int a[]={3,4,5,6,7};

宣告並初始化整數陣列 a,共有 5 個元素。C 語言陣列的第一個元素索引值為 0,依序排列如下:

索引值01234
陣列元素34567

因此,a[3] 表示取出索引值為 33 的元素。

解題方法

依照 C 語言陣列從 00 開始編號:

a[0]=3a[0]=3 a[1]=4a[1]=4 a[2]=5a[2]=5 a[3]=6a[3]=6

所以:

a[3]=6a[3]=6

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 2 題2 分

單選題:在 C 語言程式中,int A[2][3]={1,2,3,4,5,6}; cout<<**(A+1);,其輸出為何?

這一題的完整詳解

核心觀念

本題考查二維陣列的記憶體配置、陣列名稱的指標轉換,以及指標運算。

宣告:

int A[2][3] = {1, 2, 3, 4, 5, 6};

表示 A 是一個有 22 列、每列 33 個整數的二維陣列,初始化後排列如下:

A=[123456]A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}

其中:

  • A[0][0] = 1
  • A[0][1] = 2
  • A[0][2] = 3
  • A[1][0] = 4
  • A[1][1] = 5
  • A[1][2] = 6

二維陣列名稱 A 在運算式中會轉換成「指向第一列的指標」,其型態可視為:

int (*)[3]

也就是「指向含有 3 個 int 元素之陣列的指標」。


解題方法

題目中的運算式為:

**(A + 1)

依序拆解如下。

第一步,計算 A + 1:

A

指向第 00 列,因此:

A + 1

指向第 11 列,也就是:

{4, 5, 6}

第二步,計算 *(A + 1):

*(A + 1)

取得第 11 列陣列,即:

A[1]

此列包含:

{4, 5, 6}

在運算式中,該列陣列會再轉換成指向其第一個元素的指標,因此:

*(A + 1)
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 3 題2 分

單選題:在 C 語言程式片段中,int* pa=new int[5]; int b=sizeof(pa); cout<<b;,其輸出為何?

這一題的完整詳解

核心觀念

本題實際上是 C++ 程式片段,因為使用了:

  • new:C++ 的動態記憶體配置語法
  • cout:C++ 的輸出物件

程式碼如下:

int* pa = new int[5];
int b = sizeof(pa);
cout << b;

其中,pa 的型別是 int*,也就是「指向 int 的指標」。

sizeof(pa) 求的是「指標變數 pa 本身所占的記憶體大小」,不是 new int[5] 所配置的整個陣列大小。


解題方法

pa 雖然指向一個包含 5 個整數的動態陣列,但 pa 本身只是一個指標。

因此:

sizeof(pa)=sizeof(int∗)sizeof(pa)=sizeof(int*)

在命題當年常見的 32 位元編譯環境中,指標大小通常為 4 bytes,因此:

sizeof(pa)=4sizeof(pa)=4

程式輸出:

4

必須注意,sizeof(pa) 不會計算:

5×sizeof(int)5 \times sizeof(int)

因為陣列是以 new 動態配置,指標只保存該陣列的起始位址。

題目未明確指定編譯環境;C++ 標準並未規定所有平台的指標一定是 4 bytes。若採用常見的 64 位元環境,指標大小可能是 8 bytes。但依本題的傳統命題慣例,採 32 位元環境作答。


選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 4 題2 分

單選題:以下為 C 語言程式片段,請問輸出為何?

int a[]={52,38,13,74,83};

int b=0;

for (int i=0; i<4; i++) {

  if (b<a[i]) b=a[i];

}

cout<<b;

這一題的完整詳解

核心觀念

本題考查:

  • 陣列索引從 00 開始。
  • for 迴圈的條件判斷。
  • 以變數 b 逐步記錄目前最大值。
  • i<4 只會處理索引 00 至 33 的元素,不會處理索引 44。

陣列內容如下:

索引a[i]
052
138
213
374
483

解題方法

初始設定:

b=0b=0

迴圈如下:

for (int i=0; i<4; i++)

執行條件為 i<4i<4,因此 ii 依序為 0,1,2,30,1,2,3,只比較前四個元素。

逐次判斷:

  1. i=0i=0:a[0]=52

0<520<52

因此 b=52。

  1. i=1i=1:a[1]=38

條件不成立,b 維持 5252。

  1. i=2i=2:a[2]=13

條件不成立,b 維持 5252。

  1. i=3i=3:a[3]=74

52<7452<74

因此 b=74。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 5 題2 分

單選題:以下為 C 語言程式片段,請問輸出為何?

int i=5, a=2;

while (i>1) {

  a++;

  i--;

}

cout<<a;

這一題的完整詳解

核心觀念

本題考查 while 迴圈的執行條件,以及變數在迴圈中的累加與遞減。

while (i>1) 的意義是:只要 i>1i>1,就執行一次迴圈內容;當 i≤1i\leq 1 時,迴圈停止。

迴圈每執行一次:

  • a++:aa 增加 11
  • i--:ii 減少 11

題目雖標示為 C 語言,但程式使用 cout,實際上是 C++ 的輸出語法;依題目 intended 程式語意計算即可。

解題方法

初始值為:

i=5,a=2i=5,\qquad a=2

逐次追蹤迴圈:

執行次數進入條件執行 a++ 後執行 i-- 後
第 1 次5>15>1a=3a=3i=4i=4
第 2 次4>14>1a=4a=4i=3i=3
第 3 次3>13>1a=5a=5i=2i=2
第 4 次2>12>1a=6a=6i=1i=1

此時 i=1i=1,不符合 i>1i>1,因此迴圈停止。

迴圈共執行 44 次,所以:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 6 題2 分

單選題:在 Python 中,1+2*3/4>2 的輸出為何?

這一題的完整詳解

核心觀念

本題考查 Python 的:

  1. 運算子優先順序
  2. 四則運算結果型別
  3. 比較運算子的布林值判斷

Python 中,乘法 * 與除法 / 的優先順序高於加法 +;比較運算子 > 的優先順序最低,因此會先完成算術運算,再進行大小比較。

解題方法

原式為:

1 + 2 * 3 / 4 > 2

依運算優先順序計算:

2×3=62 \times 3 = 6 6÷4=1.56 \div 4 = 1.5

再計算加法:

1+1.5=2.51 + 1.5 = 2.5

最後進行比較:

2.5>22.5 > 2

此條件成立,因此 Python 輸出布林值:

True

其中,Python 3 的 / 是一般除法,結果為浮點數;本題的除法結果為 1.51.5,因此整體算術結果為 2.52.5。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 7 題2 分

單選題:在 HTML 中,下列何者為換行的語法?

這一題的完整詳解

核心觀念

HTML 以標籤(Tag)描述網頁內容與結構。若要在文字中強制插入換行,使用 <br> 標籤,其名稱源自 break,表示換行。

<br> 通常不需要成對使用,寫法如下:

第一行<br>
第二行

瀏覽器呈現結果為:

第一行 第二行

解題方法

判斷 HTML 換行語法時,直接記憶常用標籤:

  • <br>:強制換行
  • <p>:建立段落
  • <hr>:插入水平分隔線
  • <div>:區塊容器,不是專門的換行標籤

本題問的是「換行的語法」,因此選擇代表 break 的 <br>。

選項分析

  • (A) <br>:正確。 <br> 是 HTML 的換行標籤,用來在文字內容中插入強制換行。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 8 題2 分

單選題:在 Python 中,16<<2 的結果為何?

這一題的完整詳解

核心觀念

本題考查 Python 的位元左移運算子 <<。

對非負整數而言:

x<<n=x×2nx << n = x \times 2^n

也就是將整數的二進位表示向左移動 nn 位,右側補上 nn 個 00。


解題方法

先將 1616 轉換為二進位:

1610=10000216_{10}=10000_2

運算式 16<<2 表示將 10000₂ 向左移動 22 位:

100002<<2=1000000210000_2 << 2 = 1000000_2

再將結果轉回十進位:

10000002=64101000000_2=64_{10}

也可直接利用公式計算:

16<<2=16×22=16×4=6416 << 2 = 16 \times 2^2 =16 \times 4 =64

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 9 題2 分

單選題:在 Python 中,len("農會") 的結果為何?

這一題的完整詳解

核心觀念

Python 3 中,str 字串的 len 函式會計算字串中包含的 Unicode 字元數量,不是計算中文字的位元組數,也不是計算每個字的螢幕寬度。

字串 "農會" 包含兩個字元:

  • "農"
  • "會"

因此:

len⁡("農會")=2\operatorname{len}("農會")=2

解題方法

直接逐一計算字串中的字元數即可:

len("農會")

"農會" 是由 2 個 Unicode 字元組成,所以執行結果為:

2

要注意,len 計算的是字串長度;若要計算經過特定編碼後的位元組數,才會使用例如:

len("農會".encode("utf-8"))
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 10 題2 分

單選題:以下為 C 語言程式,請問輸出為何?

#include <iostream>

using namespace std;

int test3(int a)

{

  if (a<10)

    return a+test3(a+2);

  else

    return 7;

}

int main()

{

  cout<<test3(2);

  return 0;

}

這一題的完整詳解

核心觀念

本題考查:

  • 遞迴函式(recursion)的執行方式。
  • if...else 的條件判斷。
  • 遞迴函式的終止條件,也就是基底情況(base case)。
  • 函式回傳值的逐層累加。

題目程式雖標示為 C 語言,但使用了 #include <iostream>、using namespace std; 及 cout,實際上是 C++ 程式;此差異不影響本題輸出判斷。

函式定義為:

int test3(int a)
{
 if (a < 10)
 return a + test3(a + 2);
 else
 return 7;
}

當 a<10a<10 時,函式會以 a+2a+2 再呼叫自己;當 a≥10a\geq 10 時,直接回傳 77,遞迴停止。

解題方法

由主程式可知:

cout << test3(2);

因此要求計算 test3(2)test3(2)。

依序展開遞迴:

test3(2)=2+test3(4)test3(2)=2+test3(4) test3(4)=4+test3(6)test3(4)=4+test3(6) test3(6)=6+test3(8)test3(6)=6+test3(8) test3(8)=8+test3(10)test3(8)=8+test3(10)

此時 10<1010<10 不成立,因此進入 else:

test3(10)=7test3(10)=7
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 11 題2 分

單選題:Python 3 預設的文字編碼方式為何?

這一題的完整詳解

核心觀念

本題考查 Python 3 的預設文字編碼(character encoding)。

Python 3 的原始碼檔案預設採用 UTF-8 編碼。UTF-8 能表示中文、英文及多種語言文字,且與 ASCII 相容,因此適合現代程式設計與多語系文字處理。

解題方法

看到題目問「Python 3 預設的文字編碼方式」,直接掌握以下定義:

Python 3 原始碼的預設編碼為 UTF-8。

因此,若程式檔案中直接撰寫中文字,通常不需額外宣告編碼,例如:

姓名 = "王小明"
print(姓名)

上述程式可直接使用中文,原因是 Python 3 預設以 UTF-8 解讀原始碼。

須注意:題目所稱的預設文字編碼,主要是指 Python 3 原始碼的預設編碼;檔案輸入輸出、作業系統環境的預設編碼,可能因系統設定而不同,但不影響本題答案。

選項分析

(A) ASCII

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 12 題2 分

單選題:以下為 Python 程式,請問 nn 的結果為何?

n=2

while n<10:

  n=(n-1)*(n+1)

這一題的完整詳解

核心觀念

本題考查 Python 的 while 迴圈、條件判斷,以及變數在每次迴圈中的重新指定。

程式執行規則如下:

  • 先判斷 n<10 是否成立。
  • 條件成立時,執行迴圈內的指定敘述: n=(n−1)(n+1)n=(n-1)(n+1)
  • 執行完畢後,再回到 while 重新判斷條件。
  • 當 n<10 不成立時,迴圈停止。

其中:

(n−1)(n+1)=n2−1(n-1)(n+1)=n^2-1

因此,每次迴圈都會將 nn 更新為 n2−1n^2-1。

解題方法

依照程式實際執行順序逐次計算:

執行階段判斷條件更新後的 nn
初始值n=2<10n=2<10,成立(2−1)(2+1)=1×3=3(2-1)(2+1)=1\times3=3
第 2 次n=3<10n=3<10,成立(3−1)(3+1)=2×4=8(3-1)(3+1)=2\times4=8
第 3 次n=8<10n=8<10,成立(8−1)(8+1)=7×9=63(8-1)(8+1)=7\times9=63
第 4 次n=63<10n=63<10,不成立迴圈停止

迴圈停止時,變數 nn 的值為:

n=63n=63
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 13 題2 分

單選題:以下為 Python 程式,請問 bb 的結果為何?

def test1(a):

  a=a+1

  return a+2

b=0

b=test1(3)

這一題的完整詳解

核心觀念

本題考查 Python 函式的呼叫、參數傳遞、區域變數運算,以及 return 回傳值。

函式:

def test1(a):
 a = a + 1
 return a + 2

其中:

  • a 是函式的參數,也是函式內的區域變數。
  • 呼叫 test1(3) 時,函式內的 a 先取得數值 33。
  • return 會將計算結果傳回呼叫端。

解題方法

程式執行順序如下:

  1. 先執行:
b = 0

此時 b=0b=0。

  1. 執行:
b = test1(3)

將 33 傳入函式,因此函式內:

a=3a=3

  1. 執行:
a = a + 1

a=3+1=4a=3+1=4

  1. 執行:
return a + 2

return值=4+2=6\text{return值}=4+2=6

  1. 函式回傳 66,再指定給 bb:
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 14 題2 分

單選題:以下為 Python 程式,請問 aa 的結果為何?

def swap(a):

  b=a[1]

  a[1]=a[2]

  a[2]=b

a=[1,2,3]

swap(a)

這一題的完整詳解

核心觀念

本題考查 Python 的:

  1. 串列(list)索引。
  2. 串列是可變物件(mutable object)。
  3. 函式參數傳遞的是物件參考;函式內透過參數修改串列內容,會影響原串列。

Python 串列索引從 00 開始:

索引原始內容
a[0]11
a[1]22
a[2]33

解題方法

初始狀態為:

a=[1,2,3]a=[1,2,3]

呼叫:

swap(a)

函式中的參數 a 指向原本的串列,因此函式內的修改會直接改變外部串列。

依序執行:

  1. b=a[1]
b=2b=2

此時串列仍為:

a=[1,2,3]a=[1,2,3]
  1. a[1]=a[2]

將索引 22 的值 33 指派給索引 11:

a=[1,3,3]a=[1,3,3]
  1. a[2]=b

將先前暫存的 b=2b=2 放入索引 22:

a=[1,3,2]a=[1,3,2]

因此,函式執行完畢後,外部的 a 為:

[1,3,2][1,3,2]

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 15 題2 分

單選題:下列何者為 Python 的容器型別,甚是由一連串資料所組成、有順序且不可以改變內容的序列?

這一題的完整詳解

核心觀念

Python 常見的容器型別包括:

  • list:串列,有順序、可修改
  • tuple:元組,有順序、不可修改
  • set:集合,元素不重複,通常不強調順序、可修改
  • dict:字典,以鍵值對儲存資料,可修改

題目描述「由一連串資料所組成、有順序且不可以改變內容的序列」,關鍵條件是:

  1. 資料具有順序
  2. 內容建立後不可修改
  3. 屬於序列型容器

符合這些條件的是 tuple。

解題方法

先將題目條件與各容器型別的特性比對:

型別有順序內容可修改主要特色
list是是可變動的序列
tuple是否不可變動的序列
set否是不重複元素的集合
dict以鍵值對儲存是透過鍵取得值

題目同時要求「有順序」及「不可改變內容」,因此答案為 tuple。

例如:

data = (10, 20, 30)

data 的元素順序固定,且不能直接修改:

data[0] = 99

此操作會產生錯誤,因為 tuple 不允許修改元素。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 16 題2 分

單選題:在 Python 例外處理時,下列何者為直譯器發生內部錯誤時,所丟出的例外物件?

這一題的完整詳解

核心觀念

本題考查 Python 例外類別的定義與適用情境。

當 Python 直譯器在執行過程中發生內部錯誤,表示錯誤並非一般程式語法、資料型別或數值運算直接造成,而是直譯器本身偵測到不應發生的內部狀態,此時會引發 SystemError。

解題方法

判斷各選項所代表的錯誤情境:

  • 數值運算超出可處理範圍:OverflowError
  • 程式語法不符合規則:SyntaxError
  • 直譯器內部發生異常:SystemError
  • 資料型別使用不符合要求:TypeError

題目明確指出「直譯器發生內部錯誤」,因此直接對應 SystemError。

選項分析

(A) OverflowError:錯誤

當算術運算結果超出數值型別可表示的範圍時,會引發 OverflowError。例如浮點數運算結果過大:

import math
math.exp(1000)

此錯誤處理的是數值溢位,並非直譯器內部錯誤。

(B) SyntaxError:錯誤

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 17 題2 分

單選題:下列何者為 Python 常用的機器學習套件?

這一題的完整詳解

核心觀念

本題考查 Python 常用套件的功能分類。

Python 機器學習領域最常用的套件之一是 scikit-learn,提供分類、迴歸、分群、降維、模型評估及資料前處理等功能,例如決策樹、支援向量機、kk-means 分群與線性迴歸。

題目選項中的 scikit-learning 為常見誤寫,正確套件名稱是 scikit-learn。依本題命題意旨,應選代表 scikit-learn 的選項。

解題方法

判斷各選項是否為「Python 常用的機器學習套件」時,應先辨識套件的主要用途:

  • 專門提供機器學習演算法與模型工具:屬於機器學習套件。
  • 主要處理數值運算:屬於基礎科學計算套件。
  • 主要處理資料表格:屬於資料分析套件。
  • 泛稱深度學習技術,且非標準套件名稱:不能視為正確套件。

依此分類,命題者要考的是 scikit-learn。

選項分析

(A) scikit-learning

本選項應是指 scikit-learn,它是 Python 常用的機器學習套件,支援:

  • 分類:如邏輯斯迴歸、決策樹、隨機森林
  • 迴歸:如線性迴歸
  • 分群:如 kk-means
  • 資料預處理
  • 模型選擇與效能評估

嚴格而言,scikit-learning 並不是正確的官方套件名稱;正確名稱為 scikit-learn。本題顯然屬於套件名稱誤植,依命題意旨本選項為正確答案。

(B) numpy

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 18 題2 分

單選題:C 語言片段,float a=5/2;,其變數 aa 的值為何?

這一題的完整詳解

核心觀念

本題考查 C 語言的「整數除法」與「型別轉換」。

在 C 語言中,整數常數 5 與 2 的型別都是 int。當除法運算子的兩側都是整數型別時,會先進行整數除法,結果只保留整數部分。

雖然變數 a 宣告為 float,但型別轉換發生在運算結果產生之後,不會改變前面的除法方式。

解題方法

原始程式碼為:

float a = 5 / 2;

依照運算流程:

  1. 5 與 2 都是整數常數,因此執行整數除法:

5/2=25 / 2 = 2

  1. 將整數除法結果 2 指派給 float 變數 a:

a=2.0a = 2.0

因此,變數 a 的數值為 22。

若要得到 2.52.5,必須讓除法至少有一個運算元是浮點數,例如:

float a = 5.0 / 2;

或:

float a = (float)5 / 2;

選項分析

  • (A) 2.5:錯誤
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 19 題2 分

單選題:以下為 C 語言程式片段,請問輸出為何?

#include <stdio.h>

int main()

{

  float a=2.667;

  printf("%5.2f", a);

  return 0;

}

這一題的完整詳解

核心觀念

本題考查 C 語言 printf 的格式控制字串,重點是 %f 的:

  • 欄寬(field width)
  • 小數位數(precision)
  • 四捨五入
  • 預設靠右對齊與空白補位

格式 %5.2f 可拆解如下:

  • f:以浮點數格式輸出。
  • .2:小數點後輸出 2 位。
  • 5:輸出欄位的最小寬度為 5 個字元。

解題方法

原始數值為:

a=2.667a=2.667

格式指定小數點後保留 2 位,因此要將 2.667 四捨五入為:

2.667⟶2.672.667 \longrightarrow 2.67

2.67 本身共有 4 個字元:

  • 2:1 個
  • .:1 個
  • 6:1 個
  • 7:1 個

但格式要求最小欄寬為 5 個字元,因此左側補 1 個空白。實際輸出內容為:

 2.67

其中最前方有 1 個空白。題目選項通常省略空白的視覺差異,因此正確選項為 (B) 2.67。

要注意,欄寬 5 是「最小欄寬」,不是固定截斷成 5 個字元;若數值本身超過 5 個字元,仍會完整輸出。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 20 題2 分

單選題:以下為 Python 語言程式片段,請問迴圈共被執行幾次?

for i in range(1,50,7):

  print(i)

這一題的完整詳解

核心觀念

本題考查 Python 的 range(start, stop, step) 函式:

  • start:起始值,包含在序列中。
  • stop:終止值,不包含在序列中。
  • step:每次增加的間距。

題目的程式為:

range(1, 50, 7)

表示從 11 開始,每次增加 77,產生小於 5050 的整數。

解題方法

依序列出 i 的取值:

1, 8, 15, 22, 29, 36, 431,\ 8,\ 15,\ 22,\ 29,\ 36,\ 43

下一個數值為:

43+7=5043+7=50

但 range 的終止值 5050 不包含在內,因此迴圈不會執行 i=50 的情況。

迴圈實際執行次數為:

43−17+1=427+1=6+1=7\frac{43-1}{7}+1 = \frac{42}{7}+1 = 6+1 = 7

因此,print(i) 共執行 77 次。

也可使用整數計算公式:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 1 題2 分

複選題:下列何者為 C 語言關鍵字?

這一題的完整詳解

核心觀念

本題考查 C 語言的「關鍵字」(keyword)。關鍵字是 C 語言保留、具有特殊語法意義的字,不能作為一般變數或函式名稱。

本題需特別區分 C 語言與 C++:

  • enum、const:C 語言關鍵字。
  • operator、this:C++ 關鍵字,不是 C 語言關鍵字。

解題方法

逐一判斷各選項是否屬於 C 語言保留字。屬於 C 語言關鍵字者選取;僅屬於 C++ 語法者不選。

選項分析

(A) enum:正確

enum 用來宣告列舉型別:

enum Color {
 RED,
 GREEN,
 BLUE
};

因此 enum 是 C 語言關鍵字。

(B) operator:錯誤

operator 是 C++ 用來進行運算子多載的關鍵字,例如重新定義 + 或 == 的行為。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 2 題2 分

複選題:以下為 C 語言程式,請問執行後的結果,下列何者正確?

#include <iostream>

using namespace std;

void test1(int a)

{

  a+=3;

}

void test2(int* a)

{

  *a+=3;

}

int main()

{

  int a=5, b=6;

  test1(a);

  test2(&b);

  return 0;

}

這一題的完整詳解

核心觀念

本題程式雖題目稱為 C 語言,實際上使用 #include <iostream>、using namespace std;,屬於 C++ 語法。考點是:

  1. 傳值呼叫(pass by value)
  2. 指標傳遞(pointer)
  3. 區域變數與記憶體位址的關係

函式參數若宣告為 int a,函式取得的是原變數的複本;函式內修改複本,不會影響主程式中的原變數。

函式參數若宣告為 int* a,傳入的是變數的記憶體位址。透過 *a 可存取該位址所對應的原始變數,因此能直接修改原變數。

解題方法

主程式初始設定:

int a = 5, b = 6;

因此:

a=5,b=6a=5,\qquad b=6

一、執行 test1(a)

函式定義如下:

void test1(int a)
{
 a += 3;
}

呼叫:

test1(a);

這是傳值呼叫,主程式的 a 值為 55,複製一份給 test1 內部的參數 a:

函式內部的 a=5\text{函式內部的 }a=5

執行:

a += 3;

只會使函式內部的複本變成:

5+3=85+3=8

函式結束後,函式內部的區域參數消失,主程式的 a 仍為:

a=5a=5

二、執行 test2(&b)

函式定義如下:

void test2(int* a)
{
 *a += 3;
}

呼叫:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 3 題2 分

複選題:下列何者為網頁設計前端程式語言?

這一題的完整詳解

核心觀念

網頁應用程式通常分為:

  • 前端(Front-end):在使用者瀏覽器中執行或呈現,負責網頁結構、外觀與互動。
  • 後端(Back-end):在伺服器端執行,負責資料處理、商業邏輯與資料庫存取。

前端網頁的三項核心技術為:

  1. HTML(HyperText Markup Language):建立網頁內容與結構。
  2. CSS(Cascading Style Sheets):控制網頁外觀與版面配置。
  3. JavaScript:處理網頁互動與動態行為。

因此,本題判斷重點是:該技術是否主要在瀏覽器端負責網頁結構、樣式或互動功能。

解題方法

逐一判斷各選項的執行位置與主要用途:

  • 在瀏覽器端建立結構、控制樣式或執行互動功能,屬於前端技術。
  • 主要在伺服器端執行、處理資料與產生回應,屬於後端技術。

依此標準判斷,HTML、JavaScript 與 CSS 都是網頁前端開發的核心技術;PHP則屬於伺服器端語言。

選項分析

(A)HTML:正確

HTML 是網頁的標記語言,用來描述網頁內容結構,例如:

  • 標題:<h1>
  • 段落:<p>
  • 超連結:<a>
  • 表格:<table>
  • 表單:<form>

HTML 文件會由瀏覽器解析並呈現給使用者,屬於前端網頁技術。

嚴格而言,HTML 是「標記語言」,不是傳統意義上的程式語言,但在網頁設計分類中,HTML 明確屬於前端技術,因此本選項正確。

(B)PHP:錯誤

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 4 題2 分

複選題:在網頁程式設計中,下列那一個影像檔可以為 24 位元全彩影像?

這一題的完整詳解

核心觀念

本題考查常見網頁影像檔案格式的色彩深度。

「24 位元全彩影像」通常是指每個像素以 24 位元表示色彩,分為紅、綠、藍三個色彩通道:

8 位元(R)+8 位元(G)+8 位元(B)=24 位元8\text{ 位元(R)}+8\text{ 位元(G)}+8\text{ 位元(B)}=24\text{ 位元}

每個色彩通道有 28=2562^8=256 種明暗程度,因此理論上可表示:

2563=16,777,216256^3=16,777,216

種色彩,稱為 24 位元全彩或真彩色(True Color)。

解題方法

逐一判斷各影像格式是否支援 RGB 三通道各 8 位元的色彩表示:

  • 支援 24 位元色彩的格式,列入正確選項。
  • 僅以色彩索引表表示、色彩數受限於 256 色的格式,不符合 24 位元全彩。

選項分析

(A) BMP:正確

BMP(Bitmap)可儲存多種色彩深度,包括 1 位元、4 位元、8 位元、16 位元、24 位元及 32 位元等。

其中 24 位元 BMP 使用 RGB 三個通道各 8 位元,因此可以表示 24 位元全彩影像。

(B) JPG:正確

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 5 題2 分

複選題:下列何者為動態網頁技術?

這一題的完整詳解

核心觀念

本題考查「靜態網頁」與「動態網頁技術」的區別。

  • 靜態網頁:伺服器直接提供預先製作完成的網頁內容,使用者每次請求通常取得相同內容。
  • 動態網頁:伺服器接收使用者請求後,透過程式執行、資料庫查詢或其他運算,動態產生網頁內容,再傳送給瀏覽器。

ASP、PHP、JSP 都能在伺服器端執行程式碼,依據使用者輸入、登入狀態、資料庫內容等產生不同結果,因此屬於動態網頁技術。

HTML 主要負責描述網頁的結構與內容,本身不是伺服器端程式執行技術。

解題方法

判斷選項是否為動態網頁技術,可採用以下標準:

  1. 是否能在伺服器端執行程式碼?
  2. 是否能依據請求內容動態產生 HTML?
  3. 是否能搭配資料庫進行資料查詢與處理?

符合上述特徵者,即屬於動態網頁技術。依此判斷,ASP、PHP、JSP 均符合;HTML 本身不符合。

選項分析

(A) HTML

HTML(HyperText Markup Language,超文字標記語言)是用來描述網頁結構的標記語言,例如標題、段落、表格、超連結及圖片等。

HTML 檔案通常由伺服器直接傳送給瀏覽器,瀏覽器再依據 HTML 標籤進行呈現。單獨使用 HTML 時,頁面內容通常是事先撰寫好的固定內容,無法自行執行伺服器端程式或查詢資料庫。

因此,HTML 本身不是動態網頁技術,本選項錯誤。

補充:網頁若搭配 JavaScript,可在瀏覽器端產生互動或改變畫面內容,但這不代表 HTML 本身屬於伺服器端動態網頁技術。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 6 題2 分

複選題:下列何者為 HTML 中 <font> 的屬性?

這一題的完整詳解

核心觀念

本題考查 HTML <font> 標籤的屬性。<font> 用於設定文字的外觀,常見屬性包括:

  • size:設定文字大小。
  • color:設定文字顏色。
  • face:設定文字字型。

<font> 標籤在 HTML5 已被淘汰,現代網頁通常使用 CSS 的 font-size、color、font-family 取代;但本題依 HTML 傳統標籤的命題範圍判斷。

解題方法

直接辨識 <font> 的功能:它專門控制文字的大小、顏色與字型,因此對應的屬性為:

<font size="5" color="blue" face="Arial">
 文字內容
</font>

此例中:

  • size="5" 控制文字大小;
  • color="blue" 控制文字顏色;
  • face="Arial" 控制文字字型。

align 是文字或元素的對齊設定,不屬於 <font> 的標準屬性。

選項分析

(A) size:正確

size 是 <font> 的屬性,用於設定文字大小。例如:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 7 題2 分

複選題:在 C++ 類別(class)中的成員變數可以宣告為下列何者?

這一題的完整詳解

核心觀念

本題考 C++ 類別中的「成員存取權限」與 virtual 關鍵字的用途。

C++ 類別成員可透過存取權限修飾詞限制外部存取範圍:

  • public:類別外部也可以存取。
  • protected:類別本身及其衍生類別可以存取,類別外部通常不能直接存取。
  • private:只有類別本身的成員函式及友元可以存取。

這些存取權限可以套用在成員變數及成員函式上。

virtual 則是用於宣告虛擬函式,使 C++ 能夠透過多型機制,在執行期間依實際物件型別決定要呼叫的函式版本,不能用來宣告一般成員變數。

解題方法

判斷每個選項是否能修飾「成員變數」:

  1. 若是存取權限修飾詞,通常可以用於成員變數。
  2. 若是用於函式多型或函式覆寫的關鍵字,則不能用於一般成員變數。
  3. C++ class 的預設存取權限是 private,但題目問的是「可以宣告為何者」,因此 public、protected、private 均屬合法宣告方式。

例如:

class Example {
public:
 int a;

protected:
 int b;

private:
 int c;
};

上述三個成員變數皆為合法宣告。

選項分析

(A) public

正確。

public 是公開存取權限,成員變數可以宣告於 public: 區段:

class Example {
public:
 int value;
};

類別外部可透過物件直接存取:

Example e;
e.value = 10;

(B) protected

正確。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 8 題2 分

複選題:下列何者為 PHP 語言的程式註解符號?

這一題的完整詳解

核心觀念

本題考查 PHP 的程式註解語法。註解是提供程式閱讀者理解程式用途的文字,執行 PHP 程式時不會被當成指令執行。

PHP 常見註解符號如下:

  • 單行註解://
  • 單行註解:#
  • 多行註解:/* ... */

其中,<!-- ... --> 是 HTML 的註解語法,不是 PHP 的標準註解符號。

解題方法

判斷各選項是否為 PHP 註解符號,直接依照 PHP 的註解語法分類:

  1. 能否標示單行註解?
  2. 能否標示多行註解?
  3. 是否屬於其他語言,例如 HTML 的註解語法?

符合 PHP 語法的單行或多行註解符號,即為正確選項。

選項分析

(A) <!-- -->:錯誤

<!-- ... --> 是 HTML 的註解語法,主要用於 HTML 文件中,例如:

<!-- 這是 HTML 註解 -->

它不是 PHP 的註解符號。若在 PHP 程式區段中使用,不能將 PHP 程式碼正確視為 PHP 註解。

(B) //:正確

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 9 題2 分

複選題:在 Python 中,我們可以使用 open(file, mode) 來開啟檔案,其中的 mode 為檔案物件存取模式,下列何者為正確的模式?

這一題的完整詳解

核心觀念

Python 使用 open(file, mode) 開啟檔案時,mode 用來指定檔案的存取方式。常見模式如下:

  • r:讀取(read),檔案必須已存在。
  • w:寫入(write),檔案不存在時會建立;檔案已存在時會清除原內容。
  • a:附加寫入(append),資料會寫在檔案原有內容之後。
  • b:二進位模式(binary),通常必須與其他基本模式合併使用,例如 rb、wb、ab。

本題是複選題,須判斷各選項是否能作為正確的檔案模式。

解題方法

依序檢查每個模式是否為 Python open 支援的基本檔案存取模式:

  1. 判斷是否代表讀取、寫入或附加寫入。
  2. 確認該字串能否單獨作為合法的 mode。
  3. 特別注意 b 是檔案格式模式修飾字元,不能單獨使用。

選項分析

(A) r:正確

r 代表讀取模式,用於讀取已存在的文字檔案:

f = open("data.txt", "r")

若檔案不存在,通常會引發 FileNotFoundError。因此 r 是合法且正確的檔案存取模式。

(B) w:正確

w 代表寫入模式:

f = open("data.txt", "w")

其行為如下:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 10 題2 分

複選題:下列何者為 Python 內建的容器型別?

這一題的完整詳解

核心觀念

本題考查 Python 內建資料型別的分類,特別是「容器型別」與其他內建型別的區別。

容器型別是可用來儲存、組織多個元素的資料結構,常見者包括:

  • list:串列
  • tuple:元組
  • set:集合
  • dict:字典

其中,tuple 與 set 均屬於 Python 內建的容器型別。

解題方法

判斷各選項的資料型別分類:

  1. 若主要用途是儲存多個資料元素,且可作為資料集合使用,屬於容器型別。
  2. 若屬於數值、字串或特定的序列產生工具,則不列入本題所採用的容器型別分類。
  3. 逐一檢查選項即可得到答案。

選項分析

(A) range:錯誤

range 是 Python 內建的範圍型別,用來表示一段整數序列,例如:

range(1, 5)

其內容代表 1,2,3,41, 2, 3, 4,主要用途是產生迭代範圍,常搭配 for 迴圈使用。命題分類上,range 歸為序列型別中的範圍型別,不列為本題所指的容器型別。

(B) set:正確

set 是集合型別,可儲存不重複的元素,且元素沒有固定順序,例如:

{1, 2, 3}
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 11 題2 分

複選題:下列何者為 Python 容器型別 dict 支援的運算子?

這一題的完整詳解

核心觀念

本題考查 Python 容器型別 dict(字典)所支援的運算子。

dict 是由「鍵(key)—值(value)」配對組成的映射型容器。不同運算子具有不同用途:

  • ==:比較兩個字典的內容是否相同。
  • +:字典不支援直接相加。
  • >:字典不支援大小關係比較。
  • *:字典不支援重複運算。

解題方法

逐一判斷各運算子是否能直接套用在字典上:

d1 = {"a": 1}
d2 = {"a": 1}

使用相等比較:

d1 == d2

結果為:

True

因為兩個字典具有相同的鍵與相同的對應值。因此,dict 支援 == 運算子。

至於字典的大小比較、相加與重複,均不符合 Python dict 的基本運算規則。

選項分析

(A) +:錯誤

字典不支援使用 + 進行合併:

{"a": 1} + {"b": 2}

會產生 TypeError。

字典若要合併,應使用適當的方法,例如命題當年的常見寫法:

d1.update(d2)

或建立新的字典後進行合併,而不是使用 +。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 12 題2 分

複選題:以下為 Python 程式片段,請問執行後的結果,下列何者正確?

a=17/5

b=17//5

c=17%5

這一題的完整詳解

核心觀念

本題考查 Python 的三種算術運算子:

  • /:一般除法,結果為浮點數。
  • //:整除,又稱地板除法,結果取商的整數部分。
  • %:取餘數,取得除法後的餘數。

以下以命題所採用的 Python 3 語法規則判斷。

解題方法

先計算 1717 除以 55:

17÷5=3.417 \div 5 = 3.4

也可表示為:

17=5×3+217 = 5 \times 3 + 2

因此:

  1. a=17/5

使用 / 進行一般除法:

a=17/5=3.4a=17/5=3.4
  1. b=17//5

使用 // 進行整除,取地板值:

b=17//5=3b=17//5=3
  1. c=17%5

使用 % 取得餘數:

c=17%5=2c=17\%5=2

所以程式執行後:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 13 題2 分

複選題:在 Python 中,下列何者的結果為 False?

這一題的完整詳解

核心觀念

本題考查 Python 中下列觀念:

  1. 邏輯運算子:and、not
  2. 不等於運算子:!=
  3. 相等比較與資料型別:==
  4. 位元運算子:&
  5. 運算子優先順序
  6. Python 布林值判斷:True 或 False

題目要求找出「結果為 False」的選項,複選題可能有一個以上答案。

解題方法

逐一依照 Python 運算規則計算各選項,最後判斷結果是否為 False。

其中需特別注意:

  • not 會將布林結果反轉。
  • == 會同時比較值與資料型別是否相容。
  • & 是整數的位元 AND 運算子。
  • 位元運算子的優先順序高於比較運算子,因此 2&3==2 會解讀為:
(2&3)==2(2 \mathbin{\&} 3)==2

選項分析

(A) 1<2 and 3>2

先判斷兩個比較式:

1<2⇒True1<2 \Rightarrow True 3>2⇒True3>2 \Rightarrow True

因此:

True and True

結果為:

True

所以 (A) 不符合題意。


(B) not 5!=6

先計算不等於比較:

5≠6⇒True5\ne 6 \Rightarrow True

再套用 not:

not True

結果為:

False

所以 (B) 符合題意。


(C) 23=="23"

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 14 題2 分

複選題:在 Python 中,a="enthusiasm",下列哪些結果為正確?

這一題的完整詳解

核心觀念

本題考查 Python 字串方法與索引位置:

  • count(substring):計算指定子字串出現的次數。
  • find(substring):尋找子字串第一次出現的位置;找不到時回傳 -1。
  • rfind(substring):尋找子字串最後一次出現的位置;找不到時回傳 -1。
  • startswith(prefix):判斷字串是否以指定內容開頭,回傳布林值。
  • Python 的布林常數必須寫成 True 或 False,大小寫有區別;TRUE 不是 Python 的內建布林常數。

題目設定:

a = "enthusiasm"

逐字標示索引如下:

字元enthusiasm
索引0123456789

字串 "s" 出現在索引 55 與索引 88。

解題方法

先找出字串中所有 "s" 的位置,再依各方法的定義判斷:

  1. "s" 共出現 22 次。
  2. 第一次出現於索引 55。
  3. 最後一次出現於索引 88。
  4. "enthusiasm" 的第一個字元是 "e",不是 "s"。
  5. Python 布林值使用 True,不是全大寫的 TRUE。

選項分析

(A) a.count("s") == 2

"s" 出現在索引 55、88,共 22 次,因此:

a.count("s") == 2

結果為 True。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 15 題2 分

複選題:R 語言為統計上常用的高階程式語言,下列何者為其進階資料結構?

這一題的完整詳解

核心觀念

本題考查 R 語言的資料結構分類。R 的資料結構可依資料維度、資料型態是否一致,以及是否能容納不同型態資料加以區分。

常見資料結構如下:

  • list:可容納不同型態、不同長度的元素,屬於遞迴式資料結構。
  • matrix:二維資料結構,所有元素通常必須具有相同資料型態。
  • array:可處理二維以上的多維資料結構,元素通常也須具有相同資料型態。
  • data.frame:表格型資料結構,各欄可具有不同資料型態,但每欄列數必須相同。

在一般 R 語言教材與考試分類中,以上均屬於相對於單純向量而言的進階資料結構。

解題方法

判斷本題各選項是否為 R 的進階資料結構即可。重點不是判斷它們是否屬於完全不同的底層型別,而是依 R 語言常見教材分類,確認它們是否能提供比單純向量更複雜的資料組織方式。

R 的基本資料容器通常是向量;matrix、array、list 與 data.frame 則提供多維、異質資料或表格化的資料管理能力,因此皆應選取。

選項分析

(A) list:正確

list 是 R 中的重要進階資料結構,元素可以是不同型態,甚至可以包含另一個 list、向量、矩陣、函數或資料框。

例如:

x <- list(name = "Amy", score = c(80, 90), passed = TRUE)

上述 list 同時包含字串、數值向量與邏輯值,具備高度彈性,因此屬於進階資料結構。

(B) matrix:正確

matrix 是二維資料結構,由列與欄組成。矩陣中的元素通常必須為相同資料型態,例如全部為數值、字串或邏輯值。

例如:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 16 題2 分

複選題:下列何者為直譯式程式語言?

這一題的完整詳解

核心觀念

本題考「直譯式程式語言(interpreted language)」與「編譯式程式語言(compiled language)」的基本分類。

  • 直譯式語言:程式通常交由直譯器逐段讀取、分析並執行,不必先完整轉換成原生機器碼。
  • 編譯式語言:程式先經由編譯器轉換成目的碼或可執行檔,再由電腦執行。

考試分類以各語言的典型執行方式及命題慣例判斷。實務上,同一語言可因不同實作方式而兼具編譯與直譯特性。

解題方法

逐一判斷各選項的主要執行機制:

  1. 判斷是否通常需要先編譯成可執行檔。
  2. 判斷是否主要透過直譯器或執行環境直接執行。
  3. 依國家考試常見分類,選出直譯式語言。

依此判斷,Pascal 通常歸類為編譯式語言;Perl、Python、PHP 通常歸類為直譯式語言,因此答案為 (B)、(C)、(D)。

選項分析

(A) Pascal:錯誤

Pascal 是典型的編譯式高階程式語言。程式原始碼通常先經由 Pascal 編譯器轉換成目的碼或可執行檔,再交由電腦執行。

因此在本題的傳統分類中,Pascal 不屬於直譯式程式語言。

(B) Perl:正確

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 17 題2 分

複選題:下列何者為標籤式語言?

這一題的完整詳解

核心觀念

「標籤式語言」是利用特定標籤(tag)描述文件結構、資料意義或呈現方式的語言。標籤通常以成對形式出現,例如:

<p>段落內容</p>

常見特徵包括:

  • 使用 < > 括住標籤名稱。
  • 標籤可用來描述資料結構或文件格式。
  • 通常與文件標記、資料交換或網頁內容呈現有關。

本題判斷重點是:選項是否以「標籤」描述文件內容,而非單純判斷其是否能處理文字或網頁。

解題方法

逐一辨認各選項的性質:

  1. 是否使用明確的標籤語法?
  2. 是否屬於標籤式文件描述語言?
  3. 若是程式語言或文件格式,則不選。

符合標籤式語言定義者,即為正確選項。

選項分析

(A) XML:正確

XML(Extensible Markup Language,可延伸標記語言)使用自訂標籤描述資料結構,例如:

<student>
 <name>王小明</name>
 <score>85</score>
</student>

<student>、<name> 與 <score> 都是標籤,用來表達資料的階層與意義,因此 XML 是標籤式語言。

(B) RTF:錯誤

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 18 題2 分

複選題:在 Java 語言中,下列何者能讓執行緒停止執行?

這一題的完整詳解

核心觀念

本題考查 Java 執行緒的生命週期,以及 Thread 與 Object 類別中會影響執行緒執行狀態的方法。

能使執行緒暫停、進入等待狀態,或直接終止執行的方法,包括:

  • sleep:使目前執行緒暫停一段指定時間。
  • stop:強制終止執行緒。
  • wait:使執行緒進入等待狀態,直到被喚醒或逾時。
  • notify:喚醒正在等待的執行緒,本身不會使執行緒停止。

因此,本題屬於複選題,正確選項為 A、B、D。

解題方法

判斷各方法對執行緒的作用:

  1. 是否會使目前執行緒暫停執行?
  2. 是否會使執行緒進入等待狀態?
  3. 是否會直接終止執行緒?
  4. 是否只是喚醒其他執行緒?

只要方法會使執行緒暫停、等待或終止,即符合「能讓執行緒停止執行」的題意。

選項分析

(A) sleep;——正確

sleep 是 Thread 類別的靜態方法,會使目前正在執行的執行緒暫停指定時間。例如:

Thread.sleep(1000);

表示目前執行緒暫停約 10001000 毫秒,也就是 11 秒。

執行緒在這段期間不會繼續執行原本的程式碼,時間到後才會恢復執行。因此,sleep 能讓執行緒暫停執行,選項正確。

補充:

  • sleep 不會釋放執行緒目前持有的鎖。
  • 方法執行期間可能拋出 InterruptedException。
  • 它是「暫停」,不是永久終止執行緒。

(B) stop;——正確

stop 會強制終止執行緒,使執行緒停止執行,因此符合題意。

不過,stop 可能在執行緒尚未完成重要操作時直接中斷,造成:

  • 共享資料處於不一致狀態;
  • 鎖被非預期釋放;
  • 資源未妥善關閉;
  • 程式產生難以追蹤的錯誤。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 19 題2 分

複選題:以下為 C 語言程式,請問執行後的結果,下列何者正確?

#include <iostream>

using namespace std;

int main()

{

  int a=3, b=8;

  if (a>2) int a=5;

  else b=7;

}

這一題的完整詳解

核心觀念

本題考查 C++ 的:

  1. if...else 的條件判斷與執行流程。
  2. 區域變數的「作用域」(scope)。
  3. 變數遮蔽(variable shadowing):內層變數可與外層變數同名,但兩者是不同變數。

雖然題目文字稱為 C 語言,但程式使用 #include <iostream> 與 using namespace std;,實際上是 C++ 程式。

解題方法

程式開始時宣告:

int a = 3, b = 8;

因此外層變數初值為:

a=3,b=8a=3,\qquad b=8

接著判斷:

if (a > 2)

此時使用的是外層的 a,所以:

3>23>2

條件成立,執行 if 後面的敘述:

int a = 5;

這裡宣告的是 if 區塊內的另一個區域變數 a,其作用域只存在於該 if 子敘述中,會遮蔽外層的 a。因此它不會改變外層的 a=3。

由於 if (a > 2) 條件成立,else 部分不會執行:

else b = 7;

所以外層變數維持:

a=3,b=8a=3,\qquad b=8

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 20 題2 分

複選題:關於 Python 的 calendar 模組,下列何者正確?

這一題的完整詳解

核心觀念

本題考查 Python calendar 模組中常用函式的功能與使用方式,重點包括:

  • calendar.firstweekday:取得目前設定的一週起始日。
  • calendar.isleap(year):判斷指定年份是否為閏年。
  • calendar.calendar(year):產生指定年份的月曆文字。
  • calendar.weekday(year, month, day):取得指定日期是星期幾。

Python 的星期編號通常採用:

0=星期一,1=星期二,…,6=星期日0=\text{星期一},\quad 1=\text{星期二},\quad \ldots,\quad 6=\text{星期日}

解題方法

逐一核對各選項中的函式名稱、參數及功能:

  1. 判斷函式是否存在。
  2. 確認函式回傳的意義。
  3. 注意模組名稱與函式名稱是否拼寫正確。
  4. 分辨「一週的第一天」與「第一個工作天」的差異。

選項分析

(A) 錯誤

calendar.firstweekday 傳回的是「一週的第一天」,不是「一週的第一個工作天」。

import calendar

calendar.firstweekday

其預設回傳值為 0,代表星期一;此設定是月曆顯示時一週的起始日。

因此正確說法應為:

calendar.firstweekday 傳回一週的第一天,預設值為 0 表示星期一。

選項將「第一天」誤寫為「第一個工作天」,所以錯誤。


(B) 正確

calendar.isleap(year) 可以判斷指定年份是否為閏年。

import calendar

calendar.isleap(2020) # True
calendar.isleap(2021) # False

閏年的判定規則為:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題