题型:综合题 题类:常考题 难易度:困难
浙江省台州市书生中学2018-2019学年高二上学期信息技术第一次月考试卷
校验值计算规则如下:
第一步:将身份证号前17位数字分别乘以不同的系数后相加,对应系数如下表所示。
位数 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
系数 |
7 |
9 |
10 |
5 |
8 |
4 |
2 |
1 |
6 |
3 |
7 |
9 |
10 |
5 |
8 |
4 |
2 |
第二步:将第一步的计算结果除以 11,得到余数。 第三步:根据第二步的计算结果从下表获取对应的校验值。
余数 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
校验值 |
1 |
0 |
X |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
例如:某身份证号为 34052419800101001X。要计算此身份证的校验值步骤如下:第一步:计算 3*7+4*9+0*10+5*5+……+1*2=189
第二步:189除以11得到余数为2
第三步:由余数2获取校验值X。
根据以上规则小王编写了一个验证身份证号是否有效的VB程序,功能如下:在文本框Text1中输入身份证号,单击“验证”按钮Command1后,在列表框List1中显示验证结果。程序运行界面如图1所示。
Private Sub Command1_Click()
Dim i As Integer, a As Integer, b As Integer, sum As Integer, pos As Integer
Dim idCode As String, result As String
Const xs = "0709100508040201060307091005080402" '存储前17位每位系数
Const checkCodeStr = "10X98765432" '存储余数对应的检验值
sum = 0
For i = 1 To 17 Step 1
a = Val(Mid(idCode, i, 1))
b =
sum = sum + a * b
Next i
pos =
checkCode = Mid(checkCodeStr, pos, 1)
If checkCode = Mid(idCode, 18, 1) Then
result = "有效"
Else
result = "无效"
End if
List1.AddItem (idCode & " " & result)
End Sub
试题篮