题库 高中信息

题干

n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Commaiid1,在列表框List2 中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如第16题图所示。

实现上述功能的VB代码如下,但加框处代码有错,请改正。
Dim a(1 To 8) As Integer
Dim n As Integer
Private Sub Form_Load()
'n=8,排序前数据存储在数组a中,并在列表框Listl中显示
'代码略
End Sub
Private Sub Command1_Click()
Dim flag As Boolean 'flag值为True表示一遍加工中发生过交换
i = 1
flag = True
Do While    '(1)  
flag = False
For j =" n" To i + 1 Step -1
If a(j) < a(j - 1) Then
k =" a(j):" a(j) =" a(j" - 1): a(j - 1) = k
flag = True
End If
Next j
i =" i" + 1
Loop
Label3.Caption = "排序过程的加工遍数为" +     '(2)
For i =" 1" To n
List2.AddItem Str(a(i))
Next i
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2017-02-15 04:45:03

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

同类题4

(加试题)某校举行班班有歌声比赛,参赛班级的成绩按照班级序号保存在“bbygs.accdb”数据库文件中,为了快速计算每个班级最终的分,设计了一个VB程序,该程序能够将8个评委的打分按照从高到低的顺序排序,然后去掉一个最高分和一个最低分,最后计算平均值作为参赛班级的成绩。程序界面如图:单击“提取”按钮Command1,在列表框list1中显示班级序号和该班级8个评委的打分成绩,单击“排序”按钮Command2后,在列表框list2中按降序排序。单击计算得分按钮Command3,在文本框text1中显示最终成绩。按此要求编写程序如下:
Dim class(1 To 30) As Integer '存放班级序号的数组定义为class
Dim score(1 To 8) As single '存放班级各评委打分的数组定义为score
Private Sub Form_load() '提取某班级的评委打分
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "Provider=Microsoft.AC
A.OLEDB.12.0;Data Source=" + App.Path + "\bbygs.accdb "
conn.Open
Set rs.ActiveConnection = conn
rs.Open "SELECT * FROM score " 
n = 0
Do While Not rs.EOF   '到最后一条记录后退出循环
n = n + 1
class (n) = rs.Fields("班级序号").Value
score (n) = rs.Fields("评委打分").Value
rs.MoveFirst '① 指针移动到下一条记录
Loop
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
for i=1 to n
List1.AddItem str(score(i))
Next i
End sub
Private Sub Command1_Click()  
Dim i as integer
Dim j as integer
Dim t as single

For i=1 to 8
List2.AddItem str(score(i))
Next i
End sub
Private Sub Command2_Click()   '计算班级平均得分
Dim i As Integer
Dim sum As single
For i=2 to 7
sum=sum+score(i)
Next i
Text1.text=  
End sub
(1)程序中①划线处有错,应改为____________________。
(2)加矩形框处的程序所采用的算法是_____________排序。
(3)程序中②划线处应填入___________,程序中③划线处应填入___________。