ITパスポート試験 ITパスポート 2022年 (令和4年)78: 関数checkDigitは,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列originalDigitを引数として,次の手順で計算したチェッ

ITパスポート 2022年 (令和4年)
Q 7878 / 100
関数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
この問の正解率:50.96%(1,621件)
この問題の本文・選択肢・正解・解説(展開)

問題本文

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

選択肢

  • .j ← j - 10 × k
  • .j ← k + (j - 10 × k)
  • .j ← k + (j - 10) × k
  • .j ← k + j

正解

. j ← k + (j - 10 × k)

解説

j が 2 桁の時 k = j ÷ 10 が十の位,j - 10 × k が一の位.各桁の和は k + (j - 10 × k) で求まる.イが正解で 9 以下になるまでこの処理を繰り返す.

選択肢ごとの解説

  • .j - 10 × k は一の位だけで十の位 k を足し忘れており誤り.
  • .正しい. k + (j - 10 × k) で 2 桁の数の各桁の和を算出.
  • .(j - 10) × k は計算式の構造が誤りで成立しない.
  • .k + j は重複加算となり正しい桁和とならないため誤った記述であり該当しない.

ITパスポート 2022年 (令和4年)過去問一覧へ戻る・問78