组卷网 > 高中信息技术综合库 > 算法理论 > 算法实例的程序实现 > 排序算法及程序实现
题型:操作题 难度:0.65 引用次数:8 题号:10884729
小明是电影迷,一般选择关注度较高的电影观看。为此他编写了一款对电影关注度进行排序的程序。程序运行界面如图所示。
  
​电影的关注度信息存放在数据库文件“ Movie.accdb”的“T_Movie”表中,如图所示。

VB应用程序的功能如下:程序运行时,列表框List1中显示从数据表中读取的电影编号和电影关注度数据。单击“排序”按钮Command1,在列表框List2中显示按电影关注度降序排序后的结果。代码如下:
Dim a(1 To 100) As String   `定义存储电影编号的数组a
Dim b(1 To 100) As Integer  `定义存储电影关注度的数组b
Dim n As Integer           `定义存储电影总数的变量n
Private Sub Command1_Click( )
Dim t1 As String, t2 As Integer

For i=1 To n

List2.AddItem  a(i)+"-----"+Str(b(i))


Next i
End Sub
Private Sub Form_Load( )
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="provide=Microsoft.ACE.OLEDB.12.0;datasource="&App.Path&"\Movie.accdb"
conn.Open
set rs.ActiveConnection=conn
rs.Open "SELECT*FROM T_Movie"
n=0
Do While Not rs.EOF
      n=n+1
      a(n)=rs.Fields("电影编号")
      b(n)=rs.Fields("电影关注度")
     List1.AddItem a(n)+"-----"+Str(b(n))
       rs.MoveNext

Loop


rs.Close
conn.Close
End Sub
回答下列问题:
(1)分析程序,可知连接的数据库文件名为_________,程序中打开的数据表名为_________。
(2)当“Form_Load( ) ”事件处理过程运行结束时,变量n的值为_________。
(3)加实线框中的代码采用的排序算法为___________________________。
(4)为实现上述功能,程序中画线处的代码:①_________________;②___________________。
【知识点】 排序算法及程序实现

相似题推荐

操作题 | 适中 (0.65)
【推荐1】小周尝试一种新的数据排序方法,先将数据按照增量分成若干组,再分别对这几组数据进行排序,并通过缩小增量直到增量为1的方法实现最终排序。如若要将数据“71,54,58,29,31,78,2”升序排序,增量的初值为3,则数据分为3组,为“71,29,2”“54,31”“58,78”,分别对各组数据排序后变为“2,31,58,29,54,78,71”,更新增量为1,最终通过后续处理实现排序。
'待排序数据存储在数组a中(a(1)…a(n)),共有n个数据,要求升序排序


请回答以下问题:
(1)若要修改窗体上显示的内容为“跳跃排序”,应修改的属性名是_____________(单选,填字母:A.Text/B.Caption/C.Load)。
(2)划线部分的代码应填①_____________;②_____________;③_____________
(3)若将虚线框中的程序段删除并要求使排序的结果不变,则应将DoWhile语句加框处的代码修改为_____________
2020-05-23更新 | 47次组卷
操作题 | 适中 (0.65)
【推荐2】【加试题】小李要给全班学生拍合照,要求所有学生站成一排,中间高,两端低。小李采用如下排队方法:按身高信息从高到低排序,让身高第一位的同学单独站出来,身高第二位同学站在他的左手边,身高第三位同学站在他的右手边,再依次向两端安排其他人。每个学生的学号与身高信息已存入数据库中。小李编写了 VB 程序,从数据库中读取学号和身高信息,在“原始信息”下方的列表框 List1 中显示,单击“排队”按钮 Command1,在“排好的队形”下方的列表框 List2 中显示排好的队形。程序界面如图所示。

实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Const maxn=100
Dim id(1 To maxn) As Integer '存储每个学生的学号
Dim tall(1 to maxn) As Single '存储每个学生的身高
Dim n As Integer '存储学生的个数
Private Sub Form_Load()
'从数据库得到学生的总人数 n
'从数据库读取学号信息,并存入 id 数组中
'从数据库读取身高信息,并存入 tall 数组中
'在列表框 List1 中显示学号与身高
End Sub
Private Sub Command1_Click()
Dim a(1 To maxn) As Integer '存储排好队形的学号
Dim b(1 To maxn) As Single '存储排好队形的身高
Dim i As Integer, j As Integer
Dim tl As Integer, tr As Integer, mid As Integer
Dim tmp1 As Single, tmp2 As Integer
For i = 1 To n - 1

For j = n To i + 1 Step -1

IfThen     '改正:________

tmp1 = tall(j): tall(j) = tall(j - 1): tall(j - 1) = tmp1

tmp2 = id(j): id(j) = id(j - 1): id(j - 1) = tmp2

End If

Next j


Next i
If n Mod 2 = 0 Then '根据总人数的奇偶性,确定队形的中间位置

mid = n \ 2 + 1


Else

mid = (n + 1) \ 2


End If
'身高第一位的同学,安排在队形的中间位置
a(mid) = id(1)
b(mid) = tall(1)
tl = mid - 1
tr = mid + 1
For i = 2 To n

If Then   '改正:__________

a(tr) = id(i)

b(tr) = tall(i)

tr = tr + 1

Else

a(tl) = id(i)

b(tl) = tall(i)

tl = tl - 1

End If


Next i
List2.AddItem "位置 " + "学号 " + "身高"
For i = 1 To n
List2.AddItem Str(i) + " " + Str(a(i)) + " " + Str(b(i))
Next i
End Sub
2021-05-20更新 | 21次组卷
操作题 | 适中 (0.65)
【推荐3】数组元素个数为n, 程序实现'小的数从尾开始往前冒泡,请将划线处代码补充完整。
Private Sub Command2_Click()
List1.Clear
Const n = 6
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, t As Integer
a(1) = 2: a(2) = 1: a(3) = 3: a(4) = 4: a(5) = 5: a(6) = 6
For i = 2 To ①____________
   For j = n To i Step -1
        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
For i = 1 To n
       List1.AddItem Str(a(i))
Next i
End Sub
Private Sub Command3_Click()
13 数组元素个数为n,程序实现小的数从头开始往尾冒泡,请将划线处代码补充完整。
List1.Clear
Const n = 6
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, t As Integer
a(1) = 2: a(2) = 1: a(3) = 3: a(4) = 4: a(5) = 5: a(6) = 6
For i = 1 To ①____________
   For j = 1 To ②_______________
        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
For i = 1 To n
       List1.AddItem Str(a(i))
Next i
End Sub
2020-03-05更新 | 23次组卷
共计 平均难度:一般