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件)

解説

ITパスポート 2022年 (令和4年) 問78「関数checkDigitは,10進9桁の整数の各桁の数字が上位の桁から順に格納さ…」の正解と解説です。ITパスポート試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約51%です。

正解

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

正答率 51.0%(1,621人中 826人が正解)

問題の解説

手順(2)は、2桁の値の各桁の数字を足す操作を、9以下になるまで繰り返すものである。jを10で割った商kが十の位の数字、j - 10 × kが一の位の数字なので、各桁の合計は k + (j - 10 × k) と書ける。例えば j=38 なら k=3、j は 3 + (38 - 30) = 11 となり、もう一度繰り返して 1 + (11 - 10) = 2 になる。

選択肢ごとの解説

  • アj - 10 × kは一の位の数字だけで、十の位の数字kを足していない。例えば j=38 だと 8 になり、各桁の合計 11 にならない。
  • イ正しい。十の位の数字k(jを10で割った商)と、一の位の数字 j - 10 × k を足しており、各桁の数字の合計になる。
  • ウ(j - 10) × kは桁の数字を取り出す式にならず、例えば j=38 だと 3 + 28 × 3 = 87 となって、かえって大きくなる。
  • エjにkを足すだけではjが大きくなる一方で、9以下にならず、繰返しが終わらない。例えば j=38 だと 41 になる。

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

ITパスポート試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

ITパスポート試験 合格.dev を App Store でダウンロード