moea_joint_essay
110年
[資訊] 資訊管理、程式設計
第 五 題
某銀行有多台取號機供民眾取號,每台取號機提供多項服務的取號,同一服務會依據各取號機之取號的先後時間,依序給予連續的號碼,且最小的號碼為1。請使用下列所有的函式來撰寫一取號函式 GetNumber,輸入為服務代碼與鎖定號碼變數失敗的上限次數,其傳回為此服務的下一個號碼,但當鎖定號碼變數失敗超過其上限次數時,則傳回 0。(15 分)
int lock(int serviceid) /* 鎖定指定服務代碼的號碼變數。輸入為服務代碼,其傳回為是否鎖定成功,當鎖定成功時,則傳回 1,當鎖定失敗時,則傳回 0。 */
unlock(int serviceid) /* 解鎖指定服務代碼的號碼變數。輸入為服務代碼。 */
int get(int serviceid) /* 取得指定服務代碼的號碼變數之值。輸入為服務代碼。 */
set(int serviceid, int value) /* 設定指定服務代碼的號碼變數之值。輸入為服務代碼與此服務代碼的號碼變數欲設定之值。 */
sleep() /* 執行暫停 0.1 秒 */
int lock(int serviceid) /* 鎖定指定服務代碼的號碼變數。輸入為服務代碼,其傳回為是否鎖定成功,當鎖定成功時,則傳回 1,當鎖定失敗時,則傳回 0。 */
unlock(int serviceid) /* 解鎖指定服務代碼的號碼變數。輸入為服務代碼。 */
int get(int serviceid) /* 取得指定服務代碼的號碼變數之值。輸入為服務代碼。 */
set(int serviceid, int value) /* 設定指定服務代碼的號碼變數之值。輸入為服務代碼與此服務代碼的號碼變數欲設定之值。 */
sleep() /* 執行暫停 0.1 秒 */
📝 此題為申論題
思路引導 VIP
設計迴圈追蹤鎖定失敗次數。在迴圈內嘗試 lock,若成功,則取得當前號碼加 1,更新號碼,解鎖並回傳新號碼;若失敗,則增加失敗次數並呼叫 sleep()。當失敗次數超過上限,跳出迴圈回傳 0。
🤖
AI 詳解
AI 專屬家教
使用 C 語言風格撰寫的 GetNumber 函式如下:
int GetNumber(int serviceid, int limit) {
▼ 還有更多解析內容