排序算法及程序实现 知识点题库

某校5名学生会推荐成员网络人气得票数依次为1201,2120,1009,1987,2009,若采用选择排序算法对其进行从大到小排序,则第二趟的排序结果是 (    )

原始数据

1201

2120

1009

1987

2009

第一趟

2120

1201

1009

1987

2009

第二趟

第三趟

2120

2009

1987

1009

1201

第四趟

2120

2009

1987

1201

1009

A . 2120  2009  1009  1987  1201 B . 2120  2009  1009  1201  1987 C . 1009  1201  2120  1987  2009 D . 1009  1201  2009  2120  1987
【加试题】随机产生一个存有两位整数组a,先排序,然后进行数据重组,使被排序的数据呈现中间小,并逐次向两边增大。小李编写了该VB程序,运行程序时,在列表框List1中显示排序前数据,单击“重组”按钮Command2,在列表框List2中显示“重组”后的数据,程序运行界面如图所示。

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

Dim a(0 To 20)As Integer,d(0 To 20)As Integer

Dim n As Integer

Private Sub Command1_Click()

‘产生n个[10,99]之间的随机整数,存储在a(0 To n-1)中,同时显示在List1中,代码略

End Sub  

Private Sub Command2_Click()

    Dim i As Integer  

    n=Val(Text1.Text)   

    For i=0 To n-2    

      For j=i+1 To n-1  

        If     Then            ‘(1)

          temp=a(i):a(i)=a(j):a(j)=temp

        End If

     Next j

Next i 

If n Mod 2<>0 Then  d(n\2)=a(n-1)  ‘个数为奇数,最小值放中间位置

    For i=0 To n\2—1

    d(i)=a(i*2)

=a(2*i+1)               ‘(2)

Next i

  ‘在列表框List2中输出数组d,代码略

  End Sub

  1. (1) 处加框代码应改为

  2. (2) 处加框代码应改为

有如下某排序算法程序段:

For i=1 To 3

 k=i

 For j=i+1 To 6

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

 Next j

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

Next i

数组元素a(1)到a(6)的值依次为“8,2,9,3,5,1”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为(  )

A . 8,2,9,3,5,1 B . 9,2,8,3,5,1 C . 9,8,5,2,3,1 D . 9,8,5,3,2,1
有如下程序段:

i = 1

Do While i <= 5

 If i = 0 or a(i -1) <= a(i) Then

  i = i + 1

 Else

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

  i = i - 1

 End If

Loop

数组元素a(0)到a(5)的值依次为“0,71,22,48,79,27”,经过该程序段“加工”后,数组元素a(4)的值为(  )

A . 0 B . 71 C . 48 D . 27
小明编写了一个数据插入程序。程序输入一个数字,将该数字插入一列有序数据:-5,3,4,12,20,45,70,并使数据序列保持有序。设计的算法是从前往后找位置插入。

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

Private Sub Command1_Click ( )

Dim a (1 To 8) As Integer

Dim n, i, j, x As Integer

List1. clear

List2, Clear

a(1)=-5 :a(2)=3 :a(3)=4 :a(4)=12 :a(5)=20 :a(6)=45 :a(7)=70

For j=1 To 7

  List1 AddItem Str (a(3))

Next j

x= Val(Text1. Text)

i=1

Do while x > a (i) And i < 8 ‘ 找x的插入位置

         ①       

  Loop

  For j = 8 To i+1 Step-1

         ②       

  Next j

a(i)=x

For j = 1 To 8

  List2 AddItem Str(a(3)

Next j

Label11. Caption ="插入的位置是" &       ③      

End sub

 ② ③ 

对下列数据序列进行冒泡升序排序,在排序过程中效率最低的序列是(  )
A . 31,29,24,20,15,10 B . 10,15,20,24,29,31 C . 29,10,31,15,20,24 D . 24,29,31,20,15,10
小明使用VB编写了一个按降序排名次的程序当数据相同时,排名相同)。程序运行时,随机产生10个[30,60]之间的随机数,并输出在列表框List中,单击“排名”按钮 Command1,在列表框List2中输出数据及其排名,程序运行界面如图所示。

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

Dim a (1 To 10) As Integer

Dim mc (1 To 10) As Integer

Private Sub Form Load( )

‘ 随机产生10个[30, 60]之间的随机数,保存在数组a中,并输出到列表框List1

‘ 代码略

End sub

Private Sub Command1_Click( )

Dim i As Integer, 3 As Integer, k As Integer

For i = 1 To 10

  k = 0

  For j = 1 To 10

    If  Then     ‘ ①

      k=k+1

          ‘ ②

    End If

  Next j

