试题

试题 试卷

logo
  • 题型:单选题 题类:模拟题 难易度:困难

    【加试题】某数组有10个元素,依次为11、22、33、45、55、66、77、88、92、98,若采用对分查找法在该数组中查找数据92,依次被访问的数据为(   )
    A . 55、88、92 B . 55、77、88、92 C . 66、88、92 D . 66、88、98、92
    【考点】
    【答案】
    【解析】
      

    收藏 纠错

    组卷次数:8次 +选题

  • 举一反三
    小明利用所学的信息技术知识帮助语文老师设计一个语文学考等级查询系统,要求如下:输入某个等级,就能查出该等级的所有学生学号和姓名,并统计出该等级学生的人数,以便语文老师方便了解学生的学考情况。语文学考成绩分A、B、C、D、E五个等级,学生信息存储在数据库文件“stugrade.accdb”的数据表“Chinese”中,数据表“Chinese”的结构如图1所示。

    VB程序运行界面如图2所示,在文本框Text1中输入查询的等级,单击“查询”按钮Command1,在列表框List1中显示所有该等级的学生学号和姓名,并按照学号从小到大排序,并在标签Label2处显示学生的人数,如果人数为0,则在列表框中显示“没有该等级的学生”。按此要求编写程序如下,在下划线处填上合适的代码。

    Private Sub Command1_Click()

    Dim stuna(1 To 100) As String '存放学生姓名的数组定义为stuna

    Dim stunum(1 To 100) As String '存放学生学号的数组定义为stunum

    Dim i As Integer, j As Integer, n As Integer

    Dim t As String

    Dim cn As New ADODB.Connection       '连接数据库

    Dim rs As New ADODB.Recordset

    Dim strSQL As String

    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\stugrade.accdb "

    cn.Open

    strSQL = "select * from      ①       where 语文等级='" + Text1.Text + "'"

    Set rs.ActiveConnection = cn

    rs.Open strSQL

    n = 0

    Do While Not rs.EOF

              ②    

       stuna(n) = rs.Fields("姓名").Value

       stunum(n) = rs.Fields("学号").Value

       rs.MoveNext       

    Loop

    rs.Close

    cn.Close

    Set rs = Nothing

    Set cn = Nothing

    List1.Clear '清除列表框

    If n = 0 Then

       List1.AddItem "没有该等级的学生"

    Else

       For i = 1 To n - 1       '按姓名排序

          For j = n To    ③    Step -1

             If        ④          Then      

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

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

             End If

         Next j

       Next i

       For i = 1 To n

          List1.AddItem stunum(i) + "  " + stuna(i)

       Next i

       Label2.Caption = "该等级的学生共有" + Str(n) + "名"

    End If

    End Sub

    其中①处填入          ;②处填入           ;③处填入           ;④处填入           

    编写一个查找最接近的数的VB程序:程序运行时,在文本框Text1中输人产生随机数的个数(1到100之间),单击命令按钮“产生随机数并升序排列”后,在列表框List1中显示已经按升序排列后的随机整数,然后在文本框Text2中输入要查找的整数,单击命令按钮"查找"后,在标签Label3中显示随机整数序列中与待查找数最接近的整数(当最接近的数有2个时,输出较大的一个)。程序运行效果如图所示:

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

    Dim n As Integer          '存储随机数的个数

    Dim f(1To100)As Boolean

    'f(i)为True时表示随机整数i已经产生过

    Dim a(1 To 100)As Integer

    '依次存放升序排序后的n个随机数

    Private Sub Command1_Click()

    '命令按钮“产生随机数并升序排列”的单击事件

        Dim i As Integer

        Randomize

        For i=1 To 100

            f(i)=False

        Next i

        n=Val(Text1. Text)

        For i=1 To n

            t=Int(Rnd * 100+1)

            Do While f(t)=True

                t=Int(Rnd * 100+1)

            Loop

            {#blank#}1{#/blank#}

        Next i

        j=0

        For i=1 To 100        '实现排序并输出

            If f(i)=True Then

                {#blank#}2{#/blank#}

                a(j)=i

                List1.AddItem Str(i)

            End If

        Next i

    End Sub

    Private Sub Command2_Click()

    '命令按钮“查找”的单击事件

        Dim key As Integer

        key=Val(Text2. Text)

        If key <=a(1) Then Label3. Caption=Str(a(1)): Exit Sub

        If key >=a(n) Then Label3. Caption=Str(a( n)): Exit Sub

        L=1: R=n

        Do While L<=R                '找到与 key 较为接近的两个数a(R)和a(L)

            m=(L+R)\2

            If key<=a(m)Then

                R=m-1

            Else

                L=m+1

            End If

        Loop

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

        '在a(R)和 a(L)中选出更接近key的数

            Label3. Caption=Str(a(R))

        Else

            Label3. Caption=Str(a L))

        End If

    End Sub

    返回首页

    试题篮

    共计:(0)道题