科目A問78
関数 checkDigit は,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列 originalDigit を引数として,次の手順で計算したチェックデジットを戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。ここで,配列の要素番号は1から始まる。
〔手順〕
(1)配列 originalDigit の要素番号1~9の要素の値を合計する。
(2)合計した値が9より大きい場合は,合計した値を10進の整数で表現したときの各桁の数字を合計する。この操作を,合計した値が9以下になるまで繰り返す。
(3)(2)で得られた値をチェックデジットとする。
〔プログラム〕
〔手順〕
(1)配列 originalDigit の要素番号1~9の要素の値を合計する。
(2)合計した値が9より大きい場合は,合計した値を10進の整数で表現したときの各桁の数字を合計する。この操作を,合計した値が9以下になるまで繰り返す。
(3)(2)で得られた値をチェックデジットとする。
〔プログラム〕

| j ← j-10×k | |
| j ← k+(j-10×k) | |
| j ← k+(j-10)×k | |
| j ← k+j |
『情報処理過去問.com』からiPhoneアプリがリリースされました!!
正解
- イ
解説
チェックデジット(Check Digit)は、入力ミスやデータ伝送時の誤りを検出するために付加される検査用の数字です。本問では、各桁の数字を合計し、その結果が1桁になるまで各桁の合計を繰り返す処理(デジタルルート)を行っています。
プログラムでは、まず配列の各要素を合計して変数 j に格納し、j が10以上の場合に各桁の数字を再度合計します。このとき、
・十の位:k ← j ÷ 10
・一の位:j - 10×k
として求めることができます。
したがって、各桁の合計は「十の位+一の位」であるため、
k + (j - 10×k)
という式で表されます。
プログラムでは、まず配列の各要素を合計して変数 j に格納し、j が10以上の場合に各桁の数字を再度合計します。このとき、
・十の位:k ← j ÷ 10
・一の位:j - 10×k
として求めることができます。
したがって、各桁の合計は「十の位+一の位」であるため、
k + (j - 10×k)
という式で表されます。