校验值计算规则如下:
第一步:将身份证号前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
Private Sub Command1_Click()
Dim a(5) as Integer
Dim n as Integer, i as Integer
n=Val(Text1.Text)
i=0
a(1)=1: a(2)=1
For i=3 To n
a(i)=a(i-1)+a(i-2)
Next i
Label1.Caption=a(i)
End Sub
若在Text1中输入5,则点击按钮后的运行结果为( )
Dim a(1 To 100)As Integer
n=Val(Text1.Text)
a(1)=0:a(3)=1
s=1
Next i
Text2.Text=Str(s)
方框中的代码由以下三部分组成:
①a(i)=a(i-2)+a(i-4)
②s=s+a(i)
③For i=5 To n Step 2
代码顺序正确的选项是( )
a(1) = 1: a(2) = 1:b(1) = 1: b(2) = 2
For i = 3 To 5
a(i) = a(i - 1) + a(i - 2)
b(i) = b(i - 1) + a(i)
Next i
执行该程序段后,数组元素b(5)的值为 ( )
a(1) |
a(2) |
a(3) |
… |
a(n-2) |
a(n-1) |
a(n) |
3 |
25 |
38 |
… |
55 |
31 |
12 |
依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有误,请改正。
Private Sub Command1_Click( )
Const n=6
Dim a(1 To n)As Integer,flag As Boolean
Dim i As Integer, j As Integer, m As Integer, key As Integer
‘读取一组正整数,按上述规则存入数组a中,代码略
key=Val(Text1.Text)
i=1
j=(n+1)\2
flag=False
Do While And Not flag ‘①
m=(i+j)\2
If key=a(m)then
flag=True
Elself key <a(m)then
j=m-1
Else
i=m+1
End If
Loop
If Not flag And j>0 Then
‘②
If key=a(m)Then flag=True
End If
If flag Then
Text2.Text=Str(m)
Else
Text2.Text= "找不到"
End If
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
Private Sub Command1_ Click ()
Dim i As Integer
Dim s As String, s2 As String
s =Text1. Text
For i=1ToLen(s)
s2 = Mid(s,i,1)
List1.AddItem s2 & ":”& Str (Asc (s2))
Next i
End Sub
则程序界面上用于输出的控件的图标为( )
def convert(s):
m=0
le=len(s)
key=s[le-1]
if key=="B":
n=2
elif key=="D":
①
else:
n=16
i=0
while i<=le-2:
c=s[le-1-i]
if c>="0"and c<="9":
a=ord(c)-ord("0")
elif c>="A"and c<="F":
a=ord(c)-ord("A")+10
②
i+=1
return m
s=input("请输入算式")
result=0;suanfu1="";suanfu2="";s1=""
for i in range(len(s)):
c=s[i]
if c=="+" or c=="-" or c=="=":
③
suanfu1=suanfu2
suanfu2=c
if suanfu1=="":
result=t
if suanfu1=="+":
result=result+t
if suanfu1=="-":
result=result-t
s1=""
else:
s1=s1+c
print("计算结果为"+str(result)+"D")
① ② ③
listque=[] #定义列表listque存储订单
x=0
while(x!=4):
print('1. 添加订单')
print('2. 发货')
print('3. 查看订单列表')
print('4. 退出')
x=int(input("输入你的选择:"))
if x==1:
y=input("输入订单编号:")
listque.append(y)
elif x==2:
if len(listque)==0:
print("订单列表为空")
else:
print("发货单号:"+listque.pop(0))
elif x==3:
print("等待发货:",listque)
print( )
input("运行完毕,请按回车键退出...")
m = Text1.Text
For i= 1 To Len(m)
c= Mid(m,i, 1)
If c>= "0" And c<= "9" And i Mod 2 = 0 Then k=1 Else k= 2
a(k)= a(k)+ 1
Next i
数组a各元素的初始值都为0,文本框Text1上输入内容为“9+ ILM2019IT”(不包含双引号)。该程序段运行后,a(2)的值为( )
Dim a(1 To 6) As Integer
Sum =0
For i= 1 To 6
For j = i+1 To 6
If j Mod i =0 Then a(j)=1 – a(j)
Next j
Next i
For i=1 To 6
Sum Sum+ Str(a(i))
Next i
Text1. Text = Str(Sum)
该程序段运行后,文本框Text1中显示的内容是( )
Dim a(1 To 15) As Integer, num As Integer, s As String
'生成数组a,a(1)=73,a(2)=58, a(3)=62, a(4)=36…代码略
Private Sub Command1_Click()’对数组进行排序
num = 5: k = 1: f = 1
For i = 1 To num
k = k + i
For m = k - i To ①
For n = k - i To 2 * k - 2 - i - m
If ② Then t = a(n): a(n) = a(n + 1): a(n + 1) = t
Next n
Next m
f = f * (-1)
Next i
'将处理后的数组,以金字塔形显示,代码略
End Sub
s = "United by Emotion": s1 = "”
For i=1 To Len(s) Step 4
c = Mid(s, i,1)
If Asc(c) >= Asc("a") Then
c = Chr(Asc(c) - Asc("a") + Asc("A"))
s1=c+s1
End If
Next i
程序运行后,s1的值是( )
s="ABAABABBAB"
x=0: pos=1
For i= 1 To Len(s)
If Mid(s, i,1)="A" Then x=x+1
If Then
List1.AddItem Str(pos) + ":" + Str(i)
End If
Next i
上述程序段中方框处的可选语句为:
①i-pos=x ②i-x=x ③pos=i ④pos=i+1
则(1)(2)处的语句依次可为( )
数组元素 |
数组元素的含义 |
a(i) |
a(1)到a(10)依次存储1号顾客购买商品1~商品10的记录; a(11)至a(20)依次存储号2顾客购买商品1~商品10的记录;依次类推。 数组a的某个元素的值为1,则表示某位顾客购买了某种商品,若为0则表示没有购买该种商品。如a(6)=1表示1号顾客购买了商品6,a(6)=0表示未购买。 |
b(i) |
dsj(1)~dsj(9)依次存储商品1与商品2~商品10的关联次数; dsj(10)~dsj(17)依次存储商品2与商品3~商品10的关联次数:依次类推。 如dsj(5)=2表示商品1与商品6被同时购买过2次; 如dsj(45)=4表示商品9与商品10被同时购买过4次。 数组dsj中,若dsj(45)的值最大,则表示商品9和商品10的关联次数最多。 |
小王按照上述算法设计了VB程序,统计了20个用户购买10种商品之间的关联性,VB程序如下,部分界面如图所示。
Private Sub Cmd1_Click( )
Dim a(1To200) As Integer '各个用户原始的购买记录
Dim dsj (1To45) As Integer '统计商品之间的关联次数
Dim i As Integer, t As Integer, nc As Integer, j As Integer, max As Integer
'数组a读入数据并在列表框分行输出,代码略
For i=1 To 20'20个用户
t=1
For j=1 To 9'10个商品,共45种组合
For k=j+1 To 10
m=(i-1)*10
If Then dsj(t)=dsj(t)+1
Next k
Next j
Next i
max=0
For i=1 To 45
If Then
max=dsj(i)
maxi=i
End If
Next i
t=9:nc=1
Do While maxi>t
t=t-1
nc=nc+1
Loop
Text1.Text="关联最多的是商品"+Str(nc)+Str(maxi+nc)+":"+Str(max)+"次"
End Sub
i=n+1
Do While i>k
①
②
Loop
③
横线处的语句由以下三部分组成
①a(i)=m
②i=i-1
③a(i) = a(i-1)
下列选项中,代码顺序正确的是( )
import random
a = [0] * 6
for i in range(0,6):
a[i] = random.randint(1,5) * 2 + 1
i = 0
while i < 5:
if a[i] > a[i+1]:
a[i],a[i+1] = a[i+1],a[i]
else:
a[i] += 1
i += 1
print(a)
执行以上程序后,列表变量a可能的是 ( )
s=1
for i in_______:
s+=i
s=”我爱 13aPP14LE!”
ans=res=""
for x in s:
if "a"<=x<="z":
ans=ans+chr(ord(x)-32)
if "A"<=x<="Z":
ans=ans+chr(ord(x)+32)
if "0"<=x<="9":
res=res+x t=ans+res
print(t)