この概念が出た関連問題

この試験の対策ガイド

ITパスポート試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

このプログラムは、9桁の数字のチェックデジット(検査数字)を計算するアルゴリズムを実装しています。チェックデジットは、各桁の数字の合計を9以下になるまで繰り返し足し合わせることで求められます。例えば、123456789の場合、1+2+3+4+5+6+7+8+9=45となり、さらに4+5=9となってこれがチェックデジットとなります。プログラムでは、jに合計値を保持し、9より大きい場合にwhile文で処理を繰り返します。kには10で割った商(最上位の桁)が入り、正解のBの式 j ← k + (j - 10 × k) によって、次の繰り返しで使用する一桁の数に変換されます。

なぜ他の選択肢は違うのか

選択肢 ア
j ← j - 10 × k では、元の値jから10×kを引くだけなので、各桁の和を計算する処理になりません。例えば45の場合、4×10=40を引いて5になってしまいます。
選択肢 ウ
j ← k + (j - 10) × k では、jから10を引いた後にkを掛けるため、正しい桁の計算ができません。例えば45の場合、(45-10)×4となり、意図した結果になりません。
選択肢 エ
j ← k + j では単純にkとjを足すだけなので、10進数の各桁の和を計算する処理になりません。むしろ値が大きくなってしまい、収束しない可能性があります。

解くときのポイント

このような数字の各桁の和を求める問題では、「商」と「剰余」の考え方が重要です。10で割った商(k)は最上位の桁を、10で割った余り(j - 10 × k)は残りの桁を表します。これらを適切に組み合わせることで、各桁の和を計算できます。