Private Sub Command1_Click()
Dim a(1 To 6) As Integer, b(1 To 6) As String, i as integer, j as integer
Dim c As String, k As Integer, tmp1 As Integer, tmp2 As String
s=text1.text
i = 1: k = 1: tmp1 = 0: tmp2 = ""
Do While i <= Len(s)
c = Mid(s, i, 1)
If c = "," Then
a(k) = tmp1: b(k) = tmp2
tmp1 = 0: tmp2 = ""
①
Else
If Then
tmp2 = tmp2 + c
Else
tmp1=tmp1*10+val(c)
End If
End If
i = i + 1
Loop
For i = 1 To 5
For j = 1 To 6 - i
If a(j) > a(j + 1) Then tmp1 = a(j): a(j) = a(j + 1): a(j + 1) = tmp1
If Len(b(j)) > Len(b(j + 1)) Or ② Then
tmp2 = b(j): b(j) = b(j + 1): b(j + 1) = tmp2
End If
Next j
Next i
For i = 1 To 6
List1.AddItem Str(a(i)) + b(i)
Next i
End Sub
① ②
Private Sub Command1_ Click( )
Dim n As Integer, i As Integer
Dim a(1 To 50) As Integer
Randomize
For i=1 To 5
①
List1 AddItem Str(a(i))
Next i
If a(1) < a(2) Then
firstmin=a(1)
secondmin =a(2)
Else
firstmin=a(2)
secondmin=a(1)
End if
For i=3 To 50
If a(i) < secondmin Then
If ② then
Secondmin = firstmin
firstmin = a (i)
Else
③
End If
End If
Next i
Label1. Caption = "第二小的数是" str(secondmin)
End Sub
① ② ③
程序功能如下:在文本框Text1中输入一个二进制数据,单击“消除”按钮 Command1,将二进制数据中相邻重复的数据大于或等于2的消除掉,并将结果在标签 Label1中显示。程序运行界面如图所示。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click ( )
Dim a (100) As String, b (100) As String
Dim n As Integer
Dim pa As Integer
Dim pb As Integer
s = Text1, Text
n = Len (Text1. Text)
For i= 1 To n
a(i) = Mid(s, i, 1)
Next i
pa =1 : pb = 1
Do While pa < = n-1
If Then ‘①
b(pb) = a(pa)
pa= pa + 1: pb = pb + 1
Else
j = pa+1
Do While j < = n
If Then ‘②
j=j+1
Else
Exit Do
End if
Loop
pa = j
End if
Loop
If pa =n Then b (pb) = a(pa): pb = pb + 1
ans = “”
For i= 1 To pb-1
‘③
Next i
Label1. Caption = "消除后的结果为:" + ans
End Sub
① ② ③
Dim a(1 To 5) As Integer
a(1) = 1
For i = 2 To 5
a(i) = Int(Rnd * 5) + 1
If a(i) Mod 2 = 0 Then
a(i) = a(i) + i
Else
a(i) = a(i) + a(i - 1)
End If
Next i
a(1)~a(5)的值不可能的是:( )
编码中位 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
对位信息 |
p1 |
p2 |
b1 |
p3 |
b2 |
b3 |
b4 |
校验的方式如下,求校验值g1、g2、g3:
g1 = p1 Xor b1 Xor b2 Xor b4
g2 = p2 Xor b1 Xor b3 Xor b4
g3 = p3 Xor b2 Xor b3 Xor b4
其中Xor 为异或运算,规则是:0 Xor 0 =0,0 Xor 1 =1,1 Xor 0 =1,1 Xor 1 =0,p1 Xor b1 是将p1、b1 转换为二进制后按位进行异或运算,如7 Xor 12 的结果为11。
a.若计算得到的校验值g1、g2、g3 均为0,说明校验正确,数据无错误。例如:若7 位编码为1101001,计算校验值g1、g2、g3 值均为0,验证正确。
b.若校验值g1、g2、g3 不全为0,说明数据有错,出错位置为g3g2g1(二进制数表示),纠错的方法是对错误的位进行取反,即“0”变“1”,“1”变“0”。例如:若7 位编码为1111001,计算校验值g1=1、g2=1、g3=0,不全为0,说明数据有错,错误位置在011(二进制数)位,即第3位,原位置上“1”应为“0”,正确编码为1101001。
小明为此编写了VB 程序,程序运行时,在文本框Text1 中输入编码值,单击“校验”按钮Command1 后,在文本框Text2 中输出运行结果,如图所示。
实现上述功能的 VB 程序如下,请回答下列问题:
Function check(s As String) As Integer
Dim i As Integer, g1 As Integer, g2 As Integer, g3 As Integer
Dim c(1 To 7) As Integer
For i = 1 To 7
c(i) = Val(Mid(s, i, 1))
Next i
g1 = c(1) Xor c(3) Xor c(5) Xor c(7)
g2 = c(2) Xor c(3) Xor c(6) Xor c(7)
g3 = c(4) Xor c(5) Xor c(6) Xor c(7)
If g1 + g2 + g3 = 0 Then check=0 Else check= ①
End Function
Private Sub Command1_Click()
Dim i As Integer, m As Integer, Outs As String
m= ②
If m = 0 Then
Text2.Text = “验证正确,数据无错误”
Else
For i = 1 To 7
If i = m Then
Outs=Outs+ ③
Else
Outs = Outs + Mid(Text1.Text, i, 1)
End If
Next i
Text2.Text = “第” + Str(m) + “位上数据有错误,正确编码应为:” + Outs
End If
End Sub
① ② ③
加框处改正:
每项任务有一个紧急程度,用数字表示,数字越大紧急程度越高。紧急程度最高的任务优先执行,紧急程度相同先出现先执行。若某项任务在执行过程中出现了一个紧急程度更高的任务,则正在执行的任务将被暂停,执行该紧急程度更高的任务。
编写VB程序,功能如下:程序运行时,各项任务数据按出现时刻升序显示在列表框List1中,单击“开始”按钮Command1,按照任务完成的先后顺序,在列表框List2显示每项任务的编号以及完成时刻。程序运行界面如图所示:请回答下列问题:
1号任务:时刻1出现,完成所需时长4,紧急程度1
2号任务:时刻2出现,完成所需时长2,紧急程度2
3号任务:时刻7出现,完成所需时长1,紧急程度3
则这3个任务的完成的顺序为(单选,填字母:A . 1号、2号、3号 /B . 2号、3号、1号 / C . 2号、1号、3号)。
Dim id(0 To 100) As Integer '任务编号
Dim t(0 To 100) As Integer '出现时刻
Dim L(0 To 100) As Integer '完成所需时长
Dim v(0 To 100) As Integer '紧急程度
Dim n As Integer '总任务数
Private Sub Form_Load()
'本过程读取任务编号、出现时刻、完成所需时长和紧急程度的数据分别存储在数组 id,t,L和v中,并在List1中显示,代码略
End Sub
Private Sub Command1_Click()
Dim q(0 To 100) As Integer 'q 数组按优先顺序存储已出现的任务编号
Dim k As Integer, i As Integer, j As Integer, cur As Integer
cur = 0: k = 0 'cur 记录当前时刻
For i = 1 To n
Do While k > 0 And t(i) >= cur + L(q(k)) '新的任务出现时,计算并输出已经完成的任务编号
List2.AddItem adj(2, (id(q(k)))) + adj(6, cur + L(q(k)))
cur = cur + L(q(k))
k = k - 1
Loop
If k > 0 Then L(q(k)) = '更新正在执行的任务的完成所需时长
k = k + 1
j = k
Do While v(q(j - 1)) >= v(i)
q(j) = q(j - 1)
j = j - 1
Loop
q(j) = i
Next i
Do While
List2.AddItem adj(2, id(q(k))) + adj(6, cur + L(q(k)))
cur = cur + L(q(k))
k = k - 1
Loop
End Sub
Function adj(x As Integer, v As Integer) As String
'adj可以通过添加前置空格将v转化为x位长度的字符串,便于输出对齐,代码略
End Function
Dim a(1 To 10)As Integer
Dim i As Integer, j As Integer
a(1)=1:a(2)=1
For i=3 To 5
a(i)=1
For j=i-1 To 2 Step-1
a(j)=a(j)+a(j-1)
Next j
Next i
Text1.Text=Str(a(3))
①网状模型 ②层次模型 ③关系模型 ④面向对象模型
L=2: R=6
Do While L = R
If Then
t = a(L): a(L) = a(R): a(R)= t
Else
End If
Loop
t = a(R): a(R) =a(1): a(1)=t
上述程序段中方框处可选语句为:( )
① a(L) > a(1) ② a(L) > a(R) ③R = R - 1 ④L = L + 1
Const n = 7
Dim a(1 To 7) As Integer
Dim flag(1 To 7) As Integer 'flag 数组初始值均为 0 Dim k As Integer, t As Integer
a(1) = 18: a(2) = 34: a(3) = 56: a(4) = 23: a(5) = 29: a(6) = 39: a(7) = 72 k = (1 + 7) / 2
For i = 1 To n
For j = 1 To n
If a(j) > a(k) And flag(j) = 0 Then t = a(j): a(j) = a(k): a(k) = t
Next j
flag(k) = 1
k = (k + 5) Mod 7 + 1
Next i
执行该段程序后,数组元素a(1)到a(7)的值为( )
Dim a(1 To 6) As Long, i As Integer, x As Long, y As Long
x = 654321
For i = 1 To 6
a(i) = x Mod 10
x = x \ 10
y = y + a(i) * 10 ^ (6 - i + 1)
Next i
执行该程序段后,变量y的值为( )
n = 0
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
If c >= “0” And c <= “9” Then m = 1 Else m = 2
a(m) = a(m) + 1
If a(m) = 1 Then n = n + 1
Next i
数组a各元素的初始值都为0,文本框Text1的内容为“Happy2018”。执行程序后,变量n的值为( )
张老师想了解每个小方格被多少块地毯覆盖,以便更好地调整地毯铺设位置,他编写了VB程序,实现以下功能:在文本框Text1中输人行数m,在文本框Text2中输入列数n,在Text3中输入每块地毯铺设的坐标x1,y1,x2,y2……坐标之间逗号分隔,地毯数量不超过100),单击计算按钮Commmand1,在列表框List1中显示每个小方格被多少块地毯覆盖。程序运行界面如图所示。
Dim m As Integer
Dim n As Integer
Dim a, b, C, d As Integer
Dim flag(0 To 10000) As Integer
Dim sum(0 To 10000) As Integer
Dim pos(0 To 100) As Integer
Private Sub Command1_Click()
List1. Clear
m = Val(Text1. Text)
n = Val(Text2. Text)
s = Text3. Text
'读取每块地毯坐标,并按顺序存储在pos数组中
'地毯总数量存储在变量k中
For i=1 To k
a= pos(i * 4- 3):b= pos(i * 4- 2):c= pos(i * 4- 1):d= pos(i * 4)
Next i
For i=1 To m
For j=1 To n
sum((i- 1) *n+ j) = sum((i- 1) * n+ j- 1) + flag((i- 1)*n+ j)
s=s+Str(sum((i-1)*n+j))
Next j
List1. AddItem s
Next i
End Sub
Sub add (ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
'按行标记地毯铺设情况
For i=x1 To x2
flag((i - 1) * n + y1) = flag((i- 1)*n+y1) + 1
Next i
End Sub
m1=0:m2=0
For i=1 To n * 2 Step 2
If a(i)>a(i+1)Then
t1=a(i):t2=a(i+1)
Else
t1=a(i+1):t2=a(i)
End If
If Then
m1=t1:m2=t2
ElseIf Then
m2=m1:m1=t1
ElseIf Then
m2=t1
End If
Next i
上述程序段中方框处可选代码为:①t1>m1 ②t1>m2 ③t2>m1
则(1)(2)(3)处代码依次为( )