相关试卷

  • 1、下列Visual basic表达式的值等于13的是(  )
    A、Val("11")+2 B、Len("11")+2 C、Sqr(11)+2 D、Str(11)+2
  • 2、下列可以作为Visual Basic变量名的是(  )
    A、5AD B、A+C C、Ab_3 D、B&C
  • 3、数组是一组相同类型的变量集合,集合中的每个元素都是一个独立的变量。定义一个数组如下:Dim A(10) as Single,关于该数组描述错误的是(  )。
    A、这个数组中有11个元素A(0)……A(10) B、这个数组中所有的元素数据类型都是Single C、这个数组中有10个元素A(1)……A(10) D、这个数组的数组名为A
  • 4、下列关于VB中数组的叙述,错误的是(  )。
    A、数组是一种基本数据类型 B、数组是一组相同类型的变量集合 C、数组中的所有元素可看作一个整体 D、数组元素的引用形式为“数组名(下标)”
  • 5、有一个报数游戏,n个人排成一圈,游戏开始时规定个报数号m,然后从其中一个人开始按顺时针报数1,2,3,…,n,当某人报到的数为m的倍数时,即被淘汰,其他人继续游戏,直到最后。现用VB设计了一个程序,程序界面如下图所示。在文本框Text1中输入参加游戏的人数n,在文本框Text2中输入报数号m,单击“报数”按钮,即在列表框List1中显示每次被淘汰的人的顺序号。

    实现上述功能的VB代码如下,但加框处有错,请改正。

    Private Sub Command1_Click()

    Dim n As Integer, m As Integer

    Dim a(1 To 50)As Integer

    n= Val(Text1. Text)

    m= Val(Text2. Text)

    For i= 1 To n

    Next i

    s=0;j=0

    Do While s <n

    t=0

    Do While t <m

         ①   

    t=t+ a(j)

    Loop

    a(j)=0

    s=s+1

    List1. Additem"第"+Str(s)+"次:"+Str(j)

    Loop

    End sub

    (1)、“报数”按钮的对象名称是
    (2)、程序代码中,加框处有错,请改正。
    (3)、程序代码中,将①处语句补充完整。
    (4)、程序运行结束后,变量t的值是
  • 6、某对分查找算法的VB程序段如下:

    i= 1 : j =9 : n =0

    key=Val(Text1.Text)

    Do While i<= j

    N=n+1

    M=Fix((i + j) / 2)

    If key = d(m) Then Exit Do

    If key<d(m) Then j= m - 1 Else i=m+1

    Loop

    数组元素d(l)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是(  )

    A、39 B、18或61 C、18或72 D、12或61
  • 7、某对分查找算法的VB程序段如下:

    Dim d(1 To 63) As Integer, i As Integer, s As Integer

    For i=1 To 63

     d(i)=i

    Next i

    Key=Int(Rnd*3)+1

    s=0: i=1: j=63

    Do While i<=j

    m=(i+j)\2

    If Key=d(m) Then Exit Do      'Exit Do表退出循环

    If Key<d(m) Then

    j=m-1: s=2*s

    Else

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

    End If

    Loop

    Label1.Caption=str(s)

    若运行该程序段后,标签Label1中显示的结果是28,则查找的key值是(  )

    A、28 B、29 C、57 D、58
  • 8、小李编写了一个成语接龙的VB程序,功能如下:在文本框Text1中输入一个成语,单击“接龙”按钮Command1,在列表框List1中显示接龙的成语。程序运行界面如下图所示。

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

    Dim n As Integer, cy(30000) As String

    Private Sub Form_Load()

    '从数据库中读入n条成语,并存数组cy中

    '代码略

    End Sub

    Private Sub Command1_Click()

    Dim s As String, i As Integer, j As Integer

    Dim m As Integer, flag As, Boolean

    Dim s1 As Siring, s2 As String

    s=Text1.Text

    flag=True

    Do While flag

          '①

    i=1

    j=n

    Do While<= j

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

    s2=Mid(cy(m), 1, 1)

    If s2=s1 Then

    Exit Do

    ElseIf s2<s1 Then

    i=m+1

    Else

    j=m-1

    End If

    Loop

    If  Then      '②

    List1.AddItem s+ "— —"+cy(m)

    s=cy(m)

    Else

    List1.AddItem "接不下去了"

    flag=False

    End If

    Loop

    End Sub

     ② 

  • 9、对分查找算法可用于求解方程的近似解。现要求方程x3-4x2+x+5=0的一个近似解,可设f(x)=x3-4x2+x+5,若有区间[a,b],使f(a)与f(b)异号,则该区间内必存在该方程的一个解。小吴为比编写了VB程序,功能如下:分别在本框Text1和Text2中输入求解的区间值a和b(a<b),单击“计算”按钮Command1,若该区间必有解,则求解出该区间内的一个近似解(精确到10-5)否则提示“重新输入区间”,计算后的相关结果显示在列表框List1中。程序运行界面如下图所示。

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

    Private Sub Command1_Click()

    Dim a As Double, b As Double, m As Double, x As Double

    Dim ym As Double, yb As Double

    a=Val(Text1.text):b=Val(Text2.Text)

    If a>b Then t=a: a=b: b=t

    Do While   ①   

    m=(a+b)/2

    ym=m^3-4*m^2+m+5

    yb=b^3-4*b^2+b+5

    If Abs(ym)<0.00001 Then Exit Do

    If    ②    Then

    b=m

    Else

    a=m

    End If

    Loop

    Text3.Text=Str(Int(m*10000)/10000)

    End Sub

     ② 

  • 10、某对分查找算法的VB程序段如下:

    i=1: j=8: t=0

    Key=Int(Rnd( )*18)+4

    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

    Loop

    数组元素a(1)到a(8)的值依次为“2,3,12,15,18,19,20,22”,该程序段运行结束后,变量t达到最大值时的Key值可能是(  )

    A、5 B、18 C、21 D、23
  • 11、某对分查找算法的VB程序段如下:

    flag=False

    i=0: j=7: c=0

    Do While<= j And flag=False

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

    If Key=a(m) Then flag=True

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

    c=c+1

    Loop

    数组元素a(0)到a(7)的值依次为“1,3,30,46,6S,72,84,90”,key的值为85。若该程序段执行后,以下说法中正确的是(  )

    A、i=6 B、j=7 C、m=7 D、c=4
  • 12、把学生成绩由高到低排序后,按姓名在前、成绩在后的顺序依次存储在数组a中。例如(“张三”“97”“李四”“92”“王五”“87”,……)。设计一个VB程序,利用对分查找思想实现在数组a中查找成绩为Key的学生姓名。程序段如下:

    i=1: j=n     'n代表学生的数量

    Key=Val(Text1.Text)

    Do While i<=j

    m=

    If Val(a(m))>Key Then i=m\2+1 Else j=m\2-1

    Loop

    List1.Clear

    j=j+1

    Do While i<=n

    If Val(a(2*j))=Key Then List1.AddItem a(2*j-1)+""+a(2*j)

    Else exit do

    j=j+1

    Loop

    上述程序中方框处可能的语句是(  )

    A、(i+j)\2 B、(i+h)/2 C、((i+j)12)*2 D、((i+j)\2)/2
  • 13、1.某对分查找算法的VB程序段如下:

    i=1: j=8: t=0

    Key=Int (rnd( )*20)+10

    Do While i<m=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

    Loop

    数组元素a(1)到a(8)的值依次为“2,11,14,15,18,19,25,32”,该程序段运行结束后,变量t的最大值可能是(  )

    A、1 B、2 C、3 D、4
  • 14、“轮转后有序数组(RotatedSortedArray)”是将有序数组取其中某一个数为分点,将其之前的所有数都轮转到数组的末尾所得。比如{7,11,13,17:2,3,5}就是一个轮转后的有序数组,原有序数组中的子串{2,3,5}被轮转到了数组的末尾处。

    对于一个轮转后有序数组arr可以进行二分查找,算法思路如下(以升序为例):

    每次根据查找的左侧位置L和右侧位置R求出中间位置M后,M左边,M和右边[M+1,R],这两部分中至少一个是有序的(可根据中间位置数据和边界数据的大小关系判断)。

    arr[M]和待查找数据Key比较

    ①arr[M]=key,返回M的值

    ②若M位置的右侧有序,当待查找数据在右侧,则下次在右侧查找,否则在M左侧查找

    ③若M位置的左侧有序,当待查找数据在左侧,则下次在左侧查找,否则在M右侧查找

    (1)、对于轮转后有序数组{7,11,13,17,2,3,5}使用以上函数search( )查找key值3,所需要的查找次数为
    (2)、以下VB函数Search( )实现了对轮转后有序数组arr进行二分查找的过程,如果查询成功,返回m值,查询失败则返回-1。请补充程序中①②③划线处的代码:

    Function Search (key As Integer, L As Integer, R As Integer) As Integer

        ①   

    Do While L<=R And Search=-1

    M=(L+R)\2

    If arr(M)=key Then

    Search=M

    Else

    If    ②    Then

    If arr(L)<=key And key<arr(M) Then

    R=M-1

    Else

    L=M+1

    End If

    Else

    If    ③    Then

    L=M+1

    Else

    R=M-1

    End If

    End If

    End If

    Loop

     ② ③ 

  • 15、(加试题)数组a中存储的是一组正整数,特征是:①以三个数为一组的话,每组中任意一个数都比前面一组中的任意一个数要大;②每组中三个数依次递减;③数组中数的总个数为3的倍数。依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有错,请改正。

    ……

    Private Sub Command1_Click()

     Const n = 15

     Dim a(1 To n) As Integer, search As Integer, key As Integer

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

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

     key = Val(Text1.Text)

     i = 1: j = n: search = 0

     Do While i <= j

     m = (i + j) \ 2

     If m Mod 3 <> 0 Then      '① 把m调整到三个一组的最后一个数的位置

     If key = a(m) Then

     search = m : Exit Do

    ElseIf key < a(m) Then

     j = m - 3

     ElseIf Then      '②

     i = m + 1

     ElseIf key = a(m - 2) Then

     search = m - 2 : Exit Do

    ElseIf key = a(m - 1) Then

     search = m - 1 : Exit Do

    Else

     search = 0 : Exit Do

     End If

     Loop

     If search <> 0 Then

     Text2.Text = Str(search)

    Else

     Text2.Text = "找不到"

     End If

    End Sub

    加①

  • 16、某查找算法的部分VB程序代码如下:

    i=1:j=8:k=0

    key=95

    Do While i<=j

    k=k+1

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

    If key=a(m) Then Exit Do

    If key<a(m) Then j=m-1 Else i=m+1

    Loop

    数组元素a(1)到a(8)的数据依次为“12,28,49,56,57,88,95,100”,该程序运行过程中,当变量k的值为2时,对应查找的a(m)值是(  )

    A、28 B、56 C、88 D、95
  • 17、已知一无序数组A中的元素为“90,15,40,72,65,32,81,6”通过引入数组a元素按升序排列时的下标,b数组元素为“8,2,6,3,5,4,7,1”,使得a(b(1))<=a(b(2))<=a(b(3))…<=a(b(n)),从对数组a中的数据进行对分查找。部分程序如下:

    i=1: j=8: c=0

    Key=Val(Text1.Text)

    Do While i<= j

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

    t=b(m)

    c=c+1

    If a(t)=Key Then p=t: Exit Do

    If a(t)< Key Then

    i=m+1

    Else

    j=m-1

    End If

    Loop

    当文本框Text1输的值为32时,程序运行结束后变量c的值是(  )

    A、1 B、2 C、3 D、4
  • 18、编写VB程序,实现如下功能:在文本框Text1中输整数x,单击“查找删除”按钮Command1,在数组a(从小到大排列并显示在标签Label1中)中查找该数。若找到,则从数组a中删除该数(该数后的数组元素都往前移一位),并在标签Label2中显示删除后的结果(运行效果如图所示);否则在标签Label2中显示“该数没有找到”。

    请在划线处填入合适代码。

    Dim a(1 To 10) As Integer

    Private Sub Form_Load()

    '产生10个升序的随机数并显示在Label1,代码略

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer, m As Integer, k As Integer

    Dim x As Integer, f As Boolean, s As String

    x=Val(Text1.Text)

    i=1: j=10: f=False

    Do While    ①  

    m=(i+j)\2

    If a(m)=x Then

    f=True

    ElseIf    ②     Then

    i=m+1

    Else

    j=m-1

    End If

    Loop

    If f=True Then

    For k=m To 9

       ③  

    Next k

    For k=1 To 9          '逐个显示删除后的数组元素

    s=s+Str(a(k))+ ""

    Next k

    Else

    s="该数没有找到"

    End If

    Label2.Caption=s

    End Sub

     ② ③ 

  • 19、已知数组元素a(1)到a(8)的值依次为89,78,57,56,45,34,23,12,若在Text1中输入12,然后执行以下程序段:

    Key=Val(Text1.text)

    Text2.Text= ""

    i=1: j=8: f=False

    Do While i <=j And Not f

    m=(i+j)\2

    If a(m)\10+a(m) mod 10 =Key Then

    search =m: f=True

    ElseIf a(m)\10+a(m) mod 10> Key Then

    i=m+1

    Else

    j=m+1

    End If

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

    Loop

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

    A、56 78 67 B、4 6 5 C、4 2 3 D、56 34 45
  • 20、数组a为一组循环有序不重复的数组,如(a(1)=25,a(2)=41,a(3)=100,a(4)=5,a(5)=7,a(6)=9)。依据对分查找思想:设计个在数组a中查找数据Key并显示在列表框的程序,界面如图所示。实现该功能的VB程序段如下:

    1=1:r=6

    Key=Val(Text1.Text)

    Do While <=r

    m=Int((1+r)\2)

    If a(m)=Key Then

    Exit Do

    Elself a(m)>=a(1) Then

    ElseIf a(m)<a(1) Then

    End If

    Loop

    上述程序中方框处可选语句为:

    ①If a(m)<Key And a(r)>Key Then 1=m+1

    Else r=m-1

    ②List1.AddItem "第"+Str(m)+ "值是"+Str(a(m))

    ③If a(m)>Key And a(1)<=Key Then r=m-1

    Else=m+1

    则(1)、(2)、(3)处语句依次是(  )

    A、③①② B、②①③ C、①③② D、②③①
上一页 1299 1300 1301 1302 1303 下一页 跳转