ITパスポート ラボ

学習の画面へ

令和4年度 問78

チェックデジットの計算

出典: 令和4年度 ITパスポート試験 公開問題 問78 (IPA)

関数 checkDigit は,10 進 9 桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列 originalDigit を引数として,次の手順で計算したチェックデジットを戻り値とする。プログラム中の a に入れる字句として,適切なものはどれか。ここで,配列の要素番号は 1 から始まる。

〔手順〕

(1) 配列 originalDigit の要素番号 1~9 の要素の値を合計する。
(2) 合計した値が 9 より大きい場合は,合計した値を 10 進の整数で表現したときの各桁の数字を合計する。この操作を,合計した値が 9 以下になるまで繰り返す。
(3) (2) で得られた値をチェックデジットとする。

〔プログラム〕

○整数型: checkDigit(整数型の配列: originalDigit)
  整数型: i, j, k
  j ← 0
  for (i を 1 から originalDigit の要素数 まで 1 ずつ増やす)
    j ← j + originalDigit[i]
  endfor
  while (j が 9 より大きい)
    k ← j ÷ 10 の商  /* 10 進 9 桁の数の場合,j が 2 桁を超えることはない */
    [ a ]
  endwhile
  return j
  1. ア j ← j − 10 × k
  2. イ j ← k + (j − 10 × k)
  3. ウ j ← k + (j − 10) × k
  4. エ j ← k + j
正解と解説を見る

正解: イ

ポイント

j が 2 桁の数のとき、各桁の数字の合計を求めます。

例: j = 47 のとき、k = 4、j - 10 × k = 7 で、合計は 11 です。繰り返しで 9 以下になるまで続けます。

広告

「アルゴリズムとプログラミング」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)

広告