试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:普通

浙江省共美联盟2018-2019学年高二下学期信息技术期末模拟联考试卷

原始的冒泡排序是单向的,它始终是从第一个(或最后一个)一个元素开始扫描。小王对冒泡排序进行了改进,从两端进行扫描,首先从数组的左端到右端进行扫描,把最大的数往后交换(以升序为例),再从右端到左端进行扫描,把最小的数往前交换,多次扫描后,最终得到一个有序的序列。他定义了left1、right1两个变量,变量left1表示左边指针,变量right1表示右边指针,每一遍排序,左边指针向右移动一位,右边指针向左移动一位。一趟排序,把最大值沉到最后一个,最小值冒泡到最前一个,最终让数组有序。运行界面如图a,单击“生成数据”按钮在列表框List1中显示生成的10个随机数,单击“排序”按钮后,将排序结果显示在列表框List2中。

实现上述功能的 VB 程序如下,请回答下列问题:

Dim b(1 To 10) As Integer

Dim left1 As Integer, right1 As Integer Private Sub Cd1_Click()

Dim i As Integer, j As Integer

  For i = 1 To 10

b(i) = Int(Rnd * 100) + 10 List1.AddItem Str(b(i))

  Next i left1 = 1 right1  = 10

End Sub

Private Sub Cd2_Click()

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

Do While left1 < right1

    For j = left1 To right1 - 1

    If b(j) > b(j + 1) Then

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

    End If

    Next j

    For j = right1 To    ‘改错

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

            t = b(j): b(j) = b(j - 1): b(j - 1) = t end If

    Next j

    right1 =           ‘填空

Loop

‘将排序结果显示在列表表框List2中,代码略

End Sub

(1)、根据题意,“生成数据”按钮的对象名是
(2)、程序代码中,加框处有错,请改正。
(3)、请将划横线处代码补充完整。right1 =
(4)、如果有数组a,其a(1)~a(5)的值分别是“7,14,12,6,18”,按照上面双向排序的算法思路(升序),则do while循环中,第二次循环结束时,数组元素a(2)的值为 
举一反三
编写VB程序,实现如下功能: 单击“排序数组a”按钮Command1时,对已有数组a的数据进行升序排列,并显示在文本框Label1中;单击“显示数组b”按钮Command2时,将升序数组b的数据显示在文本框Label2中;再单击“合并a和b”按钮Command3时,对数组a和数组b升序合并到字符串中,将合并后的数据在文本框Label3中显示。(运行效果如图所示)。实现上述功能的VB代码如下, 请在划线处填入合适代码。

Dim a(1 To 6) As Integer  

Dim b(1 To 6) As Integer

Private Sub Command1_Click()     '对数组a中的数据进行排序

Dim i As Integer, j As Integer ,k as integer

a(1) = 53 :a(2) = 18:a(3) = 62:a(4) = 22:a(5) = 6:a(6) = 25

s = ""

For i = 1 To 5

    k = i

    For j = i + 1 To 6

        If a(k) > a(j) Then {#blank#}1{#/blank#}

    Next j

    If i <> k Then

        t = a(k): a(k) = a(i): a(i) = t

    End If

Next i

For i = 1 To 6

    s = s + Str(a(i))

Next i

Label1.Caption = s

End Sub

Private Sub Command2_Click() 

b(1) = 3: b(2) = 8: b(3) = 15: b(4) = 27: b(5) = 38: b(6) = 49

'此处部分代码省略

End Sub

Private Sub Command3_Click()  

'将数组a和b中的数据逐个比较后添加到新的字符串s中,并将s在label3中显示

i = 1: j = 1: s = ""

Do While i <= 6 {#blank#}2{#/blank#}j <= 6           '如果两数组都还有数据未合并

    If  {#blank#}3{#/blank#}Then

        s = s + Str(a(i)) : i = i + 1

    Else

        s = s + Str(b(j)) : j = j + 1

    End If

Loop

Do While i <= 6                            '只有数组a还有数据未合并

    s = s + Str(a(i)) : i = i + 1

Loop

Do While j <= 6                            '只有数组b还有数据未合并

    s = s + Str(b(j)) : j = j + 1

Loop

Label3.Caption = s

End Sub

返回首页

试题篮