アルゴリズムとプログラミング
ITパスポート試験|関数 checkDigit は,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列…
関数 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)
while内に入った時点でjは桁の数字の合計値(2桁になりうる)。k ← j÷10の商はjの十の位の数字である。手順(2)はjの各桁の数字を足すことなので、十の位kと一の位を足す必要がある。一の位はj−10×kで求まる。よって新しいjは k+(j−10×k) となり、イが正しい。検算:j=35ならk=3、3+(35−30)=8で正しく桁和が得られる。
?選択肢ごとの解説
ア ×j ← j−10×k は一の位(35なら5)だけを残し、十の位kを足し忘れる。手順(2)の『各桁の数字を合計』に反し、j=35で5となり誤り。
イ ○while内に入った時点でjは桁の数字の合計値(2桁になりうる)。k ← j÷10の商はjの十の位の数字である。手順(2)はjの各桁の数字を足すことなので、十の位kと一の位を足す必要がある。一の位はj−10×kで求まる。よって新しいjは k+(j−10×k) となり、イが正しい。検算:j=35ならk=3、3+(35−30)=8で正しく桁和が得られる。
ウ ×j ← k+(j−10)×k は演算順序が誤り。j=35では3+(35−10)×3=3+75=78となり、本来の桁和8と全く異なる。
エ ×j ← k+j は元のjをそのまま足してしまう。j=35では3+35=38となり桁和8にならず、ループも縮小しない。
アルゴリズムとプログラミングの他の問題
次の流れ図で示す処理を終了したとき,xの値はどれか。 〔流れ図〕 1. 開始 2. x を 98 とする 3. y を…手続 printArray は,配列 integerArray の要素を並べ替えて出力する。手続 printArray…関数 sigma は,正の整数を引数 max で受け取り,1から max までの整数の総和を戻り値とする。プログラム中の…配列に格納されているデータを探索するときの,探索アルゴリズムに関する手続 calcMod3 を呼び出したときの出力はどれか。 〔プログラム〕4個の要素から成るデータの並びを,次の手順を繰り返して昇順に整列するとき,整列が終了するまでに(1)から(3)の一連の手順は…関数 calculateAmountOfPrize は,業務改善の効果における改善額と短縮期間を,それぞれ…手続 sort は,要素数が2以上の整数型の配列を引数 numberArray で受け取り,その要素を昇順に並べ替えた結果を…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
ITパスポート試験は全2,669問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 最終更新 2026-08-15 · ITパスポート試験 過去問 · itpass-r4k-q78
