110 身心障礙特考四等 資訊處理 程式設計概要 考古題詳解

110 年・身心障礙特考・四等・資訊處理
試題代碼 程式設計概要

第 一 題25 分

如下 Python 程式,執行結果為何?

def rNum2iNum(originalNum): baseNum = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} resultNum = 0 originalNum = originalNum.upper() try: for i in range(len(originalNum)): if i > 0 and baseNum[originalNum[i]] > baseNum[originalNum[i - 1]]: resultNum += (baseNum[originalNum[i]] - 2 * baseNum[originalNum[i - 1]]) else: resultNum += baseNum[originalNum[i]] return resultNum except: return "Not A Legal Number!!"

if name == "main": #-- Call rNum2iNum s1 = "MMMCMLXXVI" s2 = "mCdLxIv" s3 = "CCCZIII" s4 = "IVXLCDM"

print("{0:10} --> {1}".format(s1, rNum2iNum(s1)))
print("{0:10} --> {1}".format(s2, rNum2iNum(s2)))
print("{0:10} --> {1}".format(s3, rNum2iNum(s3)))
print("{0:10} --> {1}".format(s4, rNum2iNum(s4)))

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

這一題的完整詳解

核心觀念

本題考 Python 字串走訪、字典查表、大小寫轉換、例外處理,以及程式實際執行邏輯。字典 baseNum 將羅馬數字字元對應到數值;upper 會把輸入字串轉成大寫,因此小寫羅馬數字也能查表。

程式不是完整驗證羅馬數字是否合法的轉換器。它只在某字元的值大於前一字元時,套用減法規則;遇到不在字典中的字元,則由 except 回傳錯誤訊息。

解題方法

逐字讀取字串,依序累加到 resultNum:

  • 若目前字元值大於前一字元值,加入「目前值減去前一值的兩倍」。
  • 其他情況加入目前字元值。

減去前一值的兩倍,是因為前一個字元已在前一輪加進總和,現在要將它由加法改為減法。若前一值為 aa、目前值為 bb,原本已加了 aa,本輪再加 b−2ab-2a,合計即為 b−ab-a。

逐筆計算

  1. s1 = "MMMCMLXXVI"

字串轉大寫後不變:

1000+1000+1000+(100−2×1000)+1000+50+10+10+5+1=19761000+1000+1000+(100-2\times1000)+1000+50+10+10+5+1 =1976
  1. s2 = "mCdLxIv"

轉成大寫為 MCDLXIV:

1000+(100−2×1000)+500+(50−2×100)+10+(5−2×10)+5?1000+(100-2\times1000)+500+(50-2\times100)+10+(5-2\times10)+5?

依程式逐字計算,IV 的處理是先加 11,再遇到 55 時加 5−2×15-2\times1;而 LX 則先加 5050,再遇到 1010 時照常加 1010。完整累計為:

1000−1900+500+50+10−8+5?1000-1900+500+50+10-8+5?
🔒

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

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

免費註冊

第 二 題25 分

請使用 C、C++、C#、Java 或 Python 程式語言,迴圈及遞迴方式撰寫相關程式模組,可以求解如下的數列資料值。

