教科版高中信息技术选修一 对分查找变式

修改时间:2021-05-25 浏览次数:96 类型:同步测试 编辑

选择试卷全部试题 *点击此按钮,可全选试卷全部试题,进行试卷编辑

一、教科版高中信息技术选修一 对分查找变式

  • 1. 某对分查找算法的部分代码如下:

    i=1:j=1000:flag=True:p=0

    key=val(Text1.Text)

    Do While i<=j And flag

        m=(i+j)\2

        p=p+1

        if a(m)=key Then flag=False

        if a(m)>key Then j=m-1 Then i=m+1

    Loop

    数组元素a(1)到a(1000)中存放着升序排列的数据。下列说法正确的是(   )

    A . 若key的值小于a(1),则执行该段程序后,变量j的值等于1 B . 若key的值等于a(1),则执行该段程序后,变量p的值等于10 C . 若key的值等于a(1000),则执行该段程序后,变量i的值等于1001 D . 无论key的值是否在数值中a中,执行该段程序后,变量i的值均不可能等于m
  • 2. 数组元素a(0)到a(9)的值依次为“15,20,25,30,35,40,45,50,55,60”,文本框Text1中输入的是40,执行该程序段,下列描述正确的是(    )

    Key=Val(Text1.Text)

    i=0:j=9:s=0

    Do While i<=j

        m=Fix((i+j)/2+0.5)

        s=s+1

        if Key=a(m) Then

             Label1.Caption=Label1.Caption+“→”+Str(m)

             Exit Do

        End if

        if Key<a(m) Then j=m-1  Else  i=m+1

        Label1.Caption=Label1.Caption+“→”+Str(m)

    Loop

    Label2.Caption=“经历”+ Str(s)+“步”

    A . 标签Label1显示内容为“→4→7→5” B . 标签Label2显示内容为“历经1步” C . 该程序为顺序结构,查找次数为3 D . 该程序为对分查找,查找次数为3
  • 3. 已知数组元素a(1)到a(9)的值依次为19,28,37,46,55,64,73,82,91,若在Text1中输入29,然后执行以下程序段:

    Key=Val(Text1.Text)\10

    Text2.Text=“”

    i=1: j=9: f=False

    Do While i<=j And Not f

        m=(i+j)\2

        if a(m) Mod 10=Key Then

            search=m

            f=True

        Elseif a(m) Mod 10>Key Then

            i=m+1

        Else

            j=m-1

        End if

        Text2.Text=Text2.Text+Str(m)

    Loop

    则在执行该程序后,Text2中显示的内容是(    )

    A . 5  2 B . 5  7  8 C . 55  28   37 D . 55  37  28
  • 4. a(1)=2:a(2)=4:a(3)=5:a(4)=6:a(5)=8:a(6)=10:a(7)=11:a(8)=12

    n=0

    Key=int(Rnd*7)+2

    L=1: R=8

    Do While L<=R

        m=(L+R)\2

        if Key=a(m) Then

           Exit Do

        Elseif a(m)<Key Then

           L=m+1

           n=n+1

        Else

           R=m-1

           n=n-1

    Loop

    print Str(n)

    则程序运行后,输出的结果不可能是(     )

    A . 0 B . 1 C . -1 D . -2
  • 5. 某对分查找算法的VB程序段如下:

    Key=int(Rnd*49)*2+1

    s=0:i=1:j=10

    Do While i<=j

        m=(i+j)\2

        if Key=a(m) Then Exit Do

        if Key<a(m) Then

           j=m-1:s=2*s

        Else

           i=m+1:s=2*s+1

        End if

    Loop

    数组元素a(1)到a(10)的值依次为“2,6,7,15,20,24,27,43,52,63”,执行该程度段后,s的值不可能为(    )

    A . 2 B . 3 C . 5 D . 15
  • 6. 用对分查找的方法求不等式2x+3x-5≤n(n≥0)的最大正整数解,编写的VB程序段如下:

    Private Sub Command1_Click( )

        Dim L As Integer, R As Integer,n As Integer

        x As Integer

        n=Val(Text1.Text)

        L=1

        R=n+1

        Do While

              x=(L+R)\2

              if 2^X+3*x-5<=n Then L=x+1

              Else R=x-1

        Loop

        Label1.Cption=“方程2^X+3*x-5<=n的最大正整数解为:”+

             

    End Sub

    要使程序实现上述算法思想,则方框上的语句是(     )

    A . ①L<R   ②Str(L) B . ①L<R  ②Str(R) C . ①L<=R  ②Str(L) D . ①L<=R  ②Str(R)
  • 7. 某vb程序段如下:

    L=1: R=10: n=10: key=78

    Do While L<=R

        m=Fix((L+R)/2)

        If  Then

            R=m-1

        Else

            L=m+1

        End If

    Loop

    For i=1 To R

        List1.Additem Str(a(i))

    Next i

    数组元素a(1)到a(10)的值依次为86,78,78,77,73,69,60,54,54,51,若执行该程序段后,列表框List1中输出的数据个数为3,则方框处的代码为(     )

    A . Key>a(m) B . Key>=a(m) C . Key<a(m) D . Key<=a(m)
  • 8. 有如下VB程序段:

    i=1: j=63: n=0

    Do While i<=j

        M=(i+j)\2

        If Key=a(m) Then

            Exit Do

        Elself Key<a(m) Then

            J=m-1:n=n-1

        Else

            I=m+1:n=n+1

        End if

    Loop

    数组元素a(1)到a(63)存放着递增的数据。若执行该程序段后n的值为6,则下列表达式成立的是(    )

    A . key<a(1) B . key=a(1) C . key=a(63) D . key>a(63)
  • 9. 有VB程序段如下:

    a(1)=2:a(2)=2:a(3)=5:a(4)=6:a(5)=7

    Key=2

    i=1: j=5: flag=False

    Do While i<=j And Not Flag

        m=(i+j)\2

        if Key = a(m) Then

            s=“找到第”+Str(m)+“个”

            flag=True: Exit Do

        Elseif Key<a(m) Then

            j=m-1

        Else

            i=m+1

        End if

        s=str(m)+s

    Loop

    Label1.Caption=s

    执行该程序后,在标签Label1中显示的内容是(    )

    A . 1     3 B . 3     1 C . 找到第1个 D . 找到第2个
  • 10. 某对分查找算法的VB程序段如下:

    i=1: j=8: t=0

    key=int(Rnd( )*7)+14

    Do While i<=j

        m=int((i+j)/2)

        t=t+1

        if a(m)=key Then

            Exit Do

        Else

            if a(m)>Key Then

                j=m-1

            Else

                i=m+1

            End if

        End if

    Loop

    数组元素a(1)到a(8)的值依次为“2,11,14,15,18,19,20,22”,执行该程度段后,变量t的最大值可能是(    )

    A . 1 B . 2 C . 3 D . 4
  • 11. 数组元素a(1)-a(2*n)中存储的一批正整数,以两个数为一组,每组中两个数均比前面一组的两个数要大。现用对分查找的思想,设计一个在数组a中查找数据key的程序,如果找到key,在标签Label1上显示“yes”,否则显示“no”。

    Key=Val(Text1.Text)

    i=1:j=n*2:flag=False

    Do While i+1<=j And Not flag

        m=(i+j)\2

        If  Then m=m-1

        If a(m)=Key or a(m+1)=Key Then

            Flag=True

        Elseif a(m)>key Then

               

        Else

           

        End if

    Loop

    If a(i)=Key Or a(j)=Key Then flag=True

    If flag Then Label1.Caption=“yes” Else Label1.Caption=“no”

    划线处的代码正确的是(     )

    A . ①m Mod 2=1  ②j=m-1   ③i=m+2 B . ①m Mod 2=0  ②j=m-1   ③i=m+2 C . ①m Mod 2=1  ②j=m-2   ③i=m+2 D . ①m Mod 2=0  ②j=m-2   ③i=m+2

试题篮