根據對分查找的思想來查找兩個遞增序列中最小值所在的位置,其中第一個遞增序列中的數據全部大于第二個遞增序列中的數據,且兩個序列中沒有重復數據,如組合序列3、4、5、6、1、2是由兩個遞增序列“3、4、5、6”和“1、2”組成的,組合序列的最小值是1,在組合序列中的位置是第5位。
為實現上述功能,小王編寫如下VB程序,首先在Text1中輸入兩個滿足條件的序列,數字之間用“,”隔開且以“,”結尾,單擊按鈕“Cod1”,在Text2中輸出最小值所在序列中的位置,程序運行界面如圖所示。
(1)在界面中,具有Caption屬性的對象有33個。
(2)在橫線處填入合適的代碼。
①c=c*10+Val(ch)c=c*10+Val(ch)。
②a(n)=ca(n)=c。
③jye.ai2.jye.ai=Str(i+1)或jye.ai2.jye.ai=Str(j+1)或jye.ai2.jye.ai=Str(m+1)jye.ai2.jye.ai=Str(i+1)或jye.ai2.jye.ai=Str(j+1)或jye.ai2.jye.ai=Str(m+1)。
(3)加框處的表達式有誤,請改正。
改正:i<ji<j
PrivateSubCod1_Click ( )
DimsAsString,chAsString
DimiAsInteger,jAsInteger,nAsInteger,cAsInteger
Dima(100)AsInteger
s=Text1.Text:c=0:n=0
Fori=1ToLen(s)
ch=Mid(s’i,1)
Ifch>=“0“Andch<=“9“Then
①
Else
n=n+1
②
c=0
EndIf
Nexti
i=1:j=n
DoWhile
m=(i+j)\2
Ifa(m)>a(i)Then
i=m
Else
j=m
EndIf
Loop
③
EndSub
【考點】查找算法及其程序實現.
【答案】3;c=c*10+Val(ch);a(n)=c;jye.ai2.jye.ai=Str(i+1)或jye.ai2.jye.ai=Str(j+1)或jye.ai2.jye.ai=Str(m+1);i<j
【解答】
【點評】
聲明:本試題解析著作權屬菁優網所有,未經書面同意,不得復制發布。
發布:2024/11/20 12:0:2組卷:0引用:1難度:0.3
相似題
-
1.某對分查找算法的VB程序段如下:
數組元素a(1)到a(10)的值依次為“12,15,18,20,25,39,47,88,90,99”,經過上述代碼查找后,下列表達式正確的是( )A.j<m-1 B.j=m C.i>m+1 D.i=m 發布:2024/12/20 16:0:2組卷:5引用:2難度:0.5 -
2.某數組d中的數據依次是[8,12,15,28,28,32,36,39],要查找某個元素是否在數組中,下列說法正確的是( )
A.數組中有相同數據28,所以只能使用順序查找 B.使用二分查找數據時,第1次查找的數據是d[3] C.使用二分查找任何查找鍵時,查找的次數最少3次 D.使用二分查找數據時,第2次查找的數據可能是d[1]或d[6] 發布:2024/12/20 0:0:1組卷:3引用:1難度:0.7 -
3.有如下對分查找VB程序段:
若數組元素a(1)~a(10)的值依次為“5,9,13,18,22,27,31,39,40,44”,運行程序后,文本
框Text2中顯示的內容為3,則輸入的key值不可能為( )A.5 B.13 C.39 D.40 發布:2024/12/20 20:0:2組卷:3引用:2難度:0.4