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中顯示的內容可能是( )
Key=Val(Text1.Text)
i=1:j=6
n=0:f=False
flag=False
Do While i<=j And Not f
n=n+1
m=Int((i+j)/2)
If key=a(m)Then f=True
If key <a(m)Then j=m-1 Else i=m+1
Loop
若數組元素a(1)到a(6)的值依次為“3,9,12,17,28,39”,在文本框Text1中輸入17后運行該程序,則以上程序段運行結束后,下列說法不正確的是( )
Key=Val(Text1.Text)\10
Text2.Text=""
i=1:j=9:f=False
Do While i<=j And Not f
m=(i+j)\2
If a(m)Mod 10=Key Then
search=m:f=True
ElseIf a(m)Mod 10>Key Then
i=m+1
Else
j=m-1
End If
Text2.Text=Text2.Text+Str(m)
Loop