Seq(n)=−1+12−3+34−5+⋯Seq(n)=-1+\frac{1}{2}-3+\frac{3}{4}-5+\cdots Seq(n)={0if n<1Seq(n−1)+n−1nif n is evenSeq(n−1)−nif n is oddSeq(n)= \begin{cases} 0 & \text{if } n<1\\ Seq(n-1)+\frac{n-1}{n} & \text{if } n\text{ is even}\\ Seq(n-1)-n & \text{if } n\text{ is odd} \end{cases}

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

這一題的完整詳解

核心觀念

本題考查數列的遞迴定義,以及使用迴圈與遞迴兩種方式撰寫程式模組。依題目定義:

  • 若 n<1n<1,則 Seq(n)=0Seq(n)=0,這是遞迴的終止條件。
  • 若 nn 為偶數,加入 n−1n\frac{n-1}{n}。
  • 若 nn 為奇數,扣除 nn。

因此數列前幾項為:

Seq(1)=−1,Seq(2)=−1+12,Seq(3)=−1+12−3,Seq(4)=−1+12−3+34Seq(1)=-1,\quad Seq(2)=-1+\frac{1}{2},\quad Seq(3)=-1+\frac{1}{2}-3,\quad Seq(4)=-1+\frac{1}{2}-3+\frac{3}{4}

解題方法

迴圈法從 n=1n=1 開始逐項累加至指定的 nn。每一步依目前項數的奇偶性,決定加入負整數或正分數。若 n<1n<1,依定義直接回傳 00。

遞迴法直接依題目公式呼叫 Seq(n−1)Seq(n-1),再加上目前這一項的值。當 n<1n<1 時回傳 00,使遞迴停止。

以下使用 Python 撰寫兩個模組:

🔒

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

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

免費註冊

第 三 題25 分

請使用標記式語言 HTML,撰寫相關程式,可以顯示如下以表格形式呈現表單的網頁,假設:

  1. 網頁的標題為「Table + Form」。
  2. 表單表格及較大字型的「報名表」,皆置中於網頁。
  3. 表單透過 URL 來傳送資料。
  4. 表單要傳送至的網址為 http://iii.jjj.com/webPage.php。
  5. 隊名資料的長度需限定為 20,變數名為「groupName」。
  6. 參與人數使用大小為 3 的下拉選單,作 2、3、4 人的選取,預設在 3 人的選項上,變數名為「numberMember」。
  7. 單選項按鈕自行定義變數名稱,預設在「否」及「無」上。
  8. 表單送出及表單還原到預設值,兩個按鈕分別使用 send.jpg、default.jpg 兩個圖片來取代文字按鈕,按鈕圖形寬為 50 pixels,高為 30 pixels。

🖼️【此處有附圖,請對照原卷】

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

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

這一題的完整詳解

核心觀念

本題考查 HTML 表單與表格的搭配,重點包括:

  • <form> 的 action 指定接收資料的網址,method="get" 代表透過 URL 傳送資料。
  • <input>、<select>、<option> 分別用來建立文字欄位、下拉選單與單選按鈕。
  • 同一組單選按鈕使用相同的 name,以不同的 value 表示選項;checked 指定預設選項。
  • <button> 可放入 <img>,以圖片呈現送出與還原按鈕。

解題方法

依照圖中表單內容安排表格列,欄位依序為隊名、參與人數、跨校組隊(是/否)及參賽經驗(有/無)。兩組單選按鈕分別使用不同的變數名稱,並將「否」與「無」設為預設值。

🔒

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

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

免費註冊

第 四 題25 分

如下 Python method,分別使用 PQ1(−171)PQ1(-171)、PQ1(271)PQ1(271)、PQ1(−371)PQ1(-371)、PQ1(471)PQ1(471) 進行呼叫,請問執行的結果為何?

def PQ1(num): resultNum = 0 original = num

num = abs(num)
while num > 0:
    rr = num % 10
    num = num // 10
    resultNum = resultNum + (rr * rr * rr)

if abs(original) == resultNum:
    print("{} Hit {} !!".format(original, original))
else:
    print("{} Not Hit {} !!".format(original, resultNum))

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

這一題的完整詳解

核心觀念

本題考查 Python 的整數運算、while 迴圈、取餘數與整數除法,以及函式呼叫時引數的處理。

函式先以 abs(num) 取輸入的絕對值,再逐位取出十進位數字,計算每一位數字的三次方總和。迴圈中的:

  • num % 10 取得目前個位數。
  • num // 10 移除目前個位數。
  • resultNum 累加每位數字的三次方。

最後比較原始輸入的絕對值與各位數字三次方總和是否相等;相等時輸出 Hit,否則輸出 Not Hit。

解題方法

逐一追蹤四次呼叫。負數先取絕對值,因此計算各位數字時不受正負號影響;但輸出仍使用 original,保留原本的正負號。

  1. PQ1(-171)

各位數字為 1、7、11、7、1,三次方總和為:

13+73+13=1+343+1=3451^3+7^3+1^3=1+343+1=345

因為 ∣−171∣=171≠345|-171|=171\ne345,輸出:

-171 Not Hit 345 !!

  1. PQ1(271)

各位數字為 2、7、12、7、1,三次方總和為:

23+73+13=8+343+1=3522^3+7^3+1^3=8+343+1=352

🔒

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

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

免費註冊

其他考古題