
程序代码中,语句加框处有错,请改正。
Private Sub Command1_Click()
Dim s As String, sum As Integer
Dim i As Integer, j As Integer
List1.Clear
s = Text1.Text
n = len(s)
sum = 1 ’(1)________
For i = 1 To n
For j = 1 To n-i+1
List1.AddItem Mid(s,i,j) ’(2)________
sum = sum + 1
Next j
Next i
List1.AddItem "总共有" + Str(sum) + "个子串"
End Sub

(1)在窗体中要显示玫瑰花图像(文件名为flower.bmp),需添加图像框image1,并设置其________属性(单选,填字母:
A.Image/ | B.Pictrue/ | C.Caption/ | D.Text)的值为“flower.bmp”。 |
Private Sub Command1_Click()
Dim sum As Integer, a As Integer, b As Integer
Dim i As Integer, c As Integer, d As Integer
List1.Clear
sum = 0 '玫瑰花个数
For i = 1000 To 9999
a = i Mod 10 '求个位上的数字
b = ①______ '求十位上的数字
c = i \ 100 Mod 10 '求百位上的数字
d = i \ 1000 '求千位上的数字
If a ^ 4 + b ^ 4 + c ^ 4 + d ^ 4 = i Then
List1.AddItem Str(i)
②________
End If
Next i
Label1.Caption = "玫瑰花个数为:" + Str(sum)
End Sub
(3)解决该问题主要采用的算法是________
A.a≥b and a <c | B.a>=b or a <c |
C.a>=b and a <c | D.a≥b or a <c |
(加试题)某排序算法如下:每一趟将一个待排序数据,按其值的大小使用对分查找思想在已排序序列中找到合适位置并插入,将所有待排序数据全部插入即完成排序。实现该算法的程序如下:在列表框List1中显示待排序数据,单击“排序”按钮Command1后,逐行显示排序过程。程序运行结果如图所示。

实现上述功能的VB程序如下,加框处代码有错,请改正。
Const n = 10 '变量n存储待排序数据个数
Dim d(1 To n) As Integer '数组d存储待排序数据
Private Sub APrint()
'本过程实现在列表框一行中输出数组d各个元素的值,代码略。
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, tmp As Integer
Dim m As Integer, low As Integer, high As Integer
'先将待排序数据存储在数组d中,代码略。
List1.AddItem "-----------待排序数据------------"
Call Aprint '在列表框List1中输出数组d的各个元素的值
List1.AddItem "-----------数据排序过程------------"
For i = 2 To n
tmp = d(i)
low = 1
high = n '(1)_____________
Do While low <= high
m = (low + high) \ 2
If tmp <= d(m) Then
high = m - 1
Else
low = m + 1
End If
Loop
For j = i - 1 To low Step -1
d(j + 1) = d(j)
Next j
d(low) = d(i) '(2)______________
Call APrint
Next i
End Sub
A..vbp、.frm、.exe | B..vbp、.exe、.txt |
C..txt、.frm、.exe | D..vbp、.txt、.frm |
分数 | 100 | 99 | 98 | 97 | 96 | 95 | 94 | … | 0 |
个数(A数组) | 2 | 0 | 0 | 0 | 1 | 0 | 3 | … | 0 |
名次(B数组) | 1 | | | | 3 | | 4 | … | |
程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)如上表所示,若分数93的个数为2,则该分数对应的名次为_____________。
(2)请在划线处填入合适的代码。
Dim sName(1 To 50) As String '存放学生姓名
Dim sScore(1 To 50) As Integer '存放学生分数
Dim recCount As Integer '存放学生人数
Private Sub Form_Load()
'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示
'代码略
End Sub
'整数转换成长度固定的字符串
Function ads(x As Integer, n As Integer) As String
Dim sx As String, nx As Integer, i As Integer
sx =" Str(x):" nx = Len(sx)
For i =" 1" To n - nx
sx = " " + sx
Next i
__________①
End Function
Private Sub Command1_Click()
Dim A(0 To 100) As Integer '存放每个分数的个数
Dim B(0 To 100) As Integer '存放每个分数的名次
Dim mc As Integer, score As Integer, i As Integer
For i =" 0" To 100
A(i) = 0
Next i
For i =" 1" To recCount '计算每个分数的个数
___________②
Next i
mc = 1
For i =" 100" To 0 Step -1 '计算每个分数的名次
If A(i) <> 0 Then
B(i) = mc
___________③
End If
Next i
List2.Clear
List2.AddItem " 姓名 分数 名次 "
List2.AddItem " ---------------- "
For i =" 1" To recCount
score = sScore(i)
mc = B(sScore(i))
List2.AddItem sName(i) + ads(score, 5) + "第" + ads(mc, 3) + "名"
Next i
End Sub
某编码由4 个信息位和3 个校验位组成,通过对编码信息进行验算,能够检测并纠正一位错误代码。该7 位编码中b1~b4 为信息位,p1~p3 为校验位,位置如下:
编码中位 | 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。
(1)若计算得到的校验值g1、g2、g3 均为0,说明校验正确,数据无错误。例如:若7 位编码为1101001,计算校验值g1、g2、g3 值均为0,验证正确。
(2)若校验值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 程序如下,请回答下列问题:
(1)若按上述规则的7 位编码为1001000,其中一位有错,则正确的编码应为______________________。
(2)请在划线处填入合适的代码。
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 + Chr( Asc(Mid(Text1.Text, i, 1)) Xor ③__________)
Else
Outs = Outs + Mid(Text1.Text, i, 1)
End If
Next i
Text2.Text = "第" + Str(m) + "位上数据有错误,正确编码应为:" + Outs
End If
End Sub

