试题

试题 试卷

logo

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

浙江省高中信息技术 排序算法及程序实现同步练习

小李基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第i趟排序从a(i)……a(bottom)中查找最小值并记录其下标k,同时将后面的每个元素与a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与a(i)交换。

实现上述功能的VB程序如下,在划线处填入合适的代码。

Const n=10

Dim a(1 To n)As Integer

Private Sub Command1_Click()

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

Dim k As Integer, bottom As Integer

‘获取排序前数据,依次存储在数组a中,并在文本框Text1中显示。代码略

bottom = n: i = 1

Do While i <= bottom - 1

 k = i: j = bottom

 Do While j > i

  If a(j) < a(k) Then

   k = j

  Elself a(j) = a(i) Then

   a(j) = a(bottom)

   IfThen k=j

   bottom = bottom - 1

 End If

 j = j - 1

 Loop

 If k <> i Then

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

 Else

 

  End If

Loop

For i = 1 To

 Text2. Text = Text2.Text + Str(a(i))

Next i

End Sub

举一反三
小吴为了研究冒泡排序过程中数据的”移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框'Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Labell中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。

实现上述功能的VB程序如下,但加框处代码有错,请改正。

Dim a(1 To 8)As Integer

Dim n As Integer

Private Sub Form_Load()

    a(1)= 30:a(2)= 47:a(3)= 30:a(4)= 72

    a(5)= 70:a(6)= 23:a(7)= 99:a(8)= 24

    n = 8

    For i = 1 To 8

      List 1.Addltem a(i)

    Next i

End Sub

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, k As Integer

    Dim pos As Integer

    Dim s As String

    s = Text1.Text

    pos = Val(Text1.Text)

    For i = 1 To n- 1

      For j = n To i+1 Step-1

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

                ‘⑴

          a(j-1)= a(j)

          a(j)= k

          '如果pos位置的数据参与交换,则更新pos值,记录pos变化位置

          If pos = j Then

            pos = j-1

            s = s + " →" + Str(pos)

              ‘⑵

            pos = j

            s = s + " →" + Str(pos)

          End If

        End If

      Next j

    Next i

    Label1.Caption = "位置变化情况:" +s

    For i = 1 To n

      List2.AddItem Str(a(i))

    Next i

End Sub

⑴{#blank#}1{#/blank#} ⑵{#blank#}2{#/blank#} 

返回首页

试题篮