113年專門職業及技術人員高等考試建築師、32類科技師(含第二次食品技師)、大地工程技師考試分階段考試(第二階段考試)暨普通考試不動產經紀人、記帳士考試資訊技師類科歷屆試題,含資料結構與資料庫及資料探勘、計算機系統、網路原理與應用等 6 科。
共 6 份考卷|資料來源:依政府資料開放授權條款(OGDL)第 1 版利用,資料集:考選部歷屆試題(data.gov.tw dataset 170565),113 年。
本頁文字由 PDF 機器抽取,可能有辨識誤差,僅供搜尋參考,請以官方原始檔案為準。
免費登記製作需求|🚀 前往「113年 專技高考 資訊技師」下載頁|所有公開題庫
下載:題目
官方不公布申論答案
代號:
01310
頁次:
2
-
1
113 年專門職業及技術人員高等考試建築師、 32 類科技師(含第二次食品技師)、大地工程 技師考試分階段考試(第二階段考試) 暨普通考試不動產經紀人、記帳士考試試題
等
別:高等考試
類
科:資訊技師
科
目:資料結構與資料庫及資料探勘
考試時間:
2 小時
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
一、給定一數列: 67 、 25 、 3 、 79 、 88 、 6 ,欲將此數列由小排到大。請詳細 說明並寫出利用選擇排序法( selection sort )排序的過程。 ( 20 分)
二、請詳細說明何謂 2-3-4 樹?若給定一數列: 10 、 20 、 30 、 40 、 50 、 60 、 70 、 80 、 90 、 100 ,現欲將此數列建立成一棵 2-3-4 樹,請畫出最後的 2-3-4 樹即可。 ( 20 分)
三、在資料探勘過程中,什麼是「決策樹」 ( Decision Tree )?請詳細解釋並 舉例說明。 ( 10 分)
四、在資料探勘過程中,什麼是「關聯規則」 ( Association Rule )?請詳細解 釋並舉例說明。 ( 10 分)
五、下面為一個名為 WORKS 的關聯綱要( relation schema ) ,為員工投入專 案的紀錄,一個員工可投入多個專案,一個專案有多個員工投入,主鍵 ( primary key )為員工代碼和專案代碼。請寫出下列查詢的 SQL 敘述:
列出投入的員工人數超過 50 人的專案代碼與投入該專案的員工人數。 ( 10 分)
列出投入專案代碼為 'PJ2255' 中最高時數的員工代碼,並去掉重複值。 ( 10 分)
座號:
六、請將下列的 ERD ( Entity Relationship Diagram )轉換成關聯資料表的關 聯綱要( relation schema ) 。有三個實體分別為辦公室、教授和課程。其 中屬性有底線者為該實體的主屬性( key attribute ) 。每位教授均有一間辦 公室,每間辦公室只屬於一位教授,每位教授可以講授很多課程,每個 課程可由多位教授合授。最後完成的關聯綱要請務必標示出每個關聯綱 要的名稱、主鍵( primary key )和外來鍵( foreign key ) ,若需新的關聯 綱要或屬性請自行命名並請詳細說明。 ( 20 分)
| E_ID (員工代碼) | P_ID (專案代碼) | HOURS (時數) |
|---|

