(加试题)某算法的VB程序段如下:
For i = 1 To 3
For j = i To 9
If a(j) > a(j-1) Then
t = a(j): a(j) = a(j-1): a(j-1) = t
End If
Next j
Next i
数组元素a(0)到a(9)的值依次为“25,64,15,40,74,80,27,65,84,53”。若该程序执行后得到的结果是
A.64 74 80 40 65 84 53 27 25 15
B.64 40 80 74 65 84 53 27 25 15
C.64 25 15 40 74 80 27 65 84 53
D.84 80 74 65 64 53 40 27 25 15
当前题号:1 | 题型:选择题 | 难度:0.99
选择排序每次选出最大值对数据7,6,3,9,2进行降序排序,两轮后的结果是( )。
A.2,3,6,9,7B.9,6,3,7,2C.9,7,3,6,2D.9,7,6,3,2
当前题号:2 | 题型:选择题 | 难度:0.99
单循环赛制是一种较为公平合理的比赛制度,比赛过程中所有参赛队伍均能相遇一次。其秩序编排可采用“逆时针轮转方法”:数字 1~ n 依次作为队伍编号,把编号按 U 型走向分成均等两边(若 n 为奇数,则在末尾增加编号 0,使总数为偶数),即可得到第一轮的比赛秩序,例如,5 个队伍的比赛编排情况如图 a 所示;第二轮,固定编号 1,其余编号均按逆时针方向移动一个位置,即为该轮比赛秩序;以后各轮比赛秩序以此类推,与编号 0 对阵的表示本轮轮空。
小赵这此编写了 VB 程序,功能如下:在文本框 Text1 中输入参赛队伍数 n,单击“编排”按钮 Command1,在列表框 List1 中输出每轮比赛秩序。程序运行效果如图 b 所示。

实现上述功能的 V B代码如下,请将程序代码补充完整。
Private Sub Command1_Click()
Dim team(1 To 20) As String    
Dim n As Integer, c As Integer
Dim result As String
Dim i As Integer, j As Integer, temp As String
n=Val(Text1.Text)
For i=1 To n
team(i)=Str(i)
Next i
c=n+n Mod 2    
If c<>n Then team(c)=Str(0)
For i=1 To c-1
result=""
For j=1 To c\2
result=result&team(j)&"-"&______________&";" ‘(1)
Next j
List1.AddItem "第"&Str(i)&"轮"&result   
temp=team(c)
For j=c To 2 Step -1
_________________    ‘(2)
Next j 

_________________     ‘(3)

Next i
End Sub
当前题号:3 | 题型:填空题 | 难度:0.99
n个数据的冒泡升序排序需要经过n-1遍的加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面,在第i遍加工过程中需要进行n-i对数据的比较,在某些情况下,第i遍加工过程中,在上面部分较小数据已经有序情况下,不需要再进行n-i对数据的比较。如对“17,18,19,24,23,20”这6个数据排序中,第1遍排序结束后数据为“17,18,19,20,24,23”,第2遍排序时不再需要对20及其前面4个数据进行比较。程序界面如下图所示

以下程序实现了冒泡排序的优化,请在划线处填写合适的代码。
Dim n As Integer
Dim a (1 to 100) As Integer
Private Sub Form_Load()
‘n=10,排序前生成的数据存储在数组a中,并在列表框List1中显示
‘代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, start As Integer, t As Integer
①_________________
Do While i < n
start = n
For j = n To i Step ②_______________
If a(j) < a(j - 1) Then
t = a(j): ③____________ : a(j - 1) = t
start = j
End If
Next j
④______________
Loop
For i = 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
当前题号:4 | 题型:填空题 | 难度:0.99
如图a所示,在excel中使用Rank函数可以快速地返回一个数字在数字列表中的排位,而且是同分同名次,非常方便。小明想用Vb编写一个程序来实现类似Rank排名次的功能,程序运行时,随机产生10个[60,100]之间的随机数,并显示在列表框List1中,单击“排名”按钮Command1,在列表框List2中输出数据及其排名,程序运行界面如图b所示。


实现上述功能的VB程序如下,代码加框处有错,请改正。
划线①处代码应改为:___________________ 
划线②处代码应改为:____________
Dim a(1 to 10) As Integer ‘存储原始数据
Dim b(1 to 10)As Integer ‘存放名次
Private Sub Command1_Click()
Dim i As Integer,j As Integer, n As Integer
For i=1 To 10
n=0
For j=1 To 10
If   If  a(i)<=a(j) Then n=n+1 ‘①
  b(i)=n  ‘②
