试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省临海市白云高级中学2018-2019学年高二下学期信息技术期中考试试卷

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

i = 1

flag = True

Do While             '改错

     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 = "排序过程的加工遍数为" +              '填空

For i = 1 To n

   List2.AddItem Str(a(i))

Next i

End Sub

(1)、代码“Private Sub Command1_Click()”中的Click是。(单选,填字母:A . 对象名/B . 属性名/C . 事件名)
(2)、程序代码中,Do While语句加框处有错,请改正。
(3)、程序代码中,将Label3.Caption赋值语句补充完整。
(4)、程序代码中,flag值为表示某一遍加工中发生过交换。
举一反三
【加试题】某排序算法思想如下:若有11个桶,编号从0~10,随机产生多个整数,每产生一个整数时,就在以该整数位编号的桶中放一面小旗子,最后只要按顺序数每个桶中有几面小旗子,就能得到这几个整数的有序排列。例如2号桶中有1个小旗子,表示2出现了一次;3号桶中有1个小旗子,表示3出现了一次;5号桶中有2个小旗子,表示5出现了两次;8号桶中有1个小旗子,表示8出现了一次,按桶的编号顺序读出旗子数量,没有旗子的桶略过,得到有序整数为“2,3,5,5,8”。

为此,小李编写了一个VB程序,功能如下:运行程序,窗体加载时随机产生6个[0,9]的随机整数,并在列表框List1中依次显示排序前数据,单击“排序”按钮Command1,在列表框List2 中显示经过上述排序算法后的数据。运行结果如图所示。

实现上述功能的VB代码如下,但横线处代码有错,请改正。

Dim a(10) As Integer'数组a表示桶的编号,如a(0)表示第0号桶

Private Sub Command1_Click()

Dim i As Integer, j As Integer

For i = 0 To 10

For j = 1 To     i      错①处

List2.AddItem CStr(i)

Next j

Next i

End Sub

Private Sub Form_Load()

Dim i As Integer

Randomize

For i = 0 To 10'将数组初始化为0

a(i) = 0

Next i

For i = 1 To 6'产生6个[0,9]的随机数

t = Int(Rnd * 10)

a(t) =  t + 1  '第t桶中小旗子数量加1  错②处

List1.AddItem CStr(t)

Next i

End Sub

①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#} 

返回首页

试题篮