程式設計基礎(虛擬碼追蹤)

以三選一題型,逐行追蹤以日本基本資訊技術人員考試科目B相同形式的虛擬碼所寫的短程式並求出結果。內容包含指派與變數、迴圈與條件分支、陣列與字串、整數除法與餘數、遞迴呼叫、位元運算、堆疊與佇列、鏈結串列、差一錯誤、短路求值、實數的誤差,以及類別與實例。

練習10題從本領域隨機抽取10題 · 約5分鐘 練習這個領域以隨機順序出題,涵蓋這個領域的所有題目 弱項題目只重做最近答錯的題目

位元運算計算工具 →

虛擬碼執行與追蹤工具 →

程式設計基礎(虛擬碼追蹤)的重點

要正確讀懂程式的動作,必須具備親手追蹤變數的值如何逐行變化的能力。把迴圈次數數錯一次、因指派的順序而遺失值、整數除法捨去了小數部分等小小的疏忽,都會造成錯誤的結果或程式錯誤。

本單元以追蹤短程式並回答結果的題目為主。這些程式仿照日本基本資訊技術人員考試科目B所使用的虛擬碼撰寫,包含整數型的宣告、以 ← 指派、if・while・for,以及從1開始的陣列元素編號等。錯誤的選項是由弄錯終值、誤解運算子優先順序等典型錯誤所產生的值,解說中會說明各選項來自哪一種錯誤。

