9 けたの数字に対して, 次のルールでチェックディジットを最後尾に付けることにした。チェックディジットを付加した 10 けたの数字として, 正しいものはどれか。 ルール 1 : 各けたの数字を合計する。 ルール 2 : ルール 1 で得られた数が 2 けたになった場合には, 得られた数の各けたの数字を合計する。この操作を, 得られた数が 1 けたになるまで繰り返す。 ルール 3 : 最終的に得られた 1 けたの数をチェックディジットとする。
平成22年度 秋期 ITパスポート試験 問88
テクノロジ系データベース › データベース設計
这道题的解析和你的作答记录。
問88
頻出度★★★
解説
問 88
错误ア
前 9 位是 123456789,总和为 1+2+3+4+5+6+7+8+9=45。因为是 2 位数,所以 4+5=9,校验位必须是 9。但末尾是 0,所以它不是正确附加了校验位的 10 位数字。如果要改正,应该是 1234567899。
错误イ
前 9 位是 444444444,总和为 4×9=36。因为是 2 位数,所以 3+6=9,正确的校验位是 9。但末尾是 4,因此不一致。它全部由相同的数字排列而成,乍看之下似乎很合理,但按规则计算就不成立。
错误ウ
前 9 位是 554433221,总和为 5+5+4+4+3+3+2+2+1=29。因为是 2 位数,所以 2+9=11;仍是 2 位数,所以 1+1=2,正确的校验位是 2。但末尾是 1,因此不一致。如果把规则 2 的重复只做 1 次就停下、直接把 11 当作结果,或者中途算错,就容易误选这一项。
- エ
正解 正确答案是 エ。规则是「把前 9 位的各位数字相加求和;如果结果是 2 位数,就再把所得数的各位数字相加,重复该操作直到变成 1 位数;把这个 1 位数作为校验位附加在最末尾」。因此,10 位数字中,由前 9 位算出的值与末尾 1 位一致时才是正确的。エ 的前 9 位是 665533333,6+6+5+5+3+3+3+3+3=37(规则 1)。37 是 2 位数,所以 3+7=10;10 仍是 2 位数,所以 1+0=1(规则 2 重复了 2 次)。最终得到的 1 位数是 1(规则 3),与 エ 末尾的数字 1 完全一致。因此 エ 是正确的 10 位数字。另外,这里算出的值与「各位数字之和除以 9 的余数(余数为 0 时取 9)」相同,用这个思路就可以不必从头重新相加,快速完成验算。
ここがポイント
- 校验位(校验码)是为了检测编码在输入或读取时发生的错误,按事先确定的计算式算出、并附加在编码末尾的数字。像本题这样,核对「由高位各位算出的值」与「实际的末尾数字」是否一致,就能发现错误。
- 规则 2 的要点在于「重复到变成 1 位数为止」。不能在 29 → 11 处停下,要算到 11 → 2;不能在 37 → 10 处停下,要算到 10 → 1。其结果等于各位数字之和除以 9 的余数(余数为 0 时取 9),可以用来验算。
用語