当前状态下,下列说法正确的是( )
For j=7 To 3 Step -1
If a(j-2) > a(j) Then
t=a(j-2): a(j-2)=a(j): a(j)=t
End If
Next j
数组元素a(1)到a(7)的值依次为“1, 4,5,2,7,6,3”,执行该程序段后,元素交换的次数为( )
s ="waste" : n = Len(s)
s1 = Text1.Text : flag = False
For i=1Ton
If Mid(s,i,1) = Mid(s1, 1,1) Then
flag = True
For j = 2 To Len(s1)
If Mid(s1, j, 1)<>Mid(s, (j+i-2) Mod n + 1, 1) Then flag = False: Exit For
Next j
If flag Then Exit For
End If
Next i
执行该程序段后,若flag变量值为True,则文本框Text1中输入的内容不可能的是( )
'待排序的数据存储在数组a(1)至a(N)中,代码略。
st=1:ed=N:k=1
Do While st <> ed
last = st
For i=st To ed-k
If a(i)*k>a(i+k)*kThen
t=a(i): a(i)=a(i+k): a(i+k)=t:
End If
Next i
ed = last:
t=st:st=ed:ed=t
Loop
上述程序段中方框处可选语句为:
①Step 1②Step k③last=i④last=i-1⑤k=-k⑥k=k+1
则⑴⑵⑶处语句依次可为( )
key=Int(Rnd*20)+3
i=1:j=6:id=1
Do Whilei<=j
m=(i+j)\2
If key = a(m) Then Exit Do
If key < a(m) Then
j=m-1:id=id*2
Else
i=m+1:id=id*2+1
End If
Loop
Label 1. Caption = Str(id)
数组元素a(1)到a(6)的值依次为“4,7,9,14,15,21”,执行该程度段后,标签Label1中显示的内容不可能的是( )
请回答下列问题:
编写VB程序计算立方柱之间的最大注水体积。程序运行时随机生成的数据从左到右依
特科网了次为“3,0,2,5,0,2,0,4”,分别代表各位置点立方柱的高度(0表示无立方柱)。列表框List1中输出各立方柱高度以及所求的最大注水体积。请回答下列问题:
Const Maxn = 15
Dim h(1 To Maxn) As Integer 'h(i)存储第i个立方柱的高度
Dim b(1 To Maxn) As Integer 'b(i)存储第 i个立方柱的编 号
Private Sub Cmd1_Click( )
Dim n As Integer, i As Integer, j As Integer, k As Integer, t As Integer
Dim left1 As Integer, right1 As Integer, ans As Integer
n=
'随机生成各立方柱的高度保存到h(1)到h(n)中, 并在List1中显示,代码略。
For i=1 To n
b(i) = i
Next i
For i=1 To n- 1 '根据立方柱的高度进行排序
k =i
For j=i+1 Ton
If Thenk=j
Next j
If k <> i Then
t=h(i):h(i)=h(k):h(k)=t
t=b(i):b(i)=b(k):b(k)=t
End If
Next i
Left1= b(1): right1 = b(1): ans = 0
For i=2 To n
If h(i) = 0 Then Exit For
If b(i) < left1 Then
ans=ans+h(i)*(left1-b(i)-1)
left1 = b(i)
ElseIf b(i) > right1 Then
ans
right1 = b(i)
Else
ans = ans - h(i)
End If
Next i
List1. AddItem”最大注水体积是:”& Str (ans)
End Sub
在待处理的数据区间中,对相邻且数据个数相等的数据块进行处理。若数字i恰好在第i位置,则不做交换,否则按下列两种情况处理。
情况A.待处理区间中,若数字i之前的数据个数小于等于其余数据个数,做一次交换可将数字i换到第i位置,如数字i=2时:
情况B.待处理区间中,若数字i之前的数据个数大于其余数据个数,操作如下:
◆奇数个数据:先将待处理区间中第1个数据排除,对其余数据整体做数据块交换,再按情况A处理,如数字i=3时:
◆偶数个数据:先将待处理区间整体做数据块交换,再按情况A处理,如数字i=4时:
Const Maxn = 30
Dim a(1 To Maxn) As Integer
Dim wz(1 To Maxn) As Integer
'函数功能:数据块[st1… ed1]与后面数据块交换(两数据块相邻且个数相等)
Function kSwap(st1 As Integer, ed1 As Integer) As String
Dim i As Integer, t As Integer, n1 As Integer
n1=ed1-st1+1
For i=
t=a(i):a(i)=a(i+n1):a(i+n1)=t
t = wz(a(i)): wz(a(i)) = wz(a(i + n1)): wz(a(i + n1)) = t
Next i
'将处理结果返回,代码略。
End Function
Private Sub Cmd1 _Click()
Dim n As Integer, num As Integer, i As Integer, s As String
n = Val (Text1. Text)
'随机生成n个不重复正整数保存到a(1)到a(n)中,并在List1中显示,代码略。
For i=1 To n
wz(a(i)) = i
Next i
For i=1 To n - 1
If i <> wz(i) Then
num =
If wz(i)-i<=num-(wz(i)-i)Then '按情况A处理
s = kSwap(i, wz(i) - 1) : List1. AddItem
Else
If num Mod 2=0 Then
s = kSwap(i, i + num\2 - 1) : List1. AddItem s
Else
s=: List1. AddItem s
End If
i=i-1 数字i交换到第i位置的处理尚未完成;
End If
End If
Next i
End Sub