相关试卷

  • 1、查找并删除重复数据的算法是基于顺序查找的优化,主要思路是把待查数据的起点元素设置成查找关键字,然后从后往前查找,通过结束时所停留的数据位置来判断查找结果(即结束时若停留在数据序列的起点,则表示数据序列中无重复数据;否则,存在重复数据,删除该数据后继续查找)。

    编写VB程序,实现上述算法。程序功能如下:运行程序时,在列表框List1中显示数组a中的原始数据,并在列表框List2中输出去重后的数组a中的数据,即相同的数据仅保留一个。同时在标签Label1中显示删除的数据总个数,运行效果如图所示,程序代码如下:

    Const maxn=10

    Dim a(1 To maxn)As Integer

    Private Sub Form_Load( )

    ´maxn个数据在数组a中,并在列表框List1中显示

    End Sub

    Private Sub Command1_Click( )

      Dim i As Integer, n As Integer       ‘n用于存储当前查找的数字长度

      Dim j As Integer, key As Integer       ‘key用于存储本次查找的关键字的数据位置

        key=1:n=maxn

        Do While key<=n

        i=n-1

        Do While       ‘①

            i=i-1

        Loop

        If i=key Then        ‘找到重复数据,删除;未找到,设定下一查找关键字

           key=key+1

        Else

          For j=i To n-1

              a(j)=a(j+1)

          Next j

          n=n-1

        End If

      Loop

      For i= 1To n

          List2.AddItem a(i)

      Next i

      Labell.Caption="共删除重复数据:"&___________&"个"

    End Sub

    (1)、程序代码“Sub Form_Load( )”中,Load是(单选,填字母:A .属性名/B .事件名/C .方法名/D .类名)。
    (2)、程序代码中,加框处循环条件有误,请改正。
    (3)、请将程序代码中的画线处赋值语句补充完整。
    (4)、如图所示的原始数据中,重复数是“1,7,10”,该程序运行时,最先删除的重复数是
  • 2、已知数组a中存储五个数据:8,13,24,32,45,现在Text1中输入一个整数x,将x插入到数组中,并使数据序列仍保持有序。

    Private Sub Command1_Click( )

    Dim n, i, j, x As Integer

    n=5:i=1

    x=Val(Text1.Text)

    If x>a(n)Then

      a(n+1)=x

    Else

      Do While x>a(i)

             ①   

        Loop

        For j=n To i Step-1

          a(j+1)=a(j)

        Next j

           ②   

      End If

      n=n+1

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

  • 3、有如下VB程序段:

    n=10

    For i=1 Ton-1

        For j=i+1 To n

            If a(i)=a(j)Then

              a(j)=a(n)

              n=n-1

            End If

        Next j

    Next i

    若数组a中的元素为“3,3,7,7,11,11,15,15,19,19”,则该程序执行后,数组a中的n个元素值依次为(  )

    A、3,19,7,15,11 B、3,7,11,15,19 C、3,3,7,7,11 D、3,19,7,19,11
  • 4、有如下VB程序段:

    m=Val(Text1.Text)

    i=n:f=False

    Do While i>0 And f=False

        If a(i)>m Then

          a(i+1)=a(i)

          i=i-1

        Else

          f=True

        End If

    Loop

    数组中的n个元素从小到大排序,如果要将Text1中输入的值m插入到数组中,仍使元素值保持有序,则应插入的正确位置是(  )

    A、i-1 B、i C、i+1 D、i+2
  • 5、编写寻找最长等差数列程序时,先随机生成n(n=20)个互不相同的整数,并降序排列后显示在List1中,找出由连续的数组元素构成的最长等差数列,并将其输出在列表框List2中(若长度相等,则输出靠前的一组),程序运行界面如图所示。

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

    Dim a(1 To 20)As Integer

    Dim n As Integer

    Private Sub Command1_Click( )

    ‘随机生成20个互不相同的整数,存储在数组a中,n记录了整数的个数,代码略

    End Sub

    Private Sub Command2_Click( )

      Dim t,max,w As Integer

      Dim i,c As Integer

      max=1:w=1

      i=2:t=2

         ①   

      Do While i<n

          If a(i+1)-a(i)=c Then

            t=t+1

            If t>max Then

              max=t

                 ②   

            End If

          Else

            t=2

            c=a(i+1)-a(i)

          End If

          i=i+1

    Loop

    If max>2 Then

    For i=   ③   To w

            List2. AddItem Str(a(i))

        Next i

    Else

        List2. AddItem"没有找到等差数列"

    End If

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

  • 6、在一行数据(1,23,6,2,4,5,6,18,5,19)中,存在连续递增的数据序列(1,23),(6),(2,4,5,6,18),(5,19),其序列长度分别为2,1,5,2,则连续递增的数据序列长度的最大值max=5。求max值的VB程序如下,但加框处代码有错,请改正。

    Const n=10

    Dim a(1 To n)As Integer

    ‘Text1_KeyPress过程用于输入数据并将数据依次存放到数组a中

    Private Sub Text1_KeyPress(KeyAscii As Integer)

    ‘该过程代码略

    End Sub

    Private Sub Command1_Click( )

      Dim i,k,max As Integer

      max=1

      k=1

      For i=2 To n

          If  Then k=k+1 Else k=1         ‘⑴

          If k>max Then                    ‘⑵

      Next i

      Text2.Text=Str(max)

    End Sub

    以上程序段运行时,为了实现上述功能,加框处的代码应改正为:⑴;⑵

  • 7、下列VB程序段是选择排序程序的主要部分。其中框内代码用于寻找数据元素a(i)到a(n)的最小值。

    For i=1 To n-1

      k=i

      If i<>k Then t=a(i):a(i)=a(k):a(k)=t

    Next i

    框内代码运行结束时,保存最小值的数组元素一定是(  )

    A、a(n) B、a(j) C、a(i) D、a(k)
  • 8、有如下VB程序段,该程序段执行后,变量x中存储的是(  )

    k=1

    For j=2 To 100

      If a(j)>a(k)Then k=j

    Next j

    x=a(k)

    A、a(1)至a(100)中的最小值 B、a(1)至a(100)中的最大值 C、a(2)至a(100)中的最小值 D、a(2)至a(100)中的最大值
  • 9、有如下VB程序段:

    Dim a(1 To 20)As Integer

    For i=2 To 10

        For j=2 To 20\i

            a(i*j)=a(i*j)+1

        Next j

    Next i

    运行该程序段后,数组a中值为1的元素个数为(  )

    A、1个 B、2个 C、3个 D、4个
  • 10、有如下VB程序段:

    For i=1 To 10

      f=i Mod 2

      If f=0 Then a(i)=0 Else a(i)=1

      For j=1 To i

        If f=0 Then a(i)=a(i)+j Else a(i)=a(i)*j

      Next j

    Next i

    执行该程序段后,数组元素a(4)的值为(  )

    A、10 B、6 C、4 D、1
  • 11、有如下VB程序:

    Private Sub Command1_Click( )

      Dim a(0 To 4)As Integer

      Dim i As Integer

      a(4)=Val(Text1.Text)

      For i=3 To 1 Step-1

        a(i)=a(i+1)/2

      Next i

      Text1.Text=Str(a(i+1))

    End Sub

    在文本框Text1中输入“128”,连续单击2次按钮Command1后,文本框Text1中显示的内容是(  )

    A、2 B、8 C、16 D、32
  • 12、有如下VB程序段,该程序段运行后,在文本框中显示的内容是(  )

    Dim a(1 To 10)As Integer

    Dim i As Integer, j As Integer

    a(1)=1:a(2)=1

    For i=3 To 5

        a(i)=1

        For j=i-1 To 2 Step-1

            a(j)=a(j)+a(j-1)

        Next j

    Next i

    Text1.Text=Str(a(3))

    A、1 B、3 C、4 D、6
  • 13、有如下程序段:

    Dim a(10) As Integer

    Dim b(10) As Integer

    k=Val(Text1. Text)

    For i=1 To 5

        a(i)=a(i-1)+1

        t=(i+k) Mod 10

        If t=0 Then t=10

        b(t)=a(i)

    Next i

    文本框Text1中的输入值为8,则执行该程序段后,b(3)的值为(  )

    A、0 B、3 C、4 D、5
  • 14、有如下VB程序段:

    For i=1 To 6

        a(i)=Int(Rnd*10)+1

    Next i

    For i=1 To 5

        If i Mod 2=1 And a(i)>a(i+1)Then

          T=a(i):a(i)=a(i+1):a(i+1)=t

        Else

            a(i)=a(i)+1

        End If

    Next i

    执行该程序段后,a(1)~a(6)各元素可能的值是(  )

    A、11,11,7,9,3,9 B、6,2,8,10,5,9 C、6,9,3,7,8,12 D、3,9,0,8,2,7
  • 15、有如下程序段:

    a(1)=1:a(2)=2

    i=3:flag=True

    Do While i<=10 and flag=True

        a(i)=a(i-1)+a(i-2)

        If a(i)>4*i then flag=False

        i=i+1

    Loop

    Text1.Text=a(i-1)

    该程序段运行后,文本框Text1中显示的是(  )

    A、21 B、32 C、34 D、55
  • 16、有如下程序段:

    Dim i As Integer,Sum As Integer

    Dim a(1 To 11)As Integer

    i=10:a(11)=49

    Do While i>=1

        a(i)=a(i+1)-1

        If a(i)Mod 3=0 Then Sum=Sum+a(i)

        i=i-1

    Loop

    Text1.Text=Str(Sum)

    该程序段运行后,文本框Text1中显示的内容是(  )

    A、174 B、180 C、36 D、42
  • 17、求两个整数的最大公约数可以使用递归算法实现,程序运行界面如图所示。在文本框Text1中输入两个数字中较大的数字m,在Text2中输入较小的数字n,单击Command1按钮,在Text3中显示数字m和n的最大公约数。可实现该目的的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim m,n As Integer

      m=Val(Text1.Text)

      n=Val(Text2.Text)

      Text3.Text=   ①   

    End Sub

    Function gcd(x, y As Integer)As Integer

      Dim z As Integer

      z=x Mod y

      If z=0 Then

        gcd=   ②   

      Else

        gcd=gcd(y, z)

      End If

    End Function

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

  • 18、有如下VB程序段:

    Private Sub Command1_Click( )

      Dimi As Integer, s As Integer

      s=0

      For i=1 To 3 Step 2

        s=s+f(i)

      Next i

      Text1. Text=Str(s)

    End Sub

    Function f(n As Integer) As Integer

      If n=1 Then

          f=2

      Else

          f=f(n-1)+n

      End If

    End Function

    执行该程序段后,s的值为(  )

    A、2 B、7 C、9 D、13
  • 19、有如下VB程序段:

    Private Function f(x As Single, n As Integer)As Single

      If n=0 then

        f=1

      Else

        If n Mod 2=1 then

          f=x*f(x,n\2)

        Else

            f=f(x,n\2)\x

        End If

      End If

    End Function

    Private Sub Command1_Click( )

      Label1.Caption=Str(f(4,6))

    End Sub

    程序运行时,单击按钮Command1,标签Label1显示的内容是(  )

    A、1 B、4 C、27 D、64
  • 20、有如下VB程序段,执行该程序段后,Text1中显示的值为(  )

    Function f(n As Integer)As Integer

      If n<=1 Then

          f=1

      Else

          f=n*f(n-1)

      End If

    End Function

    Private Sub Command1_Click( )

      Text1.Text=Str(f(5))

    End Sub

    A、10 B、60 C、120 D、140
上一页 1083 1084 1085 1086 1087 下一页 跳转