Private Sub Command1_Click()
Dim s As String,ch As String
Dim i As Integer,n As Integer
Dim max1 As Integer,max2 As Integer
s=Text1.Text:n=Len(Text1.Text)
If Mid(s,1,1)>Mid(s,2,1) Then
max1=1:max2=2
Else
max1=2:max2=1
End If
For i=3 To n
ch=Mid(s,i,1)
If ch>Mid(s,max1,1) Then
max1=i
ElseIf ch>=Mid(s,max2,1) Then
max2=i
End If
Next i
For i=1 To n
If Then Text2.Text=Text2.Text & Mid(s,i,1)
Next i
End Sub
a(l) = 5: a(2) = 16: a(3) = 22: a(4) = 28: a(5) = 35
a(6) = 43: a(7) = 52: a(8) = 67: a(9) = 78: a(10) = 89
i = 1: j = 10: n = 0: flag = True
Key = Val(Textl. Text)
Do While i <= j And flag = True
m = (i + j) \ 2
If a(m) = Key Then
flag = False
Elself a(m) < Key Then
i = m + 1
n = n - 1
Else
j = m - 1
n = n + 1
End If
Loop
变量n的值最终为0,则文本框Text1输入的数值范围可能是( )
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
Label 1.Caption=“相邻两个元素的最大差值是”+Str(a(j) -a(i) )
上述程序段两个方框处的语句分别为( )
i=1: j=100: key=11
Do While i<=j
mid1=i+(j-i)\4: mid2=i+(j-i)\2: mid3=j-(j-i)\4
If mid1=key Or mid2=Key Or mid3=key=Then
Exit Do
If i<=key And key <mid1 Then j=mid1-1: n1=n1+1
If mid1<key And key<mid2 Then
i=mid1+1: j=mid2-1: n2=n2+1
End If
If mid2<Key And key<mid3 Then
i=mid2+1: j=mid3-1: n3=n3+1
End If
If mid3<key And key<=j Then
i=mid3+1: n4=n4+1
End If
Loop
n=n1+n2+n3+n4
程序运行结束后,变量n的值是( )
搬砖问题:100块砖,100人搬,一个男人搬4块,一个女人搬3快,两个小儿拾1块,要求一次搬完,问男、女、小儿各多少人。
i=1:j=8:k=0
key=15
Do While i<=j
k=k+1
m=Int((i+j)/2)
If key<a(m)Then j=m-1 Else i=m+1
Loop
数组元素a(1)到a(8)的数据依次是“14,15,15,17,28,30,37,40”,该程序执行完毕后,下列各变量的值不正确的是( )
Key = (Int(Rnd * 7) + 1) * 3
low = 1: high = 8
Do While low <= high
m = (low + high) \ 2
If a(m) >= Key Then
high = m - 1
Else
low = m + 1
End If
Loop
Text1.Text = high
数组元素a(1)到a(8)的值依次为“5,7,9,11,15,15,16,22”。执行该程序段,则文本框Text1中显示的内容可能是( )
请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Label3.Caption = ""
For i = 1 To 50
a(i) =
If i Mod 10 = 0 Then
Label3.Caption = Label3.Caption + CStr(a(i)) + vbCrLf '换行
Else
Label3.Caption = Label3.Caption + CStr(a(i)) + " "
End If
Next i
End Sub
Private Sub Command2_Click()
Label4.Caption = ""
n = 0
For i = 1 To 50
For k = 2 To a(i) - 1
If Then Exit For
Next k
If k = a(i) Then
n = n + 1
If n = 1 Then b(n) = a(i)
For j = 1 To n - 1
If b(j) = a(i) Then: Exit For
If j = n - 1 Then b(n) = a(i)
Next j
End If
Next i
For j = 1 To n
Label4.Caption = Label4.Caption + + " "
Next j
②固定两队字母中最小字母在各队中的位置;
③将两队其余字母按从小到大的顺序排在各自最小字母的两边。大写字母队列先从最小字母右边排队,排到最后位置再从最小字母左边开始排,直到第一个位置为止。同理,小写字母队列先从左边开始排队,再排右边。过程如图1所示:
编写VB程序,实现字母排队功能:在文本框Text1中输入待排字母串后,单击“排队”按钮Comand1,在列表框List1中显示排队结果。程序运行界面如图2所示。
请回答下列问题:
Dim flag(1 To 52) As Boolean 'flag数组初值为False
Private Sub Command1_Click()
Dim su As String, sd As String, ch As String 'su,sd分别存储大小写字母队
Dim i As Integer, n As Integer
Dim ku As Integer, kd As Integer
s = Text1.Text:n =Len(s)
For i=1 To n
ch =
If ch >="A" And ch <="Z" Then su= su+ ch
If ch>="a"Andch<="z"Thensd=sd+ch
Next i
ku = search(su, 0)
kd = search(sd, 6
su=“”:sd=“”
For i=1 To 52
If flag(i) And i<=26 Then su=su+Chr(i+64)
If flag(i) And i>26 Then
Next i
List1.AddItem sort(su,ku, 1)
List1.AddItem sort(sd,kd, -1)
End Sub
Function search(s As String, k As Integer) As Integer '确定字母队列并查找最小元素位置
Min = Mid(s,1, 1)
flag(Asc(Min) - 64 - k) = True
mini = 1
For i=2 To Len(s)
ch = Mid(s, i,1)
If ch<Min Then mini=i:Min=ch
Next i
search = mini
End Function
Function sort(s As String, wz As Integer, k As Integer) As String '排队
nx = Len(s)
sort = Mid(s, 1,1)
i=2
nc=1
Do While nc <= 2
For j=wz+k To nx^((1 +k) \ 2) Step k
If k= 1 Then
sort = sort + Mid(s,i,1)
Else
sort = Mid(s, i, 1) + sort
End If
i=i+1
Next j
nc=nc+1
Loop
End Function
Const n=10
i= 1:j=n- 1
Do While j-i>= 2
m=(i+j)\2
If ⑴ Then
i= m
Else
⑵
End If
Loop
Text1.Text= Str( ⑶ )
上述程序中(1)(2)(3)划线处可选语句有:
①a(j)-a(m)=j-m
②a(m)-a(i)=m-i
③j=m-1
④j=m
⑤a(i)+1
⑥a(i)
则上述程序中(1)、(2)、(3)划线处的代码依次为( )
定义规则:你需要标记出所有空白格子周边相邻的格子上有多少地雷(在正方向和斜45度方向挨着的格子均可视为相邻),并将数量标记在空白格中,如下图所示。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim n As Integer,m As Integer 'n 存储地雷区域大小,m存储地雷数目
Dim a(1 To 100 * 100) As String
Dim b(1 To 100 * 100) As Integer
Private Sub Command1_Click() '按要求生成数组a中的数据并显示
Randomize
List1. Clear
n=9 : m=10
Dim s As String, pos As Integer, i As Integer
s=" " : n=n+2
For i=1 To n * n
If isinside(i) Then a(i)="— —"
Else a(i)="▲"
Next i
For i=1 To m
pos=Int(Rnd * n * n)+1
Do While a(pos)="★" Or
pos= Int(Rnd * n *n)+1
Loop
a(pos)="★"
Next i
For i=1 To n* n
s= s+" "+a(i)
If i Mod n=0 Then
List1. AddItem s
s=" "
End If
Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, row As Integer
Dim col As Integer, start As Integer, temp As String
For i=1 To n* n
If a(i)="★" Then
row=(i-1) \ n+1 : col=(i-1) Mod n+1
For j=1 To 3
start=
If a(start+col- 1)="— —" Then b
(start+ col- 1)= b(start+col- 1)+1
If a(start+col)="— —" Then
b(start+ col)= b(start+col)+1
If a(start+col+1)= "— —" Then b
(start+col+ 1)= b(start+ col+1)+1
Next j
End If
Next i
List2. Clear
For i=1 To n
temp=" "
For j=1 To n
If a((i-1) * n+j)="— —" Then
temp=temp+" "+ Str(b((i-1) * n+j))
Else
temp= temp+" "+a((i- 1)*n+j)
End If
Next j
List2. AddItem temp
Next i
End Sub
Function isinside(x As Integer) As Boolean
isinside= x>n And And x
Modn<;>1AndxMod<> 0
End Function
Dim a(0 To 7) As Integer
a(0)=1:a(1)=1:a(2)=2:a(3)=2:a(4)=2:a(5)=3:a(6)=3:a(7)=5
i = 0:j=7:n=0
Key=Int(Rnd*7)
Do Whilei <=j
m=(i+j+1)\2
If a(m) = Key Then
Exit Do
ElseIf a(m) < Key Then
i=m+1:n=n-1
Else
j=m-1:n=n+1
End If
Loop
Print (n)
执行该程序,输出结果可能的是( )