戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2010年 秋期 61


問題文

表計算ソフトを用いて社員コード中のチェックディジットを検算する。社員コードは3けたの整数値で、最下位の1けたをチェックディジットとして利用しており、上位2けたの各けたの数を加算した値の1の位と同じ値が設定されている。セルB2に社員コードからチェックディジットを算出する計算式を入力し、セルB2をセルB3〜B5に複写するとき、セルB2に入力する計算式のうち、適切なものはどれか。
ITパスポート 2010年 秋期  問61の問題画像

選択肢

10-整数部(A2/100)+剰余(整数部(A2/10),10)
剰余(10-整数部(A2/100)+整数部(A2/10),10)
剰余(整数部(A2/100)+剰余(整数部(A2/10),10),10)(正解)
整数部((整数部(A2/100)+整数部(A2/10))/10)

🔒 解説は解答すると表示されます

チェックディジットの検算(表計算)【ITパスポート 解説】

正解の理由

社員コードは3けたの整数で、最下位の1けた(1の位)がチェックディジットになっています。チェックディジットは「上位2けた(100の位と10の位)の各けたの数を加算した値の1の位」です。したがって、
  1. 100の位(百の位)を取り出す:整数部(A2/100)
  2. 10の位(十の位)を取り出す:整数部(A2/10) の1の位 → 剰余(整数部(A2/10),10)
  3. その和の1の位を求める:剰余((1)+(2),10)
これを表す式がウの 剰余(整数部(A2/100)+剰余(整数部(A2/10),10),10) です。英語の関数名で書くと になります。
ここで使う関数の意味:
  • 整数部(INT:integer 部分を返す関数)… 例:整数部(37.9)=37
  • 剰余(MOD:余りを返す関数、いわゆる modulo)… 例:剰余(37,10)=7

解法ステップ

  1. A2 に入っている3けたの数を例に取る(例:370)。
  2. 100の位を求める:整数部(370/100) = 3。
  3. 10の位を求める:整数部(370/10) = 37、さらにその1の位 = 剰余(37,10) = 7。
  4. 3 + 7 = 10、その1の位 = 剰余(10,10) = 0。これがチェックディジット。
  5. 以上の処理を1つの式にまとめると、ウの式になります。B2にこの式を入力し、下へ複写すれば各行でA列に合わせて正しく計算されます(相対参照)。
計算例(A2=549):
  • 整数部(549/100)=5、整数部(549/10)=54 → 剰余(54,10)=4
  • 5+4=9 → 剰余(9,10)=9(チェックディジット = 9)
式(見やすく英語関数で書くと):

選択肢別の誤答解説

  • ア: 10-整数部(A2/100)+剰余(整数部(A2/10),10)
    「10-整数部(A2/100)」のように100の位を10から引いています。意味が異なり、正しい桁の和の1の位を求められません(A2=370なら 10-3+7 = 14 → 14 をそのまま出す式であれば誤り)。また最後に10で剰余を取っていないため1の位にもなりません。
  • イ: 剰余(10-整数部(A2/100)+整数部(A2/10),10)
    100の位を10から引く不自然な操作と、十の位として整数部(A2/10)(例:37)そのままを使っている点が誤りです。十の位は37ではなくその1の位(7)を使う必要があります。A2=370で試すと剰余(10-3+37,10)=剰余(44,10)=4 となり、本来のチェックディジット0と異なります。
  • エ: 整数部((整数部(A2/100)+整数部(A2/10))/10)
    (百の位)+(A2/10の整数部分)を10で割った整数部を取っています。十の位を取り出す処理になっておらず、ほとんどの場合誤った値になります。A2=370だと整数部((3+37)/10)=整数部(4)=4 で、正しいチェックディジット0と違います。

よくある誤解

  • 「整数部(A2/10) がそのまま十の位」と思い込むミス:整数部(A2/10) は下1けた(1の位)まで残るので、さらにその1の位を取り出す必要があります(剰余で10を取る)。
  • 最後に剰余(…,10) を忘れるミス:和を取った後にその1の位(=剰余10)を取らないとチェックディジットになりません。
  • 関数名の取り違え:INT(整数部)とMOD(剰余)を混同すると誤答になります。処理の順序(括弧)も重要です。

補足コラム

  • 別の実装方法:文字列関数で桁を扱うこともできます。たとえば Excel なら RIGHT(TEXT(A2,"000"),1) で最下位を取り出せます。上位2けたの和の1の位を求めるには、LEFT と MID を組み合わせる方法もありますが、数値操作(INT と MOD)で処理するのが汎用的で分かりやすいです。
  • 関数名の英語表記(Excel/スプレッドシートの一般名):
    • 整数部 → INT(integer part)
    • 剰余 → MOD(modulo / remainder)
  • 入力が数値でない場合(文字列になっている等)は、VALUE 関数などで数値に変換してから扱ってください。

FAQ

Q1. A列の値が「037」のように先頭ゼロを付けた場合は?
A1. 表計算ソフトで数値として扱われていれば 37 として扱われます。先頭ゼロを保持したい場合は文字列扱いになりますが、今回の計算は数値前提なので VALUE 関数で数値に変換してから処理するか、文字列操作で桁を取り出してください。
Q2. マイナス値や4けた以上は?
A2. 問題は3けたの正の整数が前提です。異なる桁数や負数を扱う場合は、仕様に合わせて桁取り出しの方法を調整してください。
Q3. コピーしたときに参照がズレない?
A3. この式は相対参照(A2)を使っているので、B2に入れて下へ複写するとB3では自動的に A3 を参照して正しく計算されます。

関連キーワード: 表計算, チェックディジット, MOD関数, INT関数, 桁取り出し, Excel, スプレッドシート
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について