Next i

For i = 1 To 10

  List2.AddItem Str(a(i)) + " " + Str(mc(i))

Next i

End Sub

加框①处代码应改为

加框②处代码应改为

【排名次问题】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。

分数

100

99

98

97

96

95

94

0

个数

(A数组)

2

0

0

0

1

0

3

0

名次

(B数组)

1

3

4

程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。

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

  1. (1) 如表所示,若分数93的个数为2,则该分数对应的名次为
  2. (2) 请在划线处填入合适的代码

    Dim sName (1To50) As string    ‘ 存放学生姓名

    Dim sScore (1To50) As Integer    ‘ 存放学生分数

    Dim recCount As Integer    ‘ 存放学生人数

    Private Sub Form_Load ( )

    ‘ 本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示

    ‘ 代码略

    End sub

    ‘ 整数转换成长度固定的字符串

    Function ads (x As Integer, n As Integer) As string

    Dim sx As String, nx As Integer, i As Integer

    sx = Str (x):nx = Len (sx)

    For i =1 To n-nx

      sx = “”+ sx

    Next i

          ①     

    End Function

    Private Sub Command1_Click ( )

    Dim A (0 To 100) As Integer    ‘存放每个分数的个数

    Dim B (0 To 100) As Integer    ‘存放每个分数的名次

    Dim mc As Integer, score As Integer, i As Integer

    For i = 0 To 100

      A(i) = 0

    Next i

    For i = 1 To recount ‘ 计算每个分数的个数

           ②      

    Next i

    mc = 1

    For i = 100 To 0 step -1    ‘ 计算每个分数的名次

      If A(i) <> 0 Then

        B(i) = mc

             ③      

      End If

    Next i

    List2. clear

    List2. AddItem “姓名  分数  名次  ”

    List2. Additem “------------------------------”

    For i = 1 To recCount

      score = sScore(i)

      mc = B (sScore(i))

      List2. AddItem sName(i) + ads ( score,5) + "第" + ads(mc,3) + "名”

    Next i

    End sub

     ② ③ 

数组a中有n个正整数,对该数组进行排序,生成左右交替上升数据序列。实现该功能的VB程序段如下:

For i=1To n\2   

    k=i

     

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

    Next j

    If i<>k Then

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

    End If

     

    If  Then

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

      End If

    Next j

Next i

上述程序中方框处可选语句或表达式有:

①For j=i+1 To n-i+ 1    ②For j=i+1 To n-i

③a(j)<a(j+1) ④a(j)>a(j+1)

则(1)、(2)、(3)处语句依次是(  )

A . ①、②、③ B . ①、②、④ C . ②、①、③ D . ②、①、④
小吴为了研究冒泡排序过程中数据的”移动”情况,编写了一个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

 ⑵ 

某VB程序段如下:

    For i = 1 To 7

       b(i) = 1

Next i

For i = 1 To 7

    For j = 1 To i - 1

      If a(i)>a(j) and b(i)<=b(j) Then

        b(i) = b(j) + 1

      End If

    Next j

      If b(i) > max Then max = b(i)

Next i

数组元素a(1)到a(7)的值依次“50,10,14,64,47,70,82”,执行该程序段后,变量max的值是(   )

A . 5 B . 4 C . 3 D . 2
为促进学生学习中互帮互助,每次考后章老师都会按成绩重新编排机房上课位置,编排要求如下:

①按分数从高到低排序。若分数相同,则按学号进行升序排序。

