1. 小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。

实现上述功能的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,bottom As Integer

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

    bottom = n

    i = 1

    Do While i <= bottom - 1

        For j = bottom To i + 1 Step -1

            If   Then      '①

                t = a(j): a(j) = a(j - 1): a(j - 1) = t

            ElseIf a(j) = a(j - 1) Then   '相邻两个数据相等,进行剔除处理

                        '②

                bottom = bottom - 1

            End If

        Next j

        i = i + 1

    Loop

    Text2.Text = “ ”

    For i = 1 To bottom

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

    Next i

End Sub

程序中加框①处应改正为

加框②处应改正为

【考点】
排序算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
变式训练
拓展培优
真题演练
换一批
1. 对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。

李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。

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

Dim n As Integer

Dim a(1 To 100) As Integer

Private Sub Command1_Click( )

    Dim i As Integer, s As String

    s = ""

   

    For i = 1 To n * n

        

        s = s + Str(a(i))

        If i Mod n = 0 Then

            List1.AddItem s

            s = ""

        End If

    Next i

End Sub

Private Sub Command2_Click()

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

    Dim s As String

    s = ""

    For i = 1 To n * n

        k = i

        For j = i + 1 To

            If a(j) < a(k) Then k = j

        Next j

        If k <> i Then t = a(k):a(k) = a(i):a(i) = t

       

        If i Mod n = 0 Then

            List2.AddItem s

            s = ""

        End If

    Next i

End Sub

综合题 普通
3. 小王编写了一个数据排序且将重复数删除的VB程序。算法的基本思想:先随机生成20个[1,50]区间内的整数,然后按照数据从低到高进行排序,最后删除重复数(相同的数据只保留一个)。

程序运行时,单击“生成随机数”按钮Command1,则生成20个[1,50]区间内的整数,存储在数组a中,并显示在文本框Text1中;单击“排序并去重”按钮Command2,则将数组a中数据进行从低到高排序,并将排序结果显示在文本框Text2中,将去重后结果显示在文本框Text3中,在标签Label4中显示共删除的重复数个数,程序运行界面如下图所示。

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

(1) 若20个随机数分别为:7,18,5,7,7,12,7,1,10,14,17,7,9,7,10,16,5,18,8,18,则去掉的重复数共个。
(2) 请在划线处填入合适的代码。

Dim a(1 To 20) As Integer

Const n = 20

Private Sub Command1_Click()

    Dim i As Integer, s1 As String

    Randomize

    s1 = “ ”

    For i = 1 To n

        a(i) = Int(Rnd * 50 + 1)

        s1 = s1 + Str(a(i))

    Next i

    Text1.Text = s1

End Sub

Private Sub Command2_Click()

    Dim i As Integer, j As Integer, p As Integer, tt As Integer

    Dim ans As Integer, s2 As String, s3 As String

    For i = 1 To n - 1

        p = i

        For j = n To i + 1 Step -1

            If a(j) < a(p) Then p = j

        Next j

        If a(i) < > a(p) Then

            tt = a(i)

            a(i) = a(p)

            a(p) = tt

        End If

    Next i

    s2 = “ ”:s3 = “ ”

    ans = 0

    For i = 1 To n

        s2 = s2 + Str(a(i))

    Next i

    Text2.Text = s2

   

    s3 = Str(a(1))

    For i = 2 To n

    If a(i) < > q Then

        

        q = a(i)

    Else

        

    End If

    Next i

    Text3.Text = s3

    Label4.Caption = Str(ans)

End Sub

综合题 困难