题库 高中信息

题干

(加试题)有如下程序段:
k = 0 : First = 1 : Last = 5 : Flag = True
Do While Flag
k = k + 1
p = False : Flag = False
For j = First To Last
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
Last = j : Flag = True
If p = False Then
First = j :p = True
End If
End If
Next j
If First <> 1 Then First = First - 1
Last = Last - 1
Loop
数组元素a(1)到a(6)的值依次为“3,6,8,5,7,9”,经过该程序段“加工”后,下列说法正确的是( )
A.此过程中数据共交换了3次B.此过程中该数组的数据共比较了7次
C.变量k的值为2D.数组元素a(1)到a(6)的数未排成有序
上一题 下一题 0.99难度 选择题 更新时间:2019-05-25 01:10:55

答案(点此获取答案解析)

同类题5

(加试题)某活动要从 100 名参赛者中选出成绩最高的前十名给予一定的奖励。活动组织者编写了如下程序,功能是根据成绩进行排序,程序中数组 a 保存所有参赛者的组次,数组 b 保存对应的成绩,如第 1 位参赛者的组次 1 保存在 a(1)中,成绩保存在 b(1)中。程序界面如图所示,左边列表框 List1 中显示原始数据(序号和相应的成绩),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示前 10 名选手的序号和成绩在列表框 List2 中,若最后一名成绩有相同的也一起输出。界面如下图所示:

实现上述功能的 VB 程序如下,但划线处代码有错,请改正。
Const n=100
Dim a(1 To n) As Integer
Dim b(1 To n) As Integer
Private Sub Form_Load()    '窗体被加载时
‘获取原始数据,将参赛者序号和最后得分分别存在数组 a 和数组 b 内,并在列表框 List1 中显示。代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, temp As Integer
List2.Clear
For i = 1 To 10 k = i
For j = 10 To i+1   ‘①________
If b(k) < b(j) Then k = j
End If
Next j
If k <> i Then
temp = b(i): b(i) = b(k): b(k) = temp temp = a(i): a(i) = a(k): a(k) = temp
End If
List2.AddItem Str(a(i)) + "    " + Str(b(i)) Next i
m = 10
For i = 11 To n
If   b(i) = b(i-1)    then    ‘②________
m = m + 1
List2.AddItem Str(a(i)) + "    " + Str(b(i)) End If
Next i
Label3.Caption = "本次十佳歌手一共有" + Str(m) + "组"
End Sub