下載:題目
官方不公布申論答案
代號:
01320
頁次:
2 - 1
113 年專門職業及技術人員高等考試建築師、 32 類科技師(含第二次食品技師)、大地工程 技師考試分階段考試(第二階段考試) 暨普通考試不動產經紀人、記帳士考試試題
等
別:高等考試
類
科:資訊技師
科
目:計算機系統
考試時間:
2 小時
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
一、假如一部計算機執行兩個 4-bit Word 的加法: ( 1)+(+1) (使用 2 的補數 , Two's Complement ) , 請問下列四個旗標的結果各自為何? (每小題 5 分, 共 20 分)
Carry Flag
Overflow Flag
Sign Flag
Even Parity Flag
二、一個計算機系統可能只由一個作業系統的 Kernel 所構成,也可能是多個 Kernels 所構成的多個虛擬主機( Virtual Machines, VM ) ,在多個 VM 中, 每個 Kernel 必須創建與維護自己的 Processes 。 (每小題 10 分,共 20 分) 說明主機虛擬化( Virtualization )的目的為何?
說明虛擬主機經理( VMManager )的主要功能為何?
三、虛擬碼( Pseudo Codes )或是高階語言的目的是讓機器可以聽得懂人類的 語言,因此如何設計一個高階語言的編譯器( Compiler )變得非常重要, 請將下列針對計算機系統的緩衝器( Buffer )之佇列功能( Queuing )的四 個步驟,設計一個編譯器將此語言轉換為 C 語言。 (每小題 5 分,共 20 分) 當緩衝器有資料進入,累計接收資料的數量。
如果緩衝器還有空間,繼續接收資料。
如果緩衝器已無空間,覆蓋緩衝器的最後一筆資料。
累計遺失資料的數量。
座號:
四、一個 10 GHz 且 64 bits 的計算機系統,它的 64 bits 指令是由兩部分所組 成:第一個與第二個 byte 為 OPCode ,其餘部分是 Immediate Operand 或 是 Operand Address 。在第一個 Clock Cycle 的時間內,主記憶體的位置 可以經由 Address Bus 指定,在第二個 Clock Cycle 的時間內, Data 可以 經由 Data Bus 做連續記憶體空間位置的存取,如果 CPU 與主記憶體之 間的 Address Bus 是 48 bits , Data Bus 是 64 bits ,每個記憶體空間可容納 8 bytes 。 (每小題 10 分,共 20 分)
求出可以被直接住址存取( Directly Addressable )的實體記憶體空間 ( Physical Memory Capacity )的大小,請使用 T-bytes 作單位。
假如作業系統的一個 PCB ( Process Control Block )是 256 bytes ,計算 作業系統在兩個 Processes 之間做 Context-Switching 所花的時間。
五、請就一個具有多重執行緒( Multi-Threading )的計算機系統,回答下列問 題。 (每小題 10 分,共 20 分)
說明 Single-Threaded Process 與 Multi-Threaded Process 作業系統在使 用主記憶體的 Stacks 時會有何設計上的不同點?
在一個 Multi-Cores 的計算機系統中,作業系統是如何分配與執行多個 Multi-Threaded Processes ?
下載:題目
官方不公布申論答案
01330
2
-
1
113 年專門職業及技術人員高等考試建築師、 32 類科技師(含第二次食品技師)、大地工程 技師考試分階段考試(第二階段考試) 暨普通考試不動產經紀人、記帳士考試試題
等
別:高等考試
類
科:資訊技師
科
目:網路原理與應用
考試時間:
2 小時
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
一、請試述下列名詞之意涵: (每小題 5 分,共 20 分)
NTN ( Non-Terrestrial Network )
CIDR ( Classless Inter-Domain Routing )
IP Spoofing
L4S ( Low Latency, Low Loss, Scalable throughput
)
Wireless Local Area )制定規格過程中引進下列技術優化傳輸效能,請詳細
二、被稱為 Wi-Fi 7 的 IEEE 802.11be 無線區域網路( Network, WLAN 說明其運作原理。 (每小題 5 分,共 20 分)
Multi-link Operation ( MLO
)
Preamble Puncturing Operation (又稱為 Punctured Transmission )
Multi-RU ( MRU
)
Multi-AP Coordination
三、 IEEE 802.3 乙太網路之半雙工模式採用 CSMA/CD ( Carrier Sense Multiple Access with Collision Detection )作為媒體存取控制( Media Access Control , MAC )通訊協定。 IEEE 802.11 無線區域網路( Wireless Local Area Network, WLAN )採用 CSMA/CA ( Carrier Sense Multiple Access with Collision Avoidance )作為 MAC 通訊協定。請回答下列問 題: (每小題 5 分,共 20 分)
從媒體存取機制與特性觀察,說明 CSMA/CD 與 CSMA/CA 五種相 同處。
從媒體存取機制與特性觀察,說明 CSMA/CD 與 CSMA/CA 五種差 異處。
在 CSMA/CD 中,時槽是根據什麼推算出來?主要用途為何?
若不更動 IEEE 802.11 WLAN 實體層,其 MAC 層改用 CSMA/CD 協 定,說明五種可能的問題與挑戰。
座號:
四、網路內容服務供應商希望可以更快、更可靠地將網路內容傳遞給用戶。 內容傳遞網路( Content Distribution Network , CDN )可達成高效能、可 延伸性及低成本的網路內容傳遞給用戶。請回答下列問題: (每小題 5 分, 共 20 分)
說明用戶透過何種通訊協定從 CDN 網路取得內容與其運作方式。
若 CDN 伺服器建置採取 Enter Deep 策略,說明其優點。
若 CDN 伺服器建置採取 Bring Home 策略,說明其優點。
為了降低運營成本與通訊傳送延遲,將 P2P ( peer-to-peer )技術融入 CDN 部署和管理的技術稱為 P2P-CDN ,說明其運作原理。
五、當網際網路路由器發生壅塞造成封包遺失,可能導致網路應用服務品質 下降。請回答下列問題: (每小題 10 分,共 20 分)
說明端到端( end-to-end )壅塞控制演算法的特點,並舉出兩種常見的 演算法。
說明網路輔助( network-assisted )壅塞控制演算法的特點,並舉出兩種 常見的演算法。
下載:題目
官方不公布申論答案
代號:
01340
頁次:
3
-
1
113 年專門職業及技術人員高等考試建築師、 32 類科技師(含第二次食品技師)、大地工程 技師考試分階段考試(第二階段考試) 暨普通考試不動產經紀人、記帳士考試試題
等
別:高等考試
類
科:資訊技師
科
目:計算機數學
考試時間:
2 小時
※注意:
可以使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目得以本國文字或英文作答。
一、某運動隊伍在七天的訓練營中安排了九個專項訓練課程。每位教練每天 最多能指導兩堂課程,現需要安排每天指導那些課程。假設每堂課程可 以安排在七天中的任一天。請問共有幾種安排方式?( 12 分)
二、試求下列遞迴關係( recurrence relations )的完整解: ( 20 分)
⑴ a(n)- 5∙a(n-1)= 4∙(-2) n , 其中 n≥1, 且 a(0)=3
⑵ b(n+2)-5∙b(n+1)+ 6∙b(n)= n+6, 其中 n≥0, 且 b(0)=1, b(1)=9
三、一個俱樂部的成員互相進行對戰,將每一場比賽視為一種對戰關係。例如, ( A,B )表示成員 A 與 B 之間進行過一次對戰。假設這個俱樂部中共有 36 場對戰,且每位成員參加的對戰次數相同。 ⑴ 列出俱樂部成員的所有可能 人數。 ⑵ 若每位成員至少參加 3 場對戰,則最少需要多少人?( 12 分)
四、設某摩爾型有限狀態機( Moore finite state machine )以 {0,1} 為輸入與輸 出符號,並具有下列的對應序列:
試求能產生此種對應序列的摩爾型有限狀態機。 ( 20 分)
座號:
五、設標準常態分布之機率密度函數( probability density function )為 P ( Z ) 。 某停車場有 150 個停車位,假設每位預訂車位的駕駛按時到達的機率為 p=0.8 ,且每位駕駛的到達機率彼此獨立。若停車場額外預訂了 10 個車 位,請計算出可能有駕駛因停車位不足而無法停車的機率,並以 P ( Z ) 函數表示之。 ( 12 分)
六、某家連鎖商店分別在兩個地區 A 和 B 推出了新的會員優惠制度,並 希望了解該制度在兩地區的接受度是否相同。分別記錄在地區 A 和地 區 B 參加優惠活動的比例為 PA 和 PB 。進行檢定( test )以下的虛無假 設( null hypothesis ) H0 : PA=PB 與替代假設( alternative hypothesis ) H1 : PA ≠P B 。
⑴ 求顯著水準( significance level ) α= 0.05 的關鍵區間( critical region ) 。
⑵ 若在地區 A 和地區 B 的樣本數分別為 NA=800 與 NB=700 ,其中參加 活動的人數分別為 SA=320 和 SB=250 ,檢定上述假設。
⑶ 若顯著水準改為 α=0.01 ,檢定結果會有何變化?
在計算時,請運用下列 Z 檢定時替代假設的拒絕區間( rejection region ) 表格。 ( 12 分)
七、某公司在十個不同區域設置新的顧客服務中心,並進行宣傳活動以提高 顧客服務使用率。為了解此宣傳活動是否有助於提高服務使用量,記錄 宣傳活動前後各十天的顧客使用量為:
⑴ 由上可計算樣本變異量差 Sxx=485, Syy=540, Sxy=505 ,試計算 X, Y 的 相關係數。 ⑵ 求線性回歸方程式 Y = a + bX 。 ⑶ 以 ANOVA 表說明此模 型在顯著水準( significance level ) α=0.05 的說明能力。在計算時,請運 用下列 F 檢定時的關鍵值( critical value )表格。 ( 12 分)
| 輸入序列 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|
| 輸出序列 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
| Z 檢定時替代假設的拒絕區間 | Z 檢定時替代假設的拒絕區間 | Z 檢定時替代假設的拒絕區間 | Z 檢定時替代假設的拒絕區間 |
|---|---|---|---|
| 顯著水準 | 單尾 | 單尾 | 雙尾 |
| 顯著水準 | 單尾低值 | 單尾高值 | 雙尾 |
| α=0.05 | z < -1.645 | z > 1.645 | z < -1.96 或 z > 1.96 |
| α=0.01 | z < -2.33 | z > 2.33 | z < -2.575 或 z > 2.575 |
| 宣傳活動前( X ) | 35 | 40 | 28 | 50 | 45 | 32 | 33 | 36 | 30 | 39 |
|---|---|---|---|---|---|---|---|---|---|---|
| 宣傳活動後( Y ) | 38 | 45 | 32 | 55 | 50 | 35 | 37 | 40 | 34 | 42 |
| F 檢定時的關鍵值 | F 檢定時的關鍵值 | F 檢定時的關鍵值 | F 檢定時的關鍵值 | F 檢定時的關鍵值 | F 檢定時的關鍵值 | F 檢定時的關鍵值 | F 檢定時的關鍵值 | F 檢定時的關鍵值 |
|---|---|---|---|---|---|---|---|---|
| 分子的自由度 | 分子的自由度 | 分子的自由度 | 分子的自由度 | 分子的自由度 | 分子的自由度 | 分子的自由度 | ||
| 1 | 2 | 3 | 4 | 5 | 6 | 8 | ||
| 1 | 161 | 200 | 216 | 225 | 230 | 234 | 239 | |
| 分 | 2 | 18.5 | 19.0 | 19.2 | 19.3 | 19.3 | 19.4 | 19.4 |
| 母 | 3 | 10.1 | 9.55 | 9.28 | 9.12 | 9.10 | 8.94 | 8.85 |
| 的 | 4 | 7.71 | 6.94 | 6.59 | 6.39 | 6.26 | 6.16 | 6.04 |
| 自 | 5 | 6.61 | 5.79 | 5.41 | 5.19 | 5.05 | 4.95 | 4.82 |
| 由 | 6 | 5.99 | 5.14 | 4.76 | 4.53 | 4.39 | 4.28 | 4.15 |
| 度 | 7 | 5.59 | 4.74 | 4.35 | 4.12 | 3.97 | 3.87 | 3.73 |
| 8 | 5.32 | 4.46 | 4.07 | 3.84 | 3.69 | 3.58 | 3.44 |
下載:題目
官方不公布申論答案
代號:
01350
頁次:
1 - 1
113 年專門職業及技術人員高等考試建築師、 32 類科技師(含第二次食品技師)、大地工程 技師考試分階段考試(第二階段考試) 暨普通考試不動產經紀人、記帳士考試試題
等
別:高等考試
類
科:資訊技師
科
目:系統分析與資訊安全
考試時間:
2 小時
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
軟體系統的穩定性對於使用者非常重要,請問可從那些穩定性度量來預 測軟體的穩定性?並詳述之。 ( 25 分)
DevOps 是一種重視軟體開發( Dev )人員和 IT 維運技術( Ops )人員之 間溝通合作的文化、運動或慣例。為確保軟體供應鏈( software supply chain, SSC )的安全,促成 DevSecOps ,將軟體開發安全導入持續整合 ( continuous integration ) 與持續部署 ( continuous deployment ) 管道 ( CI/CD pipeline ) ,以避免軟體供應鏈攻擊( SSC attacks ) 。
何謂 DevSecOps ?( 5 分)
從 CI/CD 到持續安全,要考慮那些軟體供應鏈風險因子?( 20 分)
新版的電子簽章法於 113 年 5 月發布施行,該法案已將數位簽章的法律 地位作出適當的規範。如今使用 RSA 公開加密系統來實作訊息為 7 之 數位簽章 S ,其中所選用的兩質數分別為 17 及 19 ,且其公開金鑰為 173 。 請問所使用的私鑰及數位簽章 S 的值為何?( 25 分)
重新識別係將已去識別化資料與個人可識別資訊( personal identifiable information, PII )的當事人重新建立連結之過程。請問依據 CNS29191 , 組織有重新識別需求時,應符合那些重新識別 PII 之要求?( 25 分)
座號:
下載:題目
官方不公布申論答案
113 年專門職業及技術人員高等考試建築師、 32 類科技師(含第二次食品技師)、大地工程 技師考試分階段考試(第二階段考試) 暨普通考試不動產經紀人、記帳士考試試題
等
別:高等考試
類
科:資訊技師
科
目:程式設計
考試時間:
2 小時
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
一、一位程式設計師為解決某一問題找到了一個有效但仍然相當複雜的 演算法,因為程式執行完成所花費的時間非常重要,他根據過去所學 得知「在相同的執行環境下,針對同一演算法以 C++ 撰寫的程式其執 行速度比以 Java 撰寫的程式來得快」 ,決定以 C++ 撰寫程式來實現所 找到的演算法。請闡述為何會有上述引號內之說法。 ( 7 分)
二、下面所給 Java 程式有一錯誤以致無法成功釋譯 (interpreting) ,此錯誤落 在某一行程式碼中,為讓此程式可以順利釋譯執行產生輸出結果,請指 出那一行程式碼敘述有誤,更正其錯誤,並詳述更正的理由。 ( 7 分)
import java.util.*; public class P1 { int anInt = 0; static void aMethod(int arry[]) { for(int i=0; i<arry.length-1; i++) for(int j=arry.length-1; j>i; j--) if(arry[j] < arry[j-1]){ int temp = arry[j]; arry[j] = arry[j-1]; arry[j-1] =temp; } anInt++; } static void bMethod(int arry[]) { for(int i=0; i<arry.length-1; i++) for(int j=arry.length-1; j>i; j--) if(arry[j] > arry[j-1]){ int temp = arry[j]; arry[j] = arry[j-1]; arry[j-1] =temp; } anInt++; }
座號:
代號:
01360
頁次:
9 - 1
public static void main(String[] args) { Scanner inputObj = new Scanner(System.in); System.out.println("Enter the array size: "); int size = inputObj.nextInt(); int[] intArry = new int[size]; System.out.println("Enter the elements of the array :"); for(int i=0; i<size; i++) intArry[i] = inputObj.nextInt(); P1 callerObj= new P1(); callerObj.aMethod(intArry); System.out.println( anInt + ". Array content: \n " + Arrays.toString(intArry)); callerObj.bMethod(intArry); System.out.println(anInt + ". Array content: \n " + Arrays.toString(intArry)); } } 三、針對下面所給的 C++ 程式,若輸入是 11 5 -3 42 -20 -43 99 43 -4 11 -22 0 4 7 9 -1 皆不相同的數,輸出為何?並說明輸出的資料所代表的意 義。 ( 8 分) #include <iostream> using namespace std; int main() { int N; int nNumbers[1000]; int numLarger[1000] = {0}; cin >> N; for (int i=0; i<N; i++) cin >> nNumbers[i]; for (int j=0; j<N; j++){ for (int k=0; k<N; k++) if(nNumbers[k] > nNumbers[j]) numLarger[j]++; } int m; cin >> m; while (m > 0){ for(int i=0; i<N; i++ ) if( m + numLarger[i] == N){ cout << nNumbers[i] << endl; break; } cin >> m; } return 0; }
Class Person { public: void setFirstName(string fName); void setLastName(string lName); void setAge(int age); private: string firstName; string lastName; int age; }; 使用方式 (A): Person* aPerson = new Person(); aPerson->lastName = "ChangYang"; aPerson->firstName = "WenShiang"; 使用方式 (B): Person aPerson; aPerson.lastName = "ChangYang"; aPerson.firstName = "WenShiang";
import java.io.*; import java.util.*; import java.util.concurrent.atomic.AtomicReference; class rCalculator extends Thread { private List<String> inputLines; private int numRs; private int thdNumber; private char firstOrLastChar; public rCalculator(List<String> inputLines, int thdNumber) { this.inputLines = inputLines; this.thdNumber = thdNumber; this.numRs = 0; this.lastChar = 0; } public int getNumRs() { return numRs; }
public char getFirstOrLastChar(){ return firstOrLastChar; } @Override public void run() { String wholeStr=""; for (String ithStr: inputLines) wholeStr = wholeStr + ithStr; char prevChar= wholeStr.charAt(0); numRs++; for(int j=1;j<wholeStr.length(); j++){ if(wholeStr.charAt(j) != prevChar){ numRs++; prevChar = wholeStr.charAt(j); } } if(thdNumber==1) firstOrLastChar = wholeStr.charAt(wholeStr.length()-1); else firstOrLastChar = wholeStr.charAt(0); System.out.println("Number of Rs = " + numRs + " ---> Thread " + thdNumber); } } public class rsOfString{ public static void main(String[] args) { List<String> inputData = new ArrayList<>(); int lineCount = 0; try (BufferedReader br = new BufferedReader(new FileReader("rsData.txt"))) { String line; while ((line = br.readLine()) != null) { inputData.add(line); lineCount++; } } catch (IOException e) { e.printStackTrace(); return; } List<String> inputForThread0 = inputData.subList(0, lineCount/2); List<String> inputForThread1 = inputData.subList(lineCount/2, lineCount); rCalculator thread0 = new rCalculator(inputForThread0, 0); rCalculator thread1 = new rCalculator(inputForThread1, 1); thread0.start(); thread1.start(); try { thread0.join(); thread1.join(); } catch (InterruptedException e) { e.printStackTrace(); } int totalNumRs = thread0.getNumRs() + thread1.getNumRs(); if(thread0.getFirstOrLastChar()==thread1.getFirstOrLastChar()) totalNumRs--;
}
}
01000101010000000011111111111 11000101000100000000000001001 11000100000000000000111111111111 1000000111111111111111111111111110
為什麼 operator<< 運算子多載 ( operator overloading ) 不宣稱為 Array class 的一個成員函數( member function )?請詳述之。 ( 5 分)
為什麼 copy constructor 如 Array ( const Array & )的參數 (parameter) 必須是 reference type? 請詳述之。 ( 5 分)
請撰寫一段 C++ 程式來實現成員函數 Array &operator-( const Array & ) ,此函數將兩個整數陣列 F 與 G 合併成一陣列 R 。假設陣列 G 是這函數的參數( parameter ) ,合併方式如下: ( 10 分)
F 中的整數按原順序一一複製到 R 中。
接著 G 中的整數按原順序一一複製到 R 中若此一整數不同時在 G 與 F 中。
陣列 R 的大小(即 entry 的數量)需與所複製的整數數量一樣。
若所撰寫之程式碼中之陣列名稱不是用 F 、 G 、 R ,請於答案中註明以何 變數名稱分別來稱呼 F 、 G 、 R 陣列,未加以註明者,本子題不予計分。 此外,請就下面要點標示出所對應的程式碼,未加以標示者,本子題 不予計分:
決定陣列 R 的大小之程式碼。
將陣列 F 的內容複製至陣列 R 的程式碼。
將陣列 G 的內容複製至陣列 R 的程式碼。
#include <iostream> using namespace std; class Array { friend ostream &operator<<( ostream &, const Array & ); // output an array friend istream &operator>>( istream &, Array & ); //input an array public: Array( int = 10 ); // default constructor Array( const Array & ); // copy constructor ~Array(); // destructor int getSize() const; // return array size const Array &operator=( const Array & ); // assignment operator bool operator==( const Array & ) const; // equality operator bool operator!=( const Array &right ) const; // inequality operator int &operator[]( int ); // subscript operator int operator[]( int ) const; // subscript operator Array &operator+(const Array &); // merge two arrays const Array &operator>>(int i); const Array &operator-(); Array &operator-(const Array &); private: int size; // pointer-based array size int *ptr; // pointer to first element of pointer-based array };
七、一位程式設計師設計了一個 C++ 類別 Pt 與類別 Shape ,並使用它們 來開發一些幾何形狀的類別,如三角形、平行四邊形、圓形、長方形、 橢圓形等類別。程式設計師利用 Pt 類別來建立用以描述幾何形狀的 點,並利用繼承 (inherit)Shape 類別將這些幾何形狀的類別建構在 Shape 類別上,若主程式碼與執行主程式碼所產出結果如下所示,請 回答下列問題: (每小題 5 分,共 10 分)
為何用這樣的語法 'virtual double area() const = 0;' 來敘述計算一個 幾何形狀面積的成員函數樣板( function prototype )?請詳述之。 請說明輸出結果的第四行 'Point(0, 0) is created' 是如何產生的。
class Pt{ friend class Shape; friend class Triangle; public: Pt(double =0, double =0); double getX() const {return x;}; double getY() const {return y;}; private: double x; double y; }; Pt::Pt(double c1, double c2) { x = c1; y = c2;
cout << "Point(" <<x<<", "<<y<<") created." << endl; } class Shape { public: Shape( const int &ctColor, const int &fdColor) : contourColor(ctColor), filledColor(fdColor){}; virtual double area() const = 0; // 計算一個形狀 (Shape) 的面積 virtual double perimeter() const = 0 ; // 計算一個形狀的周長 virtual bool outside(const Pt &) const = 0; // 決定所給的點是否在一個形狀外部 virtual void print() const = 0; // 把構成一個形狀的資訊列印出來 virtual void draw() const = 0; // 把一個形狀畫出來 int getContourColor(){return contourColor;} // 取出一個形狀的輪廓顏色 int getFilledColor(){return filledColor;} // 取出一個形狀內部填滿的顏色 private: int contourColor = -1; // 一個形狀的輪廓顏色 int filledColor = -1; // 一個形狀內部填滿的顏色 }; int main() { Pt p1(0, 0); Pt p2(2, 0); Pt p3(1, 1); Triangle aTrgle(p1, p2, p3, 20, 10); aTrgle.area(); aTrgle.outside(p1); aTrgle.perimeter(); aTrgle.print(); aTrgle.draw(); cout << "Contour color: " << aTrgle.getContourColor() << endl; cout << "Filled color: " << aTrgle.getFilledColor() << endl; return 0; } 輸出結果 : Point(0, 0) is created. Point(2, 0) is created. Point(1, 1) is created. Point(0, 0) is created. Point(0, 0) is created. Point(0, 0) is created. Atriangle is created! 20 10 Triangle area is calculated: Point outside a triangle is decided: Triangle perimeter is calculated: Points of a triangle are printed: Atriangle is drawn Contour color: 20 Filled color: 10
八、請使用 HTML 與 JavaScript ,將本題所提供之程式碼所缺部分(方框 1, 2, 3 )撰寫完整,設計出可達成下列功能的網頁: (方框 1 占 4 分、 方框 2 占 8 分、方框 3 占 8 分,共 20 分)
產出如下圖 (A)(B)(C) 之表單( Form ) ,表單內主要包含兩個輸入框、 一個按鈕、一個 result 區塊及一個 Canvas 元素。輸入框分別為「長 度」和「寬度」 ,讓用戶在「長度」和「寬度」的輸入框中可分別輸 入長方形的長和寬,單位為像素, 「長度」和「寬度」的數值皆大於 0 且小於 500 。
按下「計算面積」按鈕後, JavaScript 函式 calculateArea() 會讀取輸 入的數值,檢查其有效性,並計算長方形的面積。
計算結果顯示在 result 區塊,並使用 Canvas 元素在網頁上繪製出 一個長方形。 Canvas 中的長方形會根據輸入的長寬居中顯示,且設 定為藍色填充樣式。
<!DOCTYPE html> <html> <head> <title> 長方形面積計算 </title> </head> <body> <h1> 長方形面積計算 </h1> <label for="length"> 長度 :</label> <input type="number" id="length" placeholder=" 輸入長度 <br> <label for="width"> 寬度 :</label> <input type="number" id="width" placeholder=" 輸入寬度 ">

