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

下列函式 isPal 在字串型陣列 s 的字元排列無論從前或從後讀都相同(回文)時回傳 true。陣列的元素編號從1開始。程式中的【a】應填入下列何者?

○邏輯型: isPal(字串型陣列: s)
  整數型: n ← s的元素數
  for (i 從 1 到 n ÷ 2 每次加 1)
    if (s[i] ≠ s[【a】])
      return false
    endif
  endfor
  return true
  1. An − i + 1
  2. Bn − i
  3. Cn + i − 1
查看答案與解析

正確答案:A. n − i + 1

第 i 個字元要與從後面數來第 i 個字元比較。從後面數來第1個是 s[n],第2個是 s[n − 1],因此從後面數來第 i 個是 s[n − i + 1]。只比較前半即可:n = 5 時 n ÷ 2 = 2.5,因此 i = 1、2 時分別比較 s[1] 與 s[5]、s[2] 與 s[4](中間的 s[3] 不必比較)。若填 n − i 就會差一,即使是回文「level」,也會比較 s[1] 的「l」與 s[4] 的「e」而回傳 false。

  • A. 正確。i = 1 時指向 s[n],i = 2 時指向 s[n − 1],也就是從後面數來第 i 個字元。
  • B. 差了一,會與從後面數來第 i + 1 個字元比較。即使是回文「level」也會得到 false。
  • C. i = 2 時成為 s[n + 1],超出陣列的範圍。
練習這個領域 前往領域頁面

相關計算工具

程式設計基礎(虛擬碼追蹤)的其他題目

  1. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 f(9087) 呼叫下列函式 f 時,回傳值為下列何者?
  2. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 toBin(12) 呼叫下列函式 toBin 時,回傳值為下列何者?
  3. 下列程式以減法使兩個整數 a、b 逐漸相等。執行後 k 的值為下列何者?
  4. 下列函式 isLeap 在西元 y 年為閏年時回傳 true。and 比 or 先計算。isLeap(y) 回傳 true 的 y 為下列何者?
  5. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 pow(2, 10) 呼叫下列函式 pow 時,pow 被呼叫的次數(含第一次呼叫)為下列何者?