试题

试题 试卷

logo

题型:单选题 题类:常考题 难易度:困难

浙江省台州市联谊五校2018-2019学年高二下学期信息技术期中考试试卷

【加试题】某对分查找算法的VB程序段如下:

t = "": i = 1 : j = 9 : f = False

Do While i <= j And Not f

    m = (i + j) \ 2

    t = t + Str(m)

  If a(m) = key Then

        t =t +“#”

        f = True

    ElseIf a(m) > key Then

        i = m + 1

        t = t + "→"

    Else

        j = m - 1

        t = t + "←"

    End If

Loop

数组元素 a(1)到 a(9)的值依次为“68、56、52、36、32、28、26、22、20”,执行该程序段,t的值可能是(  )

A、5←2→3 B、5←2←1→ C、5→2←1# D、5→7→8→9
举一反三
查找最接近的数。编写一个查找最接近的数的VB程序:程序运行时,在文本框Text1中输入产生随机数的个数(1到100之间),单击命令按钮“产生随机数并升序排列”后,在列表框List1中显示已经按升序排列后的随机整数。然后在文本框Text2中输入要查找的整数,单击命令按钮“查找”后,在标签Label3中显示随机整数序列中与待查找数最接近的整数(当最接近的数有2个时,输出较大的一个)。程序运行效果如图所示。实现上述功能的VB代码如下,请在横线处填入合适代码。

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

Dim f(1 To 100) 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(i)=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

返回首页

试题篮