题目

【加试题】居民身份证号码由十七位数字本体码和一位数字校验码组成。从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。校验码生成步骤如下:①把身份证前 17 位的每个数字和加权系数相乘并累加求和。身份证号码前17位数的加权系数见下表:身份证号位数1234567891011121314151617加权系数7910584216379105842②根据步骤①求得的和值,与11做取余运算得到序号,再根据序号提取校验码字符。如:所得和值除以11的余数为“0”,则对应的校验码为“1”。如下表:序号012345678910校验码10X98765432    若步骤②中提取的校验码和身份证号最后一位相同,则校验通过,否则校验失败。    某人根据上述原理设计了一个身份证校验VB程序,功能如下:程序启动时从数据库student.accdb中读入全校学生身份证数据(全校共15个班级),并在列表框List1中显示,单击“校验”按钮Command1,在列表框List2中输出各班身份证号出错学生的信息和出错人数,若某班无出错学生,则不显示。程序界面如图所示。实现上述功能的VB程序如下,请回答下列问题: (1) 某人身份证号的前17位为“33900520000101007”,根据上述步骤可计算出该身份证号的第18位校验码是。 (2) 请在划线处填上合适的代码。Const max = 1000Dim n As Integer  '存放学生人数Dim sfzh(1 To max) As String, xm(1 To max) As String  '数组sfzh、xm分别存放学生身份证号、姓名Dim bj(1 To max) As Integer, flag(1 To max) As Boolean'数组bj、flag分别存放学生班级、身份证校验结果Dim cw(1 To 15) As Integer   '数组cw存放各班身份证号出错人数Function check(x As String) As Boolean'本函数功能:校验身份证号x,若校验通过返回True;否则返回False  Dim i As Integer, sum As Integer, xh As Integer, jym As String  Dim a(1 To 18) As Integer, w(1 To 18) As Integerjym = "10X98765432" : sum = 0  For i = 18 To 2 Step -1a(i) = Val(Mid(x, 19 - i, 1))  Next i  For i = 18 To 1 Step -1w(i) = 2 ^ (i - 1) Mod 11  Next i  For i = 2 To 18sum = sum + a(i) * w(i)  Next ixh = sum Mod 11  If = Mid(x, 18, 1)  Then check = True Else check = FalseEnd FunctionPrivate Sub Form_Load()  '本过程从数据库中读入指定数据到数组sfzh、xm、bj,并在List1中显示  Dim conn As New ADODB.Connection  Dim rs As New ADODB.Recordsetconn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" + App.Path + "\student.accdb"conn.Open  Set rs.ActiveConnection = connrs.Open "select * from stu"'本过程其它语句略,学生人数存变量n,数组cw各元素初值置为0End SubPrivate Sub Command1_Click()  Dim i As Integer, j As Integer  For i = 1 To n    If  check(sfzh(i)) Then flag(i) = True Else flag(i) = False  Next i  For i = 1 To 15    For j = 1 To n     If  bj(j) = i And flag(j) = False Then             List2.AddItem sfzh(j) + "  " + xm(j)     End If    Next j    If cw(i) > 0 Then      List2.AddItem Str(i) + "班共有以上" + Str(cw(i)) + "个身份证号错误"      List2.AddItem ""    End If  Next iEnd Sub 答案: 【1】9 【1】Mid(jym, xh + 1, 1)【2】cw(i) = cw(i) + 1
信息技术 试题推荐
最近更新