i=1:j=n
Do While i+1<j
m=(i+j)\2
If a(m+1)-a(m)>a(m)-a(m-1)Then
Else
End If
Loop
Label1.Caption=“相邻两个元素的最大差值是”+Str(a(j)-a(i))
上述程序段中两个方框处的语句分别应为( )
a(1) |
a(2) |
a(3) |
… |
a(n-2) |
a(n-1) |
a(n) |
3 |
25 |
38 |
… |
55 |
31 |
12 |
依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有误,请改正。
Private Sub Command1_Click( )
Const n=6
Dim a(1 To n)As Integer,flag As Boolean
Dim i As Integer, j As Integer, m As Integer, key As Integer
‘读取一组正整数,按上述规则存入数组a中,代码略
key=Val(Text1.Text)
i=1
j=(n+1)\2
flag=False
Do While And Not flag ‘①
m=(i+j)\2
If key=a(m)then
flag=True
Elself key <a(m)then
j=m-1
Else
i=m+1
End If
Loop
If Not flag And j>0 Then
‘②
If key=a(m)Then flag=True
End If
If flag Then
Text2.Text=Str(m)
Else
Text2.Text= "找不到"
End If
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①________;②________。
Dim a(1 To 100)As Integer
Const n=100
Private Sub Command1_Click( )
Dim key As Integer, left As Integer, right As Integer, mid As Integer
Dim flag As Boolean
flag=False:key=Val(Text1. Text)
For i=1 To n-1
‘①
right=n
Do While ‘②
mid=(left +right)\2
If a(i)+a(mid)<key Then
left=mid+1
ElseIf a(i)+a(mid)>key Then
right=mid-1
Else
List1. AddItem Str(a(i))&" "&. Str(a(mid))
flag=True
End If
Loop
Next i
If Not flag Then List1.Addltem"没有符合条件的数对"
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①________;②________。
i=1:i=7:s=""
Key=Int(Rnd*100)
Do While i<=j
m=(i+j)\ 2
If Key=a(m)Then
s=s+ "M":Exit Do ‘Exit Do表示退出循环
ElseIf Key<a(m)Then
j=m-1:s=s+"L"
Else
i=m+1:s=s+"R"
End If
Loop
Text1.Text=s
数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是( )