②以班级为单位,排出从1号开始的机房座位表。章老师编写了一个位置编排功能的VB程序,在文本框Text1中输入班级名称,单击“读数据库”按钮Command1后,从数据库读取数据并显示在列表框List1中;单击“编排”按钮Command2,在列表框List2中输出学号、姓名、成绩和位置信息。运行界面如下图所示。

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

  1. (1) 分析程序,可知数据库的文件名为
  2. (2) 请在划线处填入合适的代码。

    Dim n As Integer

    Dim xh(1 To 40) As Integer, xm(1 To 40) As String, cj(1 To 40) As  Integer

    Private Sub Command1_Click()

    '本过程在文本框 Text1 中输入班级名称,从数据库中读取指定班级的学号、姓名和成绩的'数据分别存储在数组 xh,xm 和 cj 中

    Dim conn As New ADODB.Connection

    conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="

    + App.Path + "\js.accdb"

    conn.Open

    Dim rs As New ADODB.Recordset rs.ActiveConnection = conn

    rs.Open "select * from 技术"

    '本过程的其他语句略

    End Sub

    Private Sub Command2_Click()

      Dim wz(1 To 40) As Integer

      Dim i As Integer, j  As Integer

      List2.AddItem "学号" & " " & "姓名" & " " & "成绩" & " " & "位置"

    For i = 1 To n

            ①        

    Next i

    For i = 1 To n

    For j = 1 To n

    If       ②        Then wz(i) = wz(i) + 1

    End If

    Next j

    List2.AddItem adj(Str(xh(i))) + adj(xm(i)) + adj(Str(cj(i))) + adj(Str(wz(i)))

    Next i

    End Sub

    Function adj(c As String) As String    '固定输出5个字符长度

    Dim i As Integer

            ③       

    For i = 1 To 5  - Len(c)

    adj = adj + " "

    Next i

    End Function

     ② ③

  某校组织文艺汇演比赛,共20个班级参加,每5个班级划为一个团队,1~5班为甲队,6~10班为乙队,11~15班为丙队,16~20班为丁队。20个班级根据抽签的顺序依次上台,共有6位评委为每个班级的表演打分,去掉一个最高分和一个最低分,剩下4个分数的平均值叩为该班最终得分。现要求编写VB程序对比赛数据进行汇总,左侧List1中显示原始数据,点击“汇总”按钮后,在List2中按顺序输出班级号以及对应计算得到的最终得分,并在Label3中输出每个团队的总分,程序运行界面如图所示。

  1. (1) 如上图所示数据,若要通过冒泡排序对3班的6个得分从大到小排序,需要交换的次数是次。
  2. (2) 请在划线处填入合适代码。

    Const nc=20    ‘班级总数

    Constn= 8

    Dim a(1 To n*nc) As Single

    Dim sum(1 To 4) As Single        ‘存储每个团队的总分

    Dim q(1 To nc) As Integer         ‘存储演出时班级出现的顺序

    Private Sub Form_Load()

    ‘本过程读取班级号和6个打分情况存储到a数组中。a(1)存储第一个上台的班级号,a(2)~a(7)中存储该班的6个得分,a(8)预留出来,用来存储该班最终得分,初值为0;a(9)存储第二个上台的班级号,a(10)~a(15)中存储第二个上台班级的6个得分,a(16)预留,用来存储该班最终得分,初值为0,以此类推。在List1中输出班级号和6个得分,代码略。

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer, k As Integer, s As String

      For i=1 To n* nc                   ‘将每个班的6个得分排序

        If i Mod n<>0 And i Mod n<>1 Then

          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

        End If

      Next i

      For i=1 To n* nc Step n            ‘计算每个班的最终得分,存入相应位置

        a(i+n-1)=(a(i+2)+a(i+3)+a(i+4)+a(i+5))/4

      Next i

      For i=1 To n* nc Step n    ‘计算每个团队总分

       

      Next i

      For i=1 To n* nc Step n

        k=a(i)

        q(k)=i

      Next i

      For i=1 To nc

        List2.Addltem Str(i)&" "&

      Next i

      s="甲:"+Str(sum(1))+"乙:"+Str(sum(2))+"丙:"+Str(sum(3))+"丁:"+Str(sum(4))

      Label3.Caption=s

    End Sub

某著名景点在七月份收到若干旅游公司的通告,通告中包括该公司旅游的起始时间和终止时间, 如[6,10]表示该旅行团 6 号早上到,10 号早上回。疫情期间为避免人员扎堆,公司在时间段[start, ending]进行限流操作,要求在该时间段内景点每天都接待游客,且接待的旅行团越少越好。若景点收到的旅行团的数据是[3,8]、[3,6]、[8,15]、[18,25]、[14,20]、[5,10],[10,18]、[13,18]限流时间是[4,19]。工作人员对旅行团的数据做了如下处理:

①将旅行团的旅行时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序。排好序的时间段是[3,6]、[3,8]、[5,10]、[8,15]、[10,18]、[13,18],[14,20]、[18,25].

②从前往后遍历时间段,选择“到达时间”不大于“限流开始时间”的时间段,若有多个时间段满足条件,且时间段未超出限流时间,应选择“返回时间”最大的时间段,选择的时间段是[3,8]。

③缩小限流时间[8,19],重复步骤 2,选择满足条件的时间段是[8,15],缩小限流时间[15,19],重复步骤 2,选择满足条件的时间段是[14,20],结束时间已超过限流终止时间,结束。

④若在遍历时间过程中出现“到达时间”大于“限流开始时间”,景点不能每天接待旅客,则没有满足条件的旅行社。

小王编写VB程序,程序界面如下所示,单击“排序”按钮,将旅行团的时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序,在Text1和Text2中输入限流的起始时间和终止时间,单击“满足条件的旅行团”按钮,在列表框输出满足条件的旅行团的时间,若没有满足条件的旅行社,则在列表框输出“没有满足条件的旅行团!”

