Examly題庫立即開始練習
國中教甄|資訊科技資訊科技109 年第 14 題單選題

考慮下面的 C 語言程式,該程式嘗試在陣列(array)Y[]中找到元素 x。不過該程式是錯誤的,請問程式在哪一個選項情況下執行會出問題? f(int Y[10], int x) { int i, j, k; i = 0; j = 9; do { k = (i + j) / 2; if(Y[k] < x) i = k; else j = k; } while(Y[k] != x && i < j); if(Y[k] == x) printf("x is in the array"); else printf("x is not in the array");

AY 為[1 2 3 4 5 6 7 8 9 10]且 x < 10
BY 為[1 3 5 7 9 11 13 15 17 19]且 x < 1
CY 為[2 2 2 2 2 2 2 2 2]且 x > 2正確答案
DY 為[2 4 6 8 10 12 14 16 18 20] 且 $2 < x < 20$ 且 $x$ 是偶數
答案與詳解
C
正確答案
程式碼中二元搜尋法的邊界更新錯誤(應為 i=k+1 或 j=k-1),當目標值大於陣列所有元素時,會因整數除法導致索引停滯而陷入無窮迴圈。

逐選項解析

AY 為[1 2 3 4 5 6 7 8 9 10]且 x < 10✕ 錯誤
若 x 小於陣列最小值(如 x=0),`Y[k] < x` 恆為假,`j` 會不斷縮小至與 `i` 相等,迴圈正常結束,不一定會出問題。
BY 為[1 3 5 7 9 11 13 15 17 19]且 x < 1✕ 錯誤
x < 1 即 x 小於陣列最小值,`Y[k] < x` 恆為假,`j` 會不斷縮小至 0,迴圈正常結束,不會出問題。
CY 為[2 2 2 2 2 2 2 2 2]且 x > 2✓ 正確
DY 為[2 4 6 8 10 12 14 16 18 20] 且 $2 < x < 20$ 且 $x$ 是偶數✕ 錯誤

立即註冊,看完整詳解

這題的完整詳解,註冊就能看 · 每天 2 題免費

精選詳解
  • 完整逐選項解析
  • 秒殺解題技巧與破題關鍵
  • 關鍵知識表整理
  • 陷阱與易錯提醒
  • 同考點歷屆題庫連續刷題與錯題本

資訊科技 相關題目

想練更多資訊科技考古題?

Examly 收錄 50 萬+ 道歷屆題目,每題都有像這樣的精選詳解。免費下載,立即開練。

Examly