チェックデジット計算で、2桁の合計値を各桁の和にする式

正解は イ (j ← k + (j - 10 × k))です。 手順(2)では、合計 j が9より大きい間、 j の十の位と一の位を足した値 で j を置き換えます。j は2桁を超えないので、十の位と一の位は次のように求まります。 十の位:k = j ÷ 10 の商 一の位:j − 10 × k(= j を10で割った余り) a の候補 j=38 での1回目の結果 判定 ア j ← j − 10×k 38−30=8(一の位だけ) × イ j ← k + (j − 10×k) 3+8=11 ○ ウ j ← k + (j − 10)×k 3+28×3=87 × エ j ← k + j 3+38=41 × イなら j は 38 → 11 → 2 と変化し、9以下になったところでループを抜けて 2 を返します。

関数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

出典令和4年度 ITパスポート試験 公開問題 問78
ア
j ← j - 10 × k
イ
j ← k + (j - 10 × k)
ウ
j ← k + (j - 10) × k
エ
j ← k + j