【加试题】条形码是按照一定编码规则排列的图形标识符.如图所示,条形码下方数字左边12位代表信息,最右边一位是校验码.校验码产生方法如下:
①把条形码下方数字从右往左依次编序号为“1,2,3,4…”;
②从序号2开始把所有偶数序号位上的数相加求和,并乘以3;
③从序号3开始把所有奇数序号上的数相加求和;
④把第②和第③步结果相加求和;
⑤10减去第④步结果的个位数,得出校验码(如果差值为10,则校验码为0);
如条形码的数字为:977167121601X(X为校验码),则校验码主要产生步骤如下:
1)(1+6+2+7+1+7)×3=72
2)0+1+1+6+7+9=24
3)72+24=96
4)10-6=4
所以最后校验码X=4,此条形码数字为9771671216014.
小何为此编写了VB程序,用以验证条形码输入正确与否.程序运行时,从文本框Text1获取条形码数字部分,单击按钮Command1后,在列表框List1中输出结果.实现上述功能的VB代码如下,但加框处代码有错,请改正.
Private Sub Command1_Click ( )
Dim i As Integer,b As String,Lb As Integer
Dim s1As Integer,s2As Integer,tmp As Integer
Dim c As String
Dim d(1To 13)As Integer'存储数据
Dim res As String'存储结果
b=Text1.Text'输入
Lb=Len(b)
s1=0:s2=0
flag=True
res=“输入错误!”
If Lb=13Then
For i=1To 13
c=Mid(b,Lb-i+1,1)
If c>=“0”And c<=“9”Then
d(i)=Val(c)'输入转换
Else
flag=False:Exit For
End If
Next i
If flag Then
For i=2To Lb Step 2
s1=s1+d(i)'参数计算1
s2=
'参数计算2 ①
Next i
tmp=s1*3+s2
If tmp
Then res=“输入正确!”②
End If
End If
List1.AddItem res
End Sub.
【考点】进入VB程序设计环境;设计应用程序的界面.
【答案】见试题解答内容
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/4/20 14:35:0组卷:5引用:1难度:0.1
相似题
-
1.编写VB程序,功能是根据A城和B城同一时间段内的温度数据,计算两城温差(A城温度-B城温度)A城数据和B城数据分别为包含若干个记录的序列,其中,A城每个记录包含温度及其截止时间,B城每个记录包含温度及其持续时长。两城温差计算结果表示为若干个记录的序列,每个记录包含温差及其持续时长。持续时长是指同一温度(或温差)保持不变的最大时长。示例见下表。
时间 第1小时 第2小时 第3小时 第4小时 第5小时 第6小时 第7小时 A城温度 30 30 33 33 31 31 32 A城数据 温度 30 33 31 32 截止时间 2 4 6 7 B城温度 20 20 20 22 21 21 22 B城数据 温度 20 22 21 22 持续时长 3 1 2 1 计算结果 温差 10 13 11 10 持续时长 2 1 1 3
表中,A城数据有4个记录,其中第1个记录为(温度30,截止时间2),第2个记录为(温度33,截止时间4),这表明从开始到第2小时的温度都是30,此后到第4小时的温度都是33.B城数据有4个记录,其中第3个记录为(温度21,持续时长2),这表明第5、第6这2个小时的温度都是21.两城温差计算结果的第4个记录为(温差10,持续时长3),这表明第5、第6、第7这3个小时的温差都是10。
(1)若将示例中A城数据修改为3个记录,依次是(温度30,截止时间4)、(温度31,截止时间6)、(温度32,截止时间7),B城数据不变,则两城温差计算结果中第1个记录为(温差10,持续时长
(2)实现上述功能的VB程序如下,请在横线处填入合适的代码。
Const m=1000'温度数据和温差数据包含的记录数都少于1000
Dim na As Integer,nb as integer'A、B城数据分别有na和nb个记录
Dim ha(m)As Integer'ha(i)存储A城第i个记录中的温度
Dim ta(m)As Integer'ta(i)存储A城第i个记录中的截止时间
Dim hb(m)As Integer'hb(i)存储B城第i个记录中的温度
Dim tb(m)As Integer'tb(i)存储B城第i个记录中的持续时长
Dim h(m)As Integer'h(i)存储计算结果第i个记录中的温差
Dim t(m)As Integer't(i)存储计算结果第i个记录中的持续时长
Private Sub Command l _Click ( )
Dim i As Integer,j As Integer
Dim p0 As Integer,p1 As Integer,diff As Integer
Dim n As Integer'两城温差数据的记录个数
'读取两城数据,存入变量na,nb及数组ha,ta,hb,tb中,代码略
For i=2 To nb
tb(i)=①'将B城第i个记录中的持续时长转换为截止时间
Next i
i=1:j=1
n=0
p0=0
Do While i<na And i<=nb
diff ha(i)-hb(j)
pl=ta(i)
If ②Then i=i+1
If p1>=tb (j) Then
pl=tb(i)
j=j+1
End if
If n=0 Or diff<>h(n) Then
n=n+l
h(n)=diff
t(n)=pl-p0
Else
③
End If
p0=pl
Loop
'输出两城温差数据,代码略
End Sub发布:2024/6/27 10:35:59组卷:10引用:1难度:0.1 -
2.根据前面几题的分析发现,部分社团的选报人数超过了 40 人,由于人数太多不便于开展活动,学校团委决定将人数超过 40 人的社团随机分成两个班。小北使用链式结构实现了该分班功能。现以对“MULA 商社”进行分班为例(“MULA 商社.xlsx”文件截图如第 15 题图c 所示),具体实现程序如下,请在横线处填入合适的代码。
import pandas as pd
importrandom
df=pd.read_excel(“MULA 商社.xlsx“)
namelist=df.values.jye.ai( )#将数据转换成列表
#将数据转换成列表后,namelist=[[101,“邓**“,“MULA 商社“],„]
k=0
data=[[““fori in range(2)]for j in range(len(namelist))]
foriteminnamelist:#初始化链表结构
data[k][0]=item
data[k][1]=k+1
k+=1
①
head=0
n=length=len(data)#每次抽取时剩余人数
namelist1=[]
namelist2=[]
foriinrange(n//2+1):#生成 MULA 商社 1 班名单
t=random.randint(0,length-1)
p=head
q=data[p][1]
ift==0:
namelist1.jye.ai(data[head][0])
②
else:
while t!=1:#从头节点开始查找第 t 个节点所在位置
p=q
q=data[p][1]
t=t-1
namelist1.jye.ai(data[q][0])
③
length=length-1
#生成MULA 商社 2 班名单及将生成的两份名单保存成电子表格文件,代码略发布:2024/6/27 10:35:59组卷:1引用:1难度:0.3 -
3.小叶使用VB编写程序,功能如下:在文本框Text1中输入一个二进制或十六进制数,单击“转换”按钮Command1,在文本框Text2中显示该数对应的十进制数。程序运行界面如图所示。
(1)实现上述功能的VB程序如下,请在横线处填上合适的代码。
(2)运行程序,在文本框Text1中输入A2H,则在文本框Text2中显示发布:2024/6/27 10:35:59组卷:0引用:1难度:0.4