Next j
Next i
For i= 1 to 10
List2.Additem a(i)&”  ”&b(i)
Next i
End Sub
Private  Sub Form_Load()
‘随机产生10个[60,100]之间的随机数,并显示在List1中,代码略。
End Sub
当前题号:5 | 题型:填空题 | 难度:0.99
小明基于选择排序算法编写了一个VB程序,功能如下:某班有50个学生,从中选择10个身高最高的同学,要求被选的任何两个人不能身高一样(所给的数据保证能选10个)。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const  n = 50
Dim d(0 To n) As single , name(1 to n) as string
'读入50个学生的身高,依次存入d(1)…d(50), 最高身高小于2,姓名存入name(1)…name(50)
'代码略
Private Sub Command1_Click()

Dim i As Integer, j As Integer, temp As single, k As Integer,r as string

d(0) = 2

For i = 1 To 10

  For j = i To n

    If d(j) < d(i - 1) Then

If  Then

k = j

End If

    End If

  Next j

  If k <> i Then

temp = d(k):  d(k) = d(i):  d(i) = temp

r=name(k) : name(k)=name(i) : name(i)=r

  End If

Next i

For i = 1 To 10  ‘输出被选的10个人的名字和身高。

  List2.AddItem  name(i) & d(i)

Next i

End Sub
当前题号:6 | 题型:填空题 | 难度:0.99
有一组正整数,要求仅对其中的偶数进行降序排序。排序后偶数在前,奇数在后。排序示例如下。
排序前 
75
78
60
86
61
75
36
88
排序后 
88
86
78
60
36
75
61
75
 
程序运行界面如下图所示。
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer Private Sub Form_Load()
'排序前数据存储在数组 a 中,并在文本框 Text1 中显示代码略 End Sub
Private Sub Command1_Click()
Dim k As Integer, i As Integer, j As Integer, t As Integer
i = 1
Do While i <= n - 1
k = i
For j = i + 1 To n
  '①
k = j
ElseIf a(k) Mod 2 = 0 And a(j) Mod 2 = 0 And a(j) > a(k) Then
k = j
End If
Next j
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
  '② 
Loop

'依次输出排序后的数据。代码略 End Sub

当前题号:7 | 题型:填空题 | 难度:0.99
数组a中的n个元素经排序生成左右交替上升数据序列的VB程序段如下:
For i = 1 To   (1)
For j =    (2) To i + 1 Step -1

If d(j) <d(j - 1) Then

t = d(j): d(j) = d(j - 1): d(j - 1) = t

End If

Next j
For j = i + 1 To    (3)

If d(j) <d(j + 1) Then

t = d(j): d(j) = d(j + 1): d(j + 1) = t

End If

Next j
Next i
方框中的代码由以下三部分组成:
①   n - i + 1 ②n \ 2 ③n - i
代码顺序正确的选项是
A.②①③B.①②③C.②③①D.③②①
当前题号:8 | 题型:选择题 | 难度:0.99
数组d中存放了一组数据如表所示。采用选择排序对这组数据进行递增次序排序。第二遍加工过程中,进行数据交换的数组元素是(    )
d[1]
d[2]
d[3]
d[4]
d[5]
d[6]
d[7]
d[8]
90
84
85
72
80
71
66
70
 
A.d[2]与d[3]B.d[2]与d[1]C.d[2]与d[8]D.d[2]与d[7]
当前题号:9 | 题型:选择题 | 难度:0.99
(加试题)编写一个VB程序实现数据左右交替上升排序。功能如下:随机产生n个不重复的整数存数组a,并在列表框listl中显示,单击“排序”按钮Commandl,在列表框list2中显示排序后的数据。某遍程序运行后,数组a中存储的左右交替上升排序的n个正整数,如下表所示:
a(1)
a(2)
a(3)
……
a(n-2)
a(n-1)
a(n)
1
4
7
……
8
6
2
 
实现该功能的VB程序如下,但加框处代码有错,请改正。
Constn=10
Dima(1 To n) As Integer
Private Sub Form_Load()
‘随机产生n个不重复的整数存数组a,并在列表框listl中显示。代码略。
End Sub
Private Sub Command1_Click()

Dim i As Integer,j As Integer,t As Integer

Dim i minl As Integer,imin2 As Integer

For i=1 To n\2

Imin l=i:imin2=i+1
If a(iminl)>a(imin2) Then t=iminl:iminl=imin2:imin2=t
For j=i+2 To n-i+1
If a(j)<a(imin1) Then
imin2=iminl;iminl=j
    ‘(1)  _______________________________ 
imin 2=j
End If
Next j
If i◇imin 1 Then t=a(i):a(i)=a(imin1):a(imin1)=t
If imin 2=i Then      ‘(2)  _______________________________ 
If n-i+1◇imin2 Then t=a(n-i+1):a(n-i+1)=a(imin2):a(imin2)=t

Next i

For i=1 To n

Text2.Text=Text2.Text+Str(a(i))

Next i

End Sub
当前题号:10 | 题型:填空题 | 难度:0.99