1.   数组a 中存储的是左右交替上升的n个正整数,如下表所示:

a(1)

a(2)

a(3)

……

a(n-2)

a(n-1)

a(n)

3

25

38

……

55

31

12

依据对分查找思想,设计一个在数组a中查找数据key 的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。

Private Sub Command1_Click()

    Const n = 6

    Dim a(1 To n) As Integer, flag As Boolean

    Dim i As Integer, j As Integer, m As Integer, key As Integer

     ‘读取一组正整数,按上述规则存入数组a中,代码略

    key = Val(Text1.Text)

    i = 1

    j = (n + 1) \ 2

    flag = False

    Do While And Not flag     ‘⑴

        m = (i + j) \ 2

        If key = a(m) Then

            flag = True

        ElseIf key < a(m) Then

            j = m - 1

        Else

            i = m + 1

        End If

    Loop

    If Not flag And j > 0 Then

        m =      ‘⑵

        If key = a(m) Then flag = True

    End If

    If flag Then

        Text2.Text = Str(m)

    Else

        Text2.Text = "找不到"

    End If

End Sub

【考点】
查找算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 普通
能力提升
变式训练
拓展培优
真题演练
换一批
1. 编写“数对查询”程序,实现如下功能:生成11个随机整数存入数组,并在标签Label1中显示。在文本框Text1中输入一个正整数,单击“搜索”按钮Command1,在数组中查找和为该正整数的两个数,并在列表框List1中输出查询结果。程序运行界面如图所示:

实现上述功能的VB程序如下:

Const n=11

Dimd(1 To n)As Iteger

Private Sub Form_ Load( )

    '生成n个随机整数存入数组d,并在Label1中显示,代码略

End Sub

Private Sub Command1_Click( )

    Dim sum As Integer, L As Integer, R As Integer, c As Integer

        ①   

    c=0

    For L=1 To n-1

        R=n

        Do While L< R

            If   ②    Then

                List1.Addtcem Str(d(L))& " " & Str(d(R))

                c=c+1

                Exit Do      'Exit Do表示退出循环

            Else

                

            End If

        Loop

    Next L

    List.Addtem "找到和为" "& Str(sum)& "的数对共" & Str(c)&"组"

End Sub

请回答下列问题:

(1) 在设计程序界面时,要修改文本框Textl中文字的字体大小,可修改文本框的属性(单选,填字母: A .Text/B .Width/C .Font )。
(2) 请在划线处填入合适的代码。

 ② 

(3) 程序中加框处代码有错,请改正。
(4) 根据程序,若文本框Text1中输入内容为28,则能找到满足条件的数对组数为
综合题 普通