shifouzhaodao = False ‘shifouzhaodao:是否找到
szysxh = 0 ‘szysxh:数组元素序号
Do While szysxh < 5 And not shifouzhaodao
szysxh = szysxh + 1
if dczsz(szysxh) = Key then shifouzhaodao = true
Loop
if not shifouzhaodao then szysxh = 0
数组元素dczsz (1)到dczsz (5)的数据依次为“-1,3,7,10,7”,当变量key值为7时,运用该算法处理后,变量i的值是( )
Function search(key As Integer)As String
Dim pos As Integer,i As Integer,j As Integer
Dim nc As String
i=1:j=6:nc=“”
Do While i<=j
m=Int((i+j)/2)
nc=nc+Str(m)
If d(m)=key Then
Exit Do ‘Exit Do表示退出Do While循环
ElseIf key<d(m)Then
j=m-1
Else
i=m+1
End If
Loop
search=nc
End Function
数组元素d(1)到d(6)的值依次为“23,34,45,65,78,98”,则下列说法正确的是 ( )
i=1 : j=8 : t=0
key=Int(Rnd()*7)+14
Do While i<=j
m = Int((i + j )/2)
t=t+1
if a(m)=key Then
Exit Do else
If a(m)>key Then j=m-1
Else
i=m+1
End if
End if Loop
数组元素 a(1)到 a(8)的值依次为“2,11,14,15,18,19,20,22”,该程序段运行结束后,变量t的最大值可能是( )
Dim a(1 To 6)As Integer
Dim i As Integer,j As Integer,Key As Integer,m As Integer
a(1)=11:a(2)=22:a(3)=33: a(4)=44:a(5)=55:a(6)=66
i=1:j=6:p=0:Key=23
Do While i<=j
p=p+1
m=(i+j)\2
If j Mod 2=0 Then m=m+1
If a(m)=Key Then Exit Do
If Key<a(m) Then j=m-1
Else i=m+1
Loop
i=1:j=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表示退出循环
Elself key < a(m)Then
j = m - 1:s = s + "L"
Else
i = m + 1:s = s + "R"
End If
Loop
Text 1.Text = s
数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。该程序段执行后,文本框 Text1中显示的内容可能是( )
s= Text1.Text
For i= 1 To Len(s)
a(i) = Val(Mid(s, i, 1))
Next
L=1: R= Len(s) + 1
Do While L<R
m= (L+R) \2
If Then
R= m
Else
L=m+ 1
End If
Loop
Label1 .Caption = "原字符串的第"+ + "个字符被删除"
上述程序段2个方框处的代码分别为( )
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
① ② ③ ④
数组元素a(1)至a(5)依次为5,22,28,42,55,在a(3)处分成两段,交换位置后为:
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
28 |
42 |
55 |
5 |
22 |
旋转数组a的最小元素是5。
数组d(1)至d(5)依次为0,1,1,1,1,在d(5)处分成两段,交换位置后为:
d(1) |
d(2) |
d(3) |
d(4) |
d(5) |
1 |
0 |
1 |
1 |
1 |
旋转数组d的最小元素是0。
小明依据查找算法思想,设计一个查找旋转数组d最小元素的程序,功能如下:运行程序时,利用“添加”按钮Command1和文本框Text1依次输入旋转数组d的值,在列表List1中显示旋转数组,单击“求解”按钮Command2,在标签Label2中显示旋转数组d最小元素值。运行效果图所示,实现该功能的VB程序如下。
Dim n As Integer
Dim d(1 To 100) As Integer '数组d存储待排序数据
Private Sub Command1_Click()
'按旋转数组规则将数据存入数组d中,代码略
End Sub
Private Sub Command2_Click()
Dim mid As Integer, L As Integer, R As Integer
L = 1: R = n
mid = L
Do While d(L) >= d(R)
If L=R Then'改错
mid = R
Exit Do
End If
mid = (L + R) \ 2
If d(L)=d(R) And d(mid)=d(R) Then
mid = ⑶ '填空
Exit Do
End If
If d(L) < d(mid) Then
L = mid
ElseIf d(mid) < d(R) Then
R = mid
End If
Loop
Label2.Caption = "最小值为" + Str(d(mid))
End Sub
End If
Next i
End Function
Dim d(1 To 63) As Integer, i As Integer, s As Integer
For i=1 To 63
d(i)=i
Next i
Key=Int(Rnd*3)+1
s=0: i=1: j=63
Do While i<=j
m=(i+j)\2
If Key=d(m) Then Exit Do 'Exit Do表退出循环
If Key<d(m) Then
j=m-1: s=2*s
Else
i=m+1: s=2*s+1
End If
Loop
Label1.Caption=str(s)
若运行该程序段后,标签Label1中显示的结果是28,则查找的key值是( )
Function fg(n As Integer)As Integer
If n=1 fg=1
If n=2 fg=2
If n>=3 fg=fg(n-1)+fg(n-2)
End Function
请问走完这8阶楼梯的走法有( )
排序前 |
55 |
70 |
70 |
78 |
71 |
79 |
75 |
80 |
80 |
90 |
排序后 |
55 |
70 |
70 |
71 |
75 |
78 |
79 |
80 |
80 |
90 |
查找该组数据中满足[k1, k2]范围的数据个数为:8 |
实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Const n = 10
Dim a(1 To n) As Integer, k As Integer
Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer
Dim p As Integer, q As Integer
Dim b As Integer '查找满足条件的第一个数据所在数组元素的下标
'读取排序前的一组正整数,存储在数组a中。代码略
p= Val(Text1.Text)
q = Val(Text2.Text)
For i = p To q - 1
For j = Step -1
If a(j) < a(j - 1) Then
k = a(j): a(j) = a(j - 1): a(j - 1) = k
End If
Next j
Next i
k1 = Val(Text3.Text)
k2 = Val(Text4.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If ① Then
i = m + 1
Else
j = m - 1
End If
Loop
b = ②
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If a(m) <= k2 Then
i = m + 1
Else
j = m - 1
End If
Loop
Label1.Caption = Str ③
End Sub
① ② ③
def f(x):
#定义方程
return x**3-x**2+x-1
a=float(input("请输入解区间的左边界:"))
b=float(input("请输入解区间的右边界:"))
while abs(b-a)>1e-6:
x0=(a+b)/2
if:
b=x0
if:
a=x0
if:
break
print("解为:",x0)
input("运行完毕,请按回车键退出...")
i=1:j=1000:flag=True:p=0
key=val(Text1.Text)
Do While i<=j And flag
m=(i+j)\2
p=p+1
if a(m)=key Then flag=False
if a(m)>key Then j=m-1 Then i=m+1
Loop
数组元素a(1)到a(1000)中存放着升序排列的数据。下列说法正确的是( )
s = "AAABBBCCCCDDEFF"
i = 1: j = Len(s): Key = "H": v = ""
Do While i <= j
m = (i + j) \ 2
c = Mid(s, m, 1)
If c = Key Then Exit Do
If c > Key Then
j = m - 1: v = v & c
ElseIf c < Key Then
i = m + 1: v = v & c
End If
Loop
执行完以上程序后,v的值为( )
key = Int(Rnd * 10) * 2
s = "": i = 1: j = 10
Do While i <= j
m = (i + j) \ 2
If a(m) = key Then
Exit Do
ElseIf a(m) > key Then
j = m - 1: s = s + "0"
Else
i = m + 1: s = s + "1"
End If
Loop
Text1.Text = s
数组a的值依次为1,3,4,7,9,10,14,17,18,19,执行该程序段后,文本框Text2中显示的内容为“1010”,则key的值可能是( )
i=1 : j=9 : s="" : flag= False
Key= Val(Text1. Text)
Do While i <= j And Not flag
m=(i+j) \ 2
s=s+Str(m)
If a(m)= Key Then
flag= True
Exit Do 'Exit Do表示退出循环
ElseIf Key>a(m) Then
i=m+1
Else
j=m-1
End If
Loop
If flag= False Then s="没有找到"
Label1. Caption= s
已知数组a共有9个整数元素,依次为“8,7,3,1,9,5,6,4,2”,若在文本框Text2 中输入“3”,执行下列程序后,Label1中显示的结果是( )