【加试题】居民身份证号码由十七位数字本体码和一位数字校验码组成。从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。校验码生成步骤如下:
(1)把身份证前 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 |
序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
某人根据上述原理设计了一个身份证校验VB程序,功能如下:程序启动时从数据库student。accdb中读入全校学生身份证数据(全校共15个班级),并在列表框List1中显示,单击“校验”按钮Command1,在列表框List2中输出各班身份证号出错学生的信息和出错人数,若某班无出错学生,则不显示。程序界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)某人身份证号的前17位为“33900520000101007”,根据上述步骤可计算出该身份证号的第18位校验码是
3
3
。(2)请在横线处填上合适的代码。
Const max=1000
Dim 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 Integer
jym=“10X98765432“:sum=0
For i=18 To 2 Step-1
a(i)=Val(Mid(x,19-i,1))
Next i
For i=18 To 1 Step-1
w(i)=2^(i-1)Mod 11
Next i
For i=2 To 18
sum=sum+a(i)*w(i)
Next i
xh=sum Mod 11
If ①=Mid(x,18,1)Then check=True Else check=False
End Function
Private Sub Form_Load( )
'本过程从数据库中读入指定数据到数组sfzh、xm、bj,并在List1中显示
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString=“provider=microsoft.ace.jye.ai.12.0;data source=“+App.Path+“\student.jye.ai“
conn.Open
Set rs.ActiveConnection=conn
rs.Open“select*from stu“
'本过程其它语句略,学生人数存变量n,数组cw各元素初值置为0
End Sub
Private 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 i
End Sub。
【考点】编辑事件处理过程的代码.
【答案】3
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/6/27 10:35:59组卷:3引用:1难度:0.5
相似题
-
1.根据AQI值判断城市的空气质量。若城市的AQI值(整数)不超过100则空气质量优良,否则空气质量有污染。当输入的AQI值为-1时则退出程序。不要更改程序结构,将题中的①②③④填入正确的语句。
city=input(“请输入城市名:”)
AQI=int(input(“请输入空气质量指数AQI的值:”))
①______ AQI!=-1:
if ②______:
print(city,“的空气质量优良。”)
③______:
print(city,“的空气质量有污染。”)
city=input(“请输入城市名:”)
AQI=④(input(“请输入空气质量指数AQI的值:”))
(1)序号①答案为
A.if
B.while
C.for
D.def
(2)序号②答案为
A.AQI>=100
B.AQI<=100
C.AQI>100
D.AQI<100
(3)序号③答案为
A.elif
B.break
C.if
D.else
(4)序号④答案为
A.int
B.float
C.str
D.else发布:2025/1/2 11:0:1组卷:0引用:0难度:0.4 -
2.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再下落。编写一个C程序,求它在第10次落地时,其经过了多少米?第10次反弹多高?
发布:2025/1/2 11:0:1组卷:1引用:3难度:0.3 -
3.利用海伦公式求解三角形面积。已知a,b,c为三角形的三条边长,p为三角形的半周长,即p=(a+b+c)/2,计算此三角形面积S的海伦公式为:
。不要更改程序结构,将题中的①②③填入正确的语句。
import math#导入数学模块
def hl(a,b,c):#定义求三角形面积的函数
p=①
s=math.jye.ai(②)#sqrt用于计算算术平方根
return ③#返回面积的值
a,b,c=3,4,5#边长依次赋值
print(“此三角形的面积S为:“,hl(a,b,c))
A. (a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C. (a+b+c)*2 D.s
(2)序号②答案为
A.(a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C.(a+b+c)*2 D.(3+4+5)/2
(3)序号③答案为
A.p B.s
C.p*(p-a)*(p-b)*(p-c) D.0发布:2025/1/2 11:0:1组卷:0引用:0难度:0.4