回答下列问题:

  1. (1) 若景点接收到的旅行社的起始时间和终止时间分别为[5,17]、[7,18]、[4,12]、[3,8]、[2,10],限流时间是[3,15],筛选出的旅行团的时间是
  2. (2) 请在横线处填入合适的代码

    Dim i As Integer, j As Integer, n As Integer, t As Integer Dim a(100) As Integer, b(100) As Integer

    Private Sub Command1_Click()

    '将旅行团个数存入n,加载n个旅行团的起始时间、终止时间并分别放在数组a和数组b中,代码略

        For i = n to 2 step -1

            j=1

            Do while

                If a(j) > a(j + 1) Or a(j) = a(j + 1) And b(j) > b(j + 1) Then

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

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

                End If

                j=j+1

            Loop

        Next i

    '输出排好序的时间段,代码略

    End Sub

    Private Sub Command2_Click()

        Dim arrivetime As Integer, leavetime As Integer

        start = Val(Text1.Text): ending = Val(Text2.Text)

        For i = 1 To n

            arrivetime = start

            If a(i) <= arrivetime Then

                If b(i) > leavetime Then leavetime = b(i): t=i

                IfThen

                    List2.AddItem  Str(a(t))  &  "---"  &  Str(b(t)) Exit For

                End If

                Else

                    If start < arrivetime or i = 1 Then

                        List2.Clear

                        List2.AddItem "没有满足条件的旅行团!"

                   Exit For

                End If

                List2.AddItem Str(a(t)) & "---" & Str(b(t))

               

                i = i – 1

            End If

        Next i

    End Sub

某排序算法的VB程序段如下:

For i=8 To 2 Step-1

  For j=i-2 To 1 Step -2

     If a(j)<a(i) And i Mod 2=1 Then

        t=a(j):a(j)=a(i):a(i)=t

    ElseIf a(j)>a(i) And i Mod 2=0 Then

        t=a(j):a(j)=a(i):a(i)=t

    End If

  Next j

Next i

数组元素a(1)到a(8)的值依次为20、15、62、26、74、64、 20、32,执行该程序段后,数组元素的值依次是:(    )

A . 20、15、20、26、62、32、74、64 B . 74、15、62、20、26、32、20、64 C . 15、20、20、26、32、62、64、74 D . 74、15、62、26、20、32、20、64
某学校进行问卷调查,共n个班级,现将参与问卷调查的学生名单在文本框Text1中按照“班级编号+姓名”的方式连续输入。单击“查询”按钮,统计每个班参与问卷调查的人数。在列表框List1中按“参与人数”降序输出,当“参与人数”相同时,按班级编号升序输出。程序运行界面如图。实现上述功能的VB程序段如下:

Private Sub Search_Click()

    Const n = 12

    Dim s As String, c As String

    Dim i As Integer, t As Integer

    Dim rs(0 To n) As Integer       '数组rs存储班级人数

    Dim bj(1 To n) As Integer       '数组bj存储班级编号

    Dim flag As Boolean

    s = Text1.Text

    t = 0

    For i = 1 To Len(s)

        c = Mid(s, i, 1)

        If c >= "0" And c <= "9" Then

            t =      ①        

            flag = True

        ElseIf flag = True Then

            rs(t) = rs(t) + 1

            flag = False

            t = 0

        End If

    Next i

    For i = 1 To n

        bj(i) = i

    Next i

    For i = 1 To n-1

        k = i

        For j = i + 1 To n

            If       ②       Then k = j

        Next j

        If k <> i Then

            t = rs(k): rs(k) = rs(i): rs(i) = t

            t = bj(k): bj(k) = bj(i): bj(i) = t

        End If

    Next i

    For i = 1 To n

        List1.AddItem Str(bj(i)) + "班有:" + " " +  + "人"

    Next i

End Sub

  1. (1) 本程序中的事件处理过程名是
  2. (2) 完善程序,在划线处填写正确代码。

     ② 

  3. (3) 程序代码中,加框处有错,请改正。
整理书目清单。统计某书店每天畅销书的销售清单,计算库存,并根据每本书的警戒库存进行分组处理,按库存数小于等于警戒1库存数,库存数大于警戒1库存数但小于等于警戒2库存数,大于警戒2库存数的分成三组,并按库存数降序排序。某同学编写VB程序如下:从数据库读取销售清单并显示在列表框list1中,点击按钮“书目整理”计算每本书的库存(库存=原有库存数-已经销售的数量,不存在销售数量大于库存数的情况),根据每本书的两个警戒库存,将书目分成三组,每组书目按库存数量降序显示在列表框list2中,程序运行界面如图1所示。

