题库 高中信息

题干

我国居民身份证号是由 18 位字符组成,其中前 17 位是数字,第 18 位是校验位(校验
位字符在“0”~“9”或“X”中选取)。由前 17 位数字经过一定的规则计算得到校验值, 在查验居民身份证号有效性时,如果校验位中的字符与计算所得校验值相等则身份证号有效, 否则无效。
校验值计算规则如下:
第一步:将身份证号前 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 所示。
(1)设计程序界面时,应使用图 2 中的____(填写相应编号)添加列表框对象 List1。

(2)实现上述功能的 VB 程序如下,请在划线处填入合适代码。
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
(3)程序中加框处代码有误,应修改为________。
上一题 下一题 0.99难度 填空题 更新时间:2019-03-18 04:19:08

答案(点此获取答案解析)

同类题2

某次测验后,一位同学利用VB编写了一个查分系统。他首先把班级所有同学的学号、姓名、总分及名次数据存放在名为“student.accdb”的info表中。查分系统的功能如下:在文本框Text1中输入学号,单击“开始查找”按钮,若找到该学号,则在标签Label4中该学生的学号、姓名、总分及名次;若找不到该学号,则显示“查无此人”。按此要求编写程序如下,但加框处代码有错,请改正。

Dim a (1 To 50) As String ’用来存放学号数据
Dim b (1 To 50) As String ’用来存放姓名数据
Dim c (1 To 50) As Single ’用来存放总分数据
Dim d (1 To 50) As Integer  ’用来存放名次数据
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;DATA Soure=”+App.Path+“/Student.accdb”
conn.Open
Set rs.ActiveConnection=conn
rs.Open “SELECT*FROM info”
n=0
Do While Not rs.EOF
n=n+1
a(n)=rs.Fields(“学号”)
b(n)=rs.Fields(“姓名”)
c(n)=rs.Fields(“总分”)
d(n)=rs.Fields(“名次”)
rs.Move Next
Loop
rs.Close
conn.Close
Set rs=Nothing
Set conn=Nothing
End Sub
Private Sub Command1_click()
Dim key As String,i As Integer
Dim find As Boolean
key=Text1.Text
i=1
find=True
Do While And find①
If key=a(i) Then
find=False
Else

End If
Loop
If find=False Then
Label4.Caption=“学号为”+key+“的名字为”+b(i)+“总分为”+c(i)+“名次为”+d(i)
Else
Label4.Caption=“查无此人”
End If
End Sub
程序中①加框处改为:_____________________________________。
程序中②加框处改为:_____________________________________。