令和4年度 ITパスポート 問78 解説
関数checkDigitは,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列originalDigitを引数として,次の手順で計算したチェックデジットを戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。ここで,配列の要素番号は1から始まる。
〔手順〕
(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
答えを見る
正解 イj ← k + (j - 10 × k)
要点2桁のjの各桁の和は、十の位(j÷10の商)+一の位(j-10×商)
解説
j が2桁のとき、十の位は k(j÷10の商)、一の位は j-10×k で求まります。各桁の合計は k+(j-10×k) なのでイが正解です。例:j=45 → k=4、j=4+(45-40)=9。
- ア:j-10×k は一の位だけで、45なら5となり十の位が足されないので誤り。
- ウ:k+(j-10)×k は、45なら4+35×4=144となり誤り。
- エ:k+j は、45なら4+45=49となり、値が小さくならないので誤り。
なお、j=19のように和が10になる場合は、whileが繰り返されて1+0=1になります。