图1

例如某天的销售清单,库存数据如图2所示,根据每本书的警戒1和警戒2库存,分组后的数据如图3所示。

图2

图3

  1. (1) 若有140本畅销书,用两位数编码(每位数可以是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F),则该编码对应的最小的进制数是进制。
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码。

    Dim stock(1 To 52) As Integer        '存储每本书警戒1和警戒2的库存数量

    Dim num(1 To 100) As Integer           '存储每本书每次的销售数量

    Dim bm(1 to 26) As String           '存储每本书的书名编码

    Dim kc(1 To 26) As Integer          '存储每本书的库存数量

    Dim sell(1 To 26) As Integer,q(1 To 26) As Integer

    Private Sub Form_Load()

        '从数据库读取书目销售清单数据,显示在list1中,分别存在数组

        'stock(1),stock(2)存书名编码A的警戒1库存,警戒2库存;stock(3),stock(4)存书名编码B的警戒1库存,警戒2库存,依次类推,代码略

    End sub

    Private Sub Command1_Click()

        For i = 1 To 100         '处理100条销售清单数据

            k = Asc(bm(i)) - 64

         

        Next i

        n = 0

        For i = 1 To 26      '更新库存数据

            If sell(i) > 0 Then

                n = n + 1

               

                kc(i) = kc(i) - sell(i)

            End If

        Next i

        head = 0: tail = n + 1: j = 1

        Do While j < tail

            r = kc(q(j))

            If r <= stock(2 * q(j) - 1) Then

                head = head + 1

                If  Then t = q(head): q(head) = q(j): q(j) = t

                j = j + 1

            ElseIf r > stock(2 * q(j)) Then

                tail = tail - 1

                t = q(j): q(j) = q(tail): q(tail) = t

            Else

                j = j + 1

            End If

        Loop

        '分组排序及排序后数据显示在列表框list2中,代码略

    End Sub

双向选择排序算法。在经典的选择排序基础上,如果在选择出最小数的同时,也能选择预见最大数并将两数放置合适位置,这样就使排序效率提高一倍。依照上述双向选择排序的算法,小张编写了一个VB程序,功能如下:在列表框List中显示排序前数据,单击“排序”按钮Command1,在列表框List中显示这些数据按升序排序后的结果。运行效果如下图所示。

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

Const n=10

Dim b(1 To n)As Integer

Private Sub command1_Click( )

    Dim i As Integer

    Dim t As Integer

    For i=1 To   

        For j=i To   

            If b(j)<b(i) Then

                t=b(i):b(i)=b(j):b(j)=t

            End If

            If b(j)>b(n-i+1) Then

                t=b(j):b(j)=b(n-i+1):b(n-i+1)=t

            End If

        Next j

    Next i

    For i=1 To n

        List2.AddItem Str(b(i))

    Next i

End Sub

Private Sub Form_Load( )

    For i=1 To 10

        b(i)=1+Int(Rnd*100)

        List1.AddItem Str(b(i))

    Next i

End Sub

数字频率统计:小王编写VB程序,实现如下功能:在Text1中输入一串包含数字的任意字符串,单击“统计”按钮Command1,在列表框List1中统计并输出数字0~9出现的次数,并在标签框Label1中输出出现次数最多的数字(次数相同的数字只要求输出其中的第一个)。运行界面如图所示,VB程序代码如下。

为实现上述功能,请在划线处填入合适的代码。

Private Sub Command1_ Click()

    Dim a(0 To 9) As Integer, s As String

    Dim k As String, i As Integer, max As Integer

    s=Text1. Text

    List1. Clear

    For i=1 To Len(s)

        k=Mid(s, I, 1)

        If k >=“0”And k <=“9”Then

            

        End If

    Next i

    max=0

    For i=0 To 9

        If  Then

            max= i

        End If

        List1. AddItem Str(i) &“出现了:”& a(i) &“次”

    Next i

    Label1. Caption=“出现次数最多的数字是:”&. Str( max)

End Sub

某VB程序段如下:

i=1

Do While i<=3

    k= i

    j =i+1

    Do While j<=5

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

        j=j+1

    Loop

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

    End If

    i=i+1

Loop

数组元素a(1)到a(5)的值依次为“17,87,36,22,45”,则该程序段运行后,数组元素a(1)到a(5)的数据依次是(     )

A . 87,45,36,17,22 B . 17,22,36,45,87 C . 17,22,36,87,45 D . 87,45,17,36,22