Professional Documents
Culture Documents
香 港 電 腦 教 育 學 會
資 訊 及 通 訊 科 技 科 模 擬 考 試 2022
考生編號
試 卷 二 (D)
軟件開發
考試時間︰上午十一時十五分至下午十二時四十五分
(一小時三十分鐘)
本試卷必須用中文作答 由閱卷員填寫
試題編號 積分
考生須知
(一) 宣佈開考後,考生須在第1頁之適當位置貼上電腦 1
條碼。
2
(二) 只需選答三題。
3
(三) 答案須寫在本試題答題簿所預留的空位內。不可在
各頁邊界以外位置書寫。 4
(四) 如有需要,可要求派發補充答題紙。每一紙張均 總分
須填寫考生編號、試題編號。
(五) 試場主任宣佈停筆後,考生不會獲得額外時間填
寫考生編號及試題編號。
© 香港電腦教育學會 保留版權
THE HONG KONG ASSOCIATION FOR COMPUTER EDUCATION
All Rights Reserved 2021
a) 在第 4 行填上適當內容。.
R\C 0 1 2 3 4 5 6 7
0 0 0 1 1 3 -1 -1 1
1 1 1 3 -1 4 -1 3 1
2 1 -1 4 -1 5 2 3 1
3 1 1 3 -1 3 -1 3 -1
4 -1
(1 分)
設 i 由 0 至 B-1 執行
x _________________
y _________________
board[x][y] -1
ii) 小明發現運行程式後實際的炸彈數量有機會少於預期。簡略說明。
________________________________________________________________________
________________________________________________________________________
設 i 由 0 至 B-1 執行
board[x][y] -1 (5 分)
c) 分配炸彈位置後,小明編寫另一子程序在沒有炸彈的位置計算附近炸彈的數目。
完成以下子程序。
設 i 由 0 至 R-1 執行
設 j 由 0 至 C-1 執行
如果 board[i][j] = -1 則
設 m 由 i-1 至 i+1 執行
設 n 由 j-1 至 j+1 執行
(3 分)
___________________________________________________________________________________
___________________________________________________________________________________
ii) 可以利用什麼圖來幫助編排日程及管理不同的開發項目?
___________________________________________________________________________________
iii) 有兩份文件會在文件編製階段完成。文件將會包括以下內容:
(A) 用戶要求
(B) 安裝說明
(C) 常見問題
(D) 程序源碼
(E) 流程圖
程序手冊: _____________________________________________________
用戶手冊: _____________________________________________________
iv) 小明在應用程式商店發佈了他的遊戲。一段時間後,他想在應用程式商店發放一個包含新功能的
更新版遊戲。以應用程式商店角度,小明應用了哪種系統轉換策略?簡略說明。
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
(6 分)
a) 下圖顯示輸送帶及機械臂現時的情況:
(i) 堆疊數據結構是否能夠用於處理此輸送帶系統?簡略說明。
_________________________________________________________________________________
_________________________________________________________________________________
i 1 2 3 4 5 6 7 8 9 …
loading[] …
(2 分)
i) 舉出兩個使用常數而不是實際數值的優點。
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
函數 HeaviestLoading()
max ______________
設 i 由 1 至 N 執行
如果 __________________________ 則
max loading[i]
傳回 max
函數 FindTotalWeight()
weight ______________
設 i 由 1 至 N 執行
__________________________
傳回 weight
函數 isOverload()
如果 _________________________________________________________________________ 則
傳回 TRUE
否則
傳回 FALSE
(7 分)
c) i) 此訊號模組在完成後便立即進行了測試。寫出這種測試的名稱及其目的。
_________________________________________________________________________________
_________________________________________________________________________________
ii) 程序內一個馬達模組包含數個用作移動輸送帶上的貨物的子程序。舉出一個利用模組化方式編寫程
序的優點。
_________________________________________________________________________________
_________________________________________________________________________________
(3 分)
完成以下 SortDesc()偽代碼。
子程序 SortDesc()
設 i 由 2 至 N 執行
inserted _________
j 1
如果 _____________________________________ 則
_____________________
inserted __________
j j + 1
於診所的醫療室外有一行 N 個等候座位。診所系統會以先到先得的形式安排病人與醫生會面。
...
N 個座位
小俊假設病人在等候時不會自行離座或移動。系統使用以下變量及子程序操作:
變量 描述
start 儲存首位輪候病人的索引
end 儲存最新加入輪侯的病人的索引
子程序 描述
add(pid) 加入新病人的病人 ID 到 Q 內
例如: 假設 N=5,而且醫療室外沒有任何病人正在輪候。
start 0 end -1
索引 0 1 2 3 4
Q
圖 A 顯示進行以下程序後 Q 的內容。
add(P024) ➔ add(P014) ➔ add(P245) ➔ add(P357) ➔
remove() ➔ remove() ➔ add(P198) ➔ add(P324)
start 2 end 0
索引 0 1 2 3 4
Q P324 P245 P357 P198
圖 A
______________________________________________________________________________
ii) 根據圖 A,在下列填寫順序進行以下動作後的值。
add(P954) ➔ remove() ➔ remove() ➔ add(P147)
start end
索引 0 1 2 3 4
Q
______________________________________________________________________________
______________________________________________________________________________
(3 分)
子程序 add(pid)
如果 isFull()=FALSE 則
end ________________________________
Q[end] ________________________________
子程序 remove()
如果 isEmpty()=FALSE 則
id ________________________________
Q[start] “”
start ________________________________
傳回 ________________________________
(5 分)
... ...
醫生 1 醫生 2
N 個座位 N 個座位
修改後的子程序 描述
由於兩名醫生的聽診速度並不一樣,隨著時間兩間醫療室門外的病人數目亦不會相同。
子程序 balance()利用以上已修改的子程序來平衡兩間醫療室的人數分配,以減少兩間醫療室門
外輪候病人數目的差距至相差 1 或以內。
i) 完成以下 balance()偽代碼。
子程序 balance()
如果 ________________________________ 則
________________________________
否則
________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
(6 分)
例如,假設遊標在一行文字的最開頭,以下顯示該行文字。(符號^代表遊標的位置)
ictisfun.
^
模式 輸入的文字 結果 (符號^代表遊標的位置)
插入 x xictisfun.
^
插入 xyz xyzictisfun.
^
覆寫 x xctisfun.
^
覆寫 xyz xyzisfun.
^
參數 數據類型 描述 例子
sKPS 字串 記錄曾被按下的按鈕,可包括細階英文 "IxyzI345I23"
字、數字及 I 及 D 按鈕。I 表示 Insert 鍵
被按下,D 表示 Delete 鍵被按下。
預設的輸入模式為插入模式。
廣域變量 數據類型 描述
aT 字元陣列 代表將會被編輯的原始文字(只包含細階英文及數字)。陣列大小為
2000。
lT 整數 代表被儲存於 aT 的文字的實際長度。
例子 1:
執行 doEdit()前:
aT i 0 1 2 3 4 5 6 7 8 9 10 11 …
aT[i] i c t i s f u n .
lT 9
sKPS xyIdse
執行 doEdit()後:
aT i 0 1 2 3 4 5 6 7 8 9 10 11 …
aT[i] x y d s e i s f u n .
lT 11
例子 2:
執行 doEdit()前:
aT i 0 1 2 3 4 5 6 7 8 9 10 11 …
aT[i] i c t i s f u n .
lT 9
sKPS IxyIdseDDDDD
執行 doEdit()後:
aT i 0 1 2 3 4 5 6 7 8 9 10 11 …
aT[i] x y d s e n .
lT 7
(a) 假設 aT 的內容如下所示。
aT i 0 1 2 3 4 5 6 7 8 9 10 11 …
aT[i] g d l u c k d s e !
lT 10
lT
lT
(4 分)
01 doEdit( sKPS ):
02 isI ← True
03 len ← sKPS 的長度
04 c ← 0
05 設 i 由 0 至 len-1 執行
06 a ← sKPS 的第 i 個字母
07 如果 a = 'I' 則
08 isI ← not isI
09 否則如果 a = 'D' 則
10 如果 lT > 0 則
11 設 j 由 c 至 lT – 1 執行
12 aT[j] ← aT[j+1]
13 aT[lT] ← ‘’
14 lT ← lT - 1
15 否則如果 isI = FALSE 則
16
aT[c] ← a
17
c ← c + 1
18 如果 c > lT 則
19 lT ← lT + 1
20 否則
21 設 j 由 lT-1 降至 c
22 aT[j+1] ← aT[j]
23 aT[c] ← a
24 c ← c + 1
(6 分)
25 lT ← lT + 1
(c) 第 11 及 12 行的作用是什麼?
_________________________________________________________________________________
_________________________________________________________________________________
(1 分)
doPrint():
(2 分)
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
(2 分)
全卷完