程式設計基礎(虛擬碼追蹤)的題目列表(40題)

  1. 下列程式原本打算用兩個指派敘述交換 x 與 y 的值。執行後 x 與 y 的值為下列何者?
  2. 下列程式將3個變數的值依序傳遞。執行後 a、b、c 的值為下列何者?
  3. 下列程式反覆將 x 乘以3。執行後 n 的值為下列何者?
  4. 下列 for 迴圈每次讓 i 增加2。執行後 s 的值為下列何者?
  5. 下列雙重迴圈中,內層迴圈的初值由外層變數 i 決定。執行後 c 的值為下列何者?
  6. 下列程式在雙重迴圈中有條件分支。執行後 c 的值為下列何者?
  7. 為了求陣列 a 所有元素的總和而寫了下列程式。陣列的元素編號從1開始。執行後 s 的值為下列何者?
  8. 陣列的元素編號從1開始。下列程式尋找最大的元素。執行後 m 的值為下列何者?
  9. 為了把陣列 a 的元素反轉順序而寫了下列程式。陣列的元素編號從1開始。執行後 a 的內容為下列何者?
  10. 陣列的元素編號從1開始。執行下列程式後,陣列 a 的內容為下列何者?
  11. 陣列的元素編號從1開始。下列程式比較相鄰的元素。執行後 c 的值為下列何者?
  12. m[i, j] 表示二維陣列 m 第 i 列第 j 行的元素,元素編號從1開始。執行下列程式後 s 的值為下列何者?
  13. 以下列程式將4列5行的二維陣列 m 的元素移到元素數為20的陣列 b。m[i, j] 表示第 i 列第 j 行的元素,元素編號從1開始。m[3, 2] 會被指派到 b 的哪一個元素編號?
  14. 陣列的元素編號從1開始,+ 表示字串的串接。執行下列程式後 r 的值為下列何者?
  15. 下列函式 isPal 在字串型陣列 s 的字元排列無論從前或從後讀都相同(回文)時回傳 true。陣列的元素編號從1開始。程式中的【a】應填入下列何者?
  16. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 f(9087) 呼叫下列函式 f 時,回傳值為下列何者?
  17. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 toBin(12) 呼叫下列函式 toBin 時,回傳值為下列何者?
  18. 下列程式以減法使兩個整數 a、b 逐漸相等。執行後 k 的值為下列何者?
  19. 下列函式 isLeap 在西元 y 年為閏年時回傳 true。and 比 or 先計算。isLeap(y) 回傳 true 的 y 為下列何者?
  20. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 pow(2, 10) 呼叫下列函式 pow 時,pow 被呼叫的次數(含第一次呼叫)為下列何者?
  21. 以 s(7) 呼叫下列函式 s 時,回傳值為下列何者?
  22. 以 p(3) 呼叫下列程序 p 時,輸出的值的順序為下列何者?
  23. 以 fib(10) 呼叫下列函式 fib 時,回傳值為下列何者?
  24. 以 c(4, 2) 呼叫下列函式 c 時,c 被呼叫的次數(含第一次呼叫)為下列何者?
  25. ⊕ 表示逐位元的互斥或。執行下列程式後 x 與 y 的值為下列何者?
  26. x 與 y 為8位元的無號整數。<< 與 >> 為邏輯移位,空出的位元補0,超出8位元的位元捨棄。∨ 表示逐位元的邏輯或。執行下列程式後 y 的值為下列何者?
  27. ∧ 表示逐位元的邏輯與。執行下列程式後 c 的值為下列何者?
  28. x 與 y 為8位元的無號整數。<< 與 >> 為邏輯移位,空出的位元補0,超出8位元的位元捨棄。∨ 表示逐位元的邏輯或。x 為 75 時,執行下列指派後 y 的值為下列何者?
  29. 下列程序 bubble 是將整數型陣列 data 以遞增順序排列的泡沫排序。swap(data, j, k) 是交換 data[j] 與 data[k] 的值的程序,陣列的元素編號從1開始。程式中的【a】應填入下列何者?
  30. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。下列程式在以遞增順序排好的整數型陣列 data(元素編號從1開始)中,把第一個大於或等於 x 的值的元素編號求到 lo。x 不大於 data 的最後一個元素。程式中的【a】應填入下列何者?
  31. 以元素數為5的整數型陣列 st 與整數型變數 top 表示堆疊。st 的元素一開始全為0,top 從0開始。push(v) 先把 top 加1再執行 st[top] ← v,pop() 回傳 st[top] 的值後把 top 減1(不改變 st 的元素)。執行下列程式後 top 與 st 為下列何者?
  32. 有一個把元素數為4的字串型陣列 q 環狀使用的佇列。head 與 tail 的初值為1,enq(v) 執行 q[tail] ← v 後再執行 tail ← tail mod 4 + 1,deq() 回傳 q[head] 的值後執行 head ← head mod 4 + 1。執行下列程式時,「E」會存放在 q 的哪個元素?
  33. 下列程式從元素編號1的元素開始,依序走訪以陣列 next 連接元素的鏈結串列並輸出。陣列的元素編號從1開始。next 的值0表示串列的結尾。輸出的值的順序為下列何者?
  34. 下列程式在以陣列 next 連接的鏈結串列 A → C → E → D → B 中,把 val[6] 的「F」插入到「C」(元素編號3)的正後方,再從元素編號1的元素開始依序走訪並輸出。陣列的元素編號從1開始。next 的值0表示串列的結尾。為使輸出為 A, C, F, E, D, B,【a】應填入下列何者?
  35. 下列 for 迴圈每次讓控制變數增加5。執行後 c 的值為下列何者?
  36. 下列程式的 and 在左側的式子為 false 時不評估右側的式子(短路求值)。cnt 是全域變數。執行後 cnt 的值為下列何者?
  37. 下列程式在元素數為 n 的陣列 a 中尋找值 x,並把找到的元素編號求到 i。陣列的元素編號從1開始。and 與 or 在只看左側的式子就能決定結果時,不評估右側的式子。【a】中填入的條件式中,在 x 不在 a 中時會參照到範圍外 a[n + 1] 的是下列何者?
  38. 實數型的值以 IEEE 754 雙精度(binary64)表示,加法的結果捨入為最接近的可表示值。執行下列程式後 c 的值為下列何者?
  39. 類別 Counter 的每個實例各有一個整數型成員變數 count(建立時為0),方法 inc() 會將自己的 count 加1。執行下列程式後 x 的值為下列何者?
  40. 類別 Counter 的每個實例各有一個整數型成員變數 count(建立時為0),方法 inc() 會將自己的 count 加1。Counter 型的變數中存放的不是實例本身,而是指向實例的參照。執行下列程式後 x 的值為下列何者?

電腦系統的其他領域