试题

试题 试卷

logo

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

浙江省杭州市2017-2018学年高三上学期信息技术教学质量检测

【加试题】小华在探究将两段已按从小到大排序的数据连接后用冒泡排序思想再进行从小到大排序的情况,编写VB程序功能如下:在列表框List1中显示排序前的数据(存储在数组c中),单击“排序”按钮Command1后,在列表框List2中显示排序后的数据。程序运行界面如图所示。

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

Const n1=9       ‘第1段已排序数据长度为n1

Const n2=6       ‘第2段已排序数据长度为n2

 ‘数组c长度为n1+n2,依次存储第1,2段数据

Dim c(1 To n1+n2)As Integer

Private Sub Command1_Click()

    ‘数组c依次存储两段已按从小到大排序的数据

    ‘并在列表框List1中显示,代码略

     List2.Clear

           A位置 

     For i=n1+1 To n1+n2

         j=i

           B位置  

        Do While j>1 And Flag

              t=c(j)

             c(j)=c(j-1)

             c(j-1)=t

       C位置 

        Else

          Flag=False

        End If

        j=j-1

                ‘②

      Loop

    Next i

    For i=1 To n1+n2

    List2.Addltem c(i)

    Next i

End Sub

(1)、①处加框代码有错,应修改为

(2)、②处“Flag=True”语句的位置有错,应放在(单选,填字母:A/B/C)位置。

举一反三
学校需要统计学生的作业完成数,需要将学生的完成数按从高到低显示,下列程序模拟该信息处理过程,程序在数据库stud中找到的学生信息(编号和完成次数),并将所有学生按照完成数从高到低显示。先将所有学生的编号和完成次数从数据库stud的info表中ID和finshed两字段中取出分别保存在数组a和数组b中,第i个学生的编号保存在a(i)中,对应的作业完成次数保存在b(i)中。

数据库文件“stud. accdb”信息如图所示。

程序界面如图所示,左边列表框List1中显示所有学生信息(包括编号和完成次数),单击“排序”按钮(Command),所有编号按照作业完成次数从高到低显示在列表框List2中。

代码如下:

Dim conn As New ADODB. Connection

Dim rs As New ADODB. Recordset

Dim n As Integer

Dim a(500)As String

Dim b(500)As Integer

Private Sub Fom Load()

    Dim i As Integer

    conn. Connection String="Provider=Mi-crosoft. AC

    A.OLEDB. 12.0;DATA Source="& App. Path &"\stud. accdb"

    conn Open

    Set rs. Active Connection=conn

    rs. Open "Select*From info"

    n=0

    Do While not rs.EOF            '到记录集最后一条记录后退出循环

        n=n+1

        a(n)=rs. fields("id")

        b(n)=rs. fields("finshed")

        rs. MoveNext                 '移动到下一条记录

    Loop

    For i=1 To n

        List1. AddItem a(i)+" "+Str(b(i))

    Next i

    rs. Close

    conn. Close

    Set rs= Nothing

    Set conn= Nothing

End sub

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, t1 As Integer, t2 As String, k As Integer

    For i=1 To n-1             'n表示学生总数

        k=i           'k保存第i大的数,一开始假定是a(i)

        For j=i+1 To n

            If b(k)<b(j) Then k=j            '比较完成数

                ①      

            If    ②      Then

                t1=b(i): b(i)=b(k): b(k)=t1           '交换完成次数

                t2=a(i): a(i)=a(k): a(k)=t2           '交换编号

            End If

        Next j

    Next i

    For i=1 To n          '在列表框List2中输出排序结果

        Listt2. Addltem a(i)+" "+Str(b(i))

    Next i

End sub

返回首页

试题篮