转换方法:先从右往左将二进制数分割成 4 位一组,若最左边的一组不足4位,则用 0 将高位补足,然后将每 4 位二进制数转换为 1 位十六进制数。
(1)观察程序代码,可知“转换”按钮的对象名为____________。(单选,填字母:
A.TextB/ B.TextH/ | B.Command1/ | C.Convert/ | D.转换) |
Private Sub Convert_Click()
Dim a(1 To 100) As Integer, temp As Integer
Dim s As String, res As String, n As Integer, r As Integer
res = ""
s=TextB.text
n = Len(s)
For i = 1 To n
a(i) = Val(Mid(s, i, 1))
Next i
t = n \ 4
r = ①
temp = 0
For i = 1 To r '将最高的 r 位转换为十六进制
②
Next i
If temp > 9 Then
res = Chr(temp + 55)
ElseIf temp > 0 Then
res = CStr(temp) ‘Cstr()函数用于将数值转换为字符串,同时删除前导空格
End If
For i = 1 To t '将t组4位二进制转换为十六进制
Temp=0
For j=1 to 4
temp = temp+a(j+r+4*(i-1))*2^(4-j)
Next j
If temp > 9 Then
res = res + Chr(temp + 55)
Else
res = res + CStr(temp)
End If
Next i
TextH.Text = res
End Sub
第①处代码为______________________________________________
第②处代码为______________________________________________
(3)若在文本框 TextB 中输入“101000111”,则单击”转换”按钮后的输出结果为:_________。
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。

Const n = 10
Dim a(1 To n) As Integer,b(1 To n) As Integer
Private Sub Form_Load()
'各产生 10 个随机整数存数组 a、b,并在列表框 list1 中显示,代码略。
End Sub
Private Sub command1_Click()
Dim i As Integer, j As Integer
i = 1
Do While i <= n - 1

Do While j >= i + 1
If a(j) < a(j - 1) Then
temp = a(j): a(j) = a(j - 1): a(j - 1) = temp
temp = b(j): b(j) = b(j - 1): b(j - 1) = temp

temp = a(j): a(j) = a(j - 1): a(j - 1) = temp
temp = b(j): b(j) = b(j - 1): b(j - 1) = temp
End If
j = j - 1
Loop
i = i +1
Loop
For i = 1 To n
List2.AddItem Str(a(i)) + " " + str(b(i))
Next i
End Sub

