编写一个查找最接近的数的VB程序:程序运行时,在文本框Text1中输人产生随机数的个数(1到100之间),单击命令按钮“产生随机数并升序排列”后,在列表框List1中显示已经按升序排列后的随机整数,然后在文本框Text2中输入要查找的整数,单击命令按钮"查找"后,在标签Label3中显示随机整数序列中与待查找数最接近的整数(当最接近的数有2个时,输出较大的一个)。程序运行效果如图所示:
实现上述功能的VB代码如下,请在横线处填入合适代码。
Dim n As Integer '存储随机数的个数
Dim f(1To100)As Boolean
'f(i)为True时表示随机整数i已经产生过
Dim a(1 To 100)As Integer
'依次存放升序排序后的n个随机数
Private Sub Command1_Click()
'命令按钮“产生随机数并升序排列”的单击事件
Dim i As Integer
Randomize
For i=1 To 100
f(i)=False
Next i
n=Val(Text1. Text)
For i=1 To n
t=Int(Rnd * 100+1)
Do While f(t)=True
t=Int(Rnd * 100+1)
Loop
{#blank#}1{#/blank#}
Next i
j=0
For i=1 To 100 '实现排序并输出
If f(i)=True Then
{#blank#}2{#/blank#}
a(j)=i
List1.AddItem Str(i)
End If
Next i
End Sub
Private Sub Command2_Click()
'命令按钮“查找”的单击事件
Dim key As Integer
key=Val(Text2. Text)
If key <=a(1) Then Label3. Caption=Str(a(1)): Exit Sub
If key >=a(n) Then Label3. Caption=Str(a( n)): Exit Sub
L=1: R=n
Do While L<=R '找到与 key 较为接近的两个数a(R)和a(L)
m=(L+R)\2
If key<=a(m)Then
R=m-1
Else
L=m+1
End If
Loop
If {#blank#}3{#/blank#}Then
'在a(R)和 a(L)中选出更接近key的数
Label3. Caption=Str(a(R))
Else
Label3. Caption=Str(a L))
End If
End Sub