Private Sub Command1_Click()
Dim a(1 To 10) As Integer
Dim s As Integer
Dim max As Integer
n = Val(Text1.Text)
i = 1
Do While i <= n
a(i) = Int(Rnd * 100)
List1.AddItem Str(a(i))
s = s + a(i)
①
Loop
max = a(1)
For i = 2 To n
If a(i) > max Then ②
Next i
List1.AddItem "和为:" + ③
List1.AddItem "最大值为:" + Str(max)
End Sub
供①②选填:
a.n=n+1 b. i=i+1 c.max=a(i) d. a(i)=max
空格③处应填写的代码为:。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, sum As Integer
Dim n As Integer
n = Val(Text1.Text)
sum = 0
List1.Clear
For i = 1 To n ' ①
j = i - 1
Do While sum <= n ' ②
j = j + 1
sum = sum + j
Loop
If sum = n Then
List1.AddItem Str(i) & " + ... +" & Str(j) & "=" & Str(n)
End If
sum = 0
Next i
End Sub
① ②
程序界面如图所示:
Dim a(1 To 10)As Integer
Function find(L As Integer,R As Integer,key As Integer)As Integer
If L>R Then
find=0:Exit Functionhp
ElseIf a(L)>=key Then
find=L:Exit Function
Else
①
If a(M)<key Thenhp
find=find(M+1,R,key)
ElseIf ② Then
find=find(L,M-1,key)
Else
find=M
End If
End If
End Function
Private Sub Command1 Click()
Dim k As Integer
Dim P As Integer
k=Val(Text1.Text)
③
Text2.Text=a(P)
Text3.Text=Str(P)
If p=0 Then
Text2.Text=“无”
End If
End Sub
Private Sub Form Load()
a(1)=3:a(2)=3:a(3)=3:a(4)=4:a(5)=7:a(6)=7
a(7)=10:a(8)=13:a(9)=19:a(10)=21
For i=1 To 10
List1.AddItem Str(a(i))
Next i
End Sub
① ② ③
Const n = 10
Dim a (1 To n) As Integer ‘保存原始数据
Dim b(1 To n ) As Boolean ‘数组b用来标记相应的位置有没有找过
Private Sub Command1 _ Click ()
Dim i As Integer , sum As Integer , total As Integer
sum = 0: total = 1 ‘total 表不第几组
i = 1
List 2.Addltem “第”& Str (total) & “组”
Do While sum < n
Do While Not b (i)
List 2.Addltem a (i)
b(i) = True
sum = sum + 1
Loop
If sum < n Then
total = total + 1
List 2.Addltem “第” & Str ( total ) &■“组”
i = 1
Do While b(i) ‘该循环用来查找下一组的开始位置
Loop
End If
Loop
End Sub
Private Sub Form _ Load ()
Dim i As Integer
Randomize
For i = 1 To n ‘产生 n 个不一样的整数,范围为[ 1, n ]
a(i) = Int(Rnd * n ) + 1
Do While
a (i) = Int(Rnd * n ) + 1
Loop
Next i
For i = 1 To n
List1.Addltem a (i)
b (i) = False
Next i
End Sub
Function f(x As Integer , y As Integer ) As Boolean
‘该函数的功能:判断x和数组a中前y个数有没有重复,有重复返回值True,否则False
End Function
i=1:j=7:x=45
Do While i <= j
m = (i + j) \ 2
If a(m) = x Then Exit Do ‘Exit Do 退出 Do 循环
If a(m) > x Then
j = m - 1
Else
i = m + 1
End If
Loop
执行完上述代码后,根据最终变量值判断下列表达式,其中成立的是( )
Dim a(1 To 6)As Integer, I AS Integer, maxi As Integer
a(1)=12:a(2)=8:a(3)=14:a(4)=13:a(5)=12:a(6)=11
Maxi=1
For i=2 To 6
If a(i)>a(maxi)Then maxi=i
Next i
a(1)=a(1)+a(maxi):a(maxi)=a(1)-a(maxi):a(1)=a(1)-a(maxi)
执行该程序段后,数组元素a(1)~a(6)的值是( )
步骤1:如果待筛选的玻璃球个数小于或等于,则认定已经找出了这颗玻璃球(认定方法参照步骤2中描述),停止筛选,并输出筛选总次数;否则,重复执行步骤2。
步骤2:按编号依次将玻璃球均分成3份,如果有多余的则放入第3份中。比较第1、2份的玻璃球质量:
①如果第1份等于第2份的质量,则选取第3份的玻璃球作为下一次筛选的对象;
②如果第1份小于第2份的质量,则选取第1份的玻璃球作为下一次筛选的对象;
③如果第1份大于第2份的质量,则选取第2份的玻璃球作为下一次筛选的对象。
重复执行步骤1。
例如:第1次筛选的小球编号区间是1~100,均分成3份的待称重小球编号分别是1~33、34~66、67~100;第2次则选取以上3份的其中一份进行再筛选、再均分,……,直至找到。
解决上述问题的VB程序功能如下:运行程序,在列表框List1中显示100组数据,每组数据分别代表每个编号及对应的小球质量(其中有且只有一个小球的质量与其他小球不同),单击“查找”按钮 Command1,在列表框List2中显每次筛选的编号区间和完成筛选的总次数。程序运行界面如图所示。
Const maxn = 100
Dim a (1 To maxn) As Integer
Dim w (1 To 2) As Integer ‘ 数组w用来存储第1份和第2份小球的质量
Private Sub Form Load ( )
‘ 此处代码用来模拟产生100个小球的质量,分别存储在数组元素a(1)~a(100)中
‘ 其中只有1个小球的质量为8,随机存储在数组a的某元素中,其余质量均为10
‘ 此处代码略
End Sub
Private Sub Command1_Click( )
Din 1eft As Integer, right As Integer ‘ left为起始编号, right为结束编号
Dim s As Integer, C As Integer ‘s 为每次查找的区间长度
left = 1:right = maxn
c = 1:s = right:i = 0
List2 AddItem Str(i+1) +"---->” + Str(maxn)
Do While right - left > =3
w(1) = o:w(2) = 0:k =1
i = left
s = ①
Do While i < = (s \3)*2 + left -1
‘Do语句用于将待筛选的数据进行区域划分
w(k) = w(k)+a(i)
If i = (s\3)*k+ left -1 Then k = k+1
i = i+1
Loop
If w(1) = w(2) Then
left = left + (s\3)*2
ElseIf w(1) < w(2) Then
②
Else
right = left+(s\3)
left =s\3+ left
End If
③
List2. AddItem Str (left) & ”---->” & str(right)
Loop
List2. AddItem "经过”+s tr(c) +" 次后找到”
End sub
① ② ③
key = Val (Text1. Text)
i = 1: j = n
Do While i < = j
m = (i+j) \2
If a(m) > key Then
j = m - 1
ElseIf a(m) < key Then
i = m + 1
Else
if Then
j = m-1
Else
Label2. Caption = str(key) +“的起始位置是”+ str(m)
Exit Do
End If
End if
Loop
If i > j Then
Label2. Caption = “找不到” + str(key)
End If
要使程序实现上述算法思想,则方框中的正确语句是( )
key = Val(Text1.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If a(m) > key Then
j = m - 1
ElseIf a(m) < key Then
i = m + 1
Else
If Then
j = m - 1
Else
Label2.Caption = Str(key) + "的起始位置是" + Str(m)
Exit Do
End If
End If
Loop
If i > j Then
Label2.Caption = "找不到" + Str(key)
End If
要使程序实现上述算法思想,则方框中的语句是( )
Dim a(1 To 10)As Integer
Private Sub Form_Load()
a(1)=2: a(2)=3: a(3)=3: a(4)=3: a(5)=3
a(6)=6: a(7)=7: a(8)=7: a(9)=8: a(10)=9
End Sub
Private Sub Command1_Click()
Dim key As Integer, i As Integer, j As Integer
Dim m As Integer, p As Integer
key=Val(Text1.Text)
i=1: j=10
Do While i<=j
m=(i+j)\2
If a(m)= key Then
p=m
j=m-1
ElseIf key<a(m)Then
j=m-1
Else
i=m+1
End If
Loop
Text2.Text=Str(p)
End Sub
程序运行时,在文本框 Text1中输入3,单击按钮,文本框Text2中显示的内容是( )
i |
1 |
2 |
3 |
4 |
5 |
a |
98 |
95 |
92 |
90 |
87 |
m |
1 |
2 |
1 |
2 |
1 |
mc |
1 |
2 |
4 |
5 |
7 |
程序界面如下图所示,在文本框Text1中输入查询成绩,点击“查找”按钮,若找到,则输出该分数的名次和同分数的人数,若找不到,则输出“查无此分”。
程序代码如下,请在划线处填入合适的代码。
Dim n As Integer
Dim a(1 To 1000) As Integer ‘存放不同的分数值
Dim m(0 To 1000) As Integer ‘存放相同分数的人数
Dim mc (0 To 1000) As Integer ‘存放此分数的名次
Private Sub Form_Load()
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
Dim tmp As Integer
Dim s As Integer
tmp = -1: n = 0
conn. Connectionstring = “provider=Microsoft. ACE.OLEDB. 12. 0; data source=”& App. Path & “\mydb. accdb”
conn. Open
Set rs. ActiveConnection = conn
rs.Open "Select * from score"
mc(0) = 1: m(0) = 0
Do While Not rs. EOF
s = rs. Fields (“成绩”)
If s = tmp Then ‘当前读入分数与上一个分数相同
m(n) = ①
Else
n = n + 1
a(n) = s
m(n) = 1
mc(n) = ②
End If
③
rs. MoveNext
Loop
End Sub
Private Sub Command1_Click0
Dim key As Integer, i As Integer, j As Integer, mid As Integer
key = Val (Text1.Text)
i = 1: j = n
mid = (i + j) \ 2
Do While i <= j And ④
mid = (i + j) \ 2
If a(mid) < key Then
j = mid – 1
Else
i = mid + 1
End If
Loop
If a(mid) = key Then
Label2. Caption = “名次: ”+ Str(mc (mid)) + “同分人数: ”+ Str(m(mid))
Else
Label2. Caption =“查无此分”
End If
End Sub
① ② ③ ④
i=1: j=8: c=0
Key=Val(Text1.Text)
Do While i<= j
m=Int((i+j)/2)
t=b(m)
c=c+1
If a(t)=Key Then p=t: Exit Do
If a(t)< Key Then
i=m+1
Else
j=m-1
End If
Loop
当文本框Text1输的值为32时,程序运行结束后变量c的值是( )
temp = Val(Text1.Text)
If temp <= a(n) Then
a(n + 1)= temp
Else
left= 1: right= n
Do While left <= right
mid = (left + right) \2
If ① Then right= mid- 1 Else left= mid+ 1
Loop
For j= n To left Step-1
②
Next j
③
End If
则横线①②③上的语句分别是( )
s = 0: i = 1: j = 11
Do While i <= j
m = (i + j) \ 2
If Key > a(m) Then
i = m + 1: s = 2 * s + 1
Else
j = m - 1: s = 2 * s
End If
Loop
Text2.Text = Str(s)
数组a(1)到a(11)的值依次为“2,13,24,31,35,44,47,50,61,88,101”,在文本框Text1中输入下列选项值,所得输出结果与其他三项不相同的是( )
Const n = 100
Dim a(n) As Integer
Private Sub Form_Load()
′产生n个2位正整数,并显示在文本框Text1中,代码略
End Sub
Private Sub Command1_Click( )
Dim i As Integer, j As Integer, left As Integer
Dim right As Integer, m As Integer, t As Integer
i = n-1
Do While i > = 1
________
right = n
t = a(i)
Do While left < = right
m = Int((left + right)/2)
If a(m) = t Then right = m: Exit Do
If a(m) < t Then
left = m + 1
Else
right = m-1
End If
Loop
For j = i To right-1
a(j) = a(j + 1)
Next j
________________
i = i-1
s = “”
For j = 1 To n
s = s + Str(a(j))
Next j
List1.AddItem s
Loop
End Sub
L=1: R=10: n=10: key=78
Do While L<=R
m=Fix((L+R)/2)
If Then
R=m-1
Else
L=m+1
End If
Loop
For i=1 To R
List1.Additem Str(a(i))
Next i
数组元素a(1)到a(10)的值依次为86,78,78,77,73,69,60,54,54,51,若执行该程序段后,列表框List1中输出的数据个数为3,则方框处的代码为( )
key = Val(Text1.Text)
s="" :i=1;j= 10
Do While i<=j
m=(i+j)\2
If a(m)= key Then Exit Do 'Exit Do表示退出循环
If key < a(m) Then
j=m-1:s=s+"L"
Else
i=m+1 :s=s+ "R"
End If
Loop
按非降序排序的整型数组a(1)到a( 10)的值依次为“11,23,31,39,44,52,60,x,69,89”。在文本框Text1中输入66,执行该程序段后s值为“RRL”,则x的可能值的个数为( )
for i=1 to 8
if then
Text1.text=str(i)
exit for
end if
next i
if then
text1.text=″在数组中没有找到″+str(key)
end if