相关试卷

  • 1、某对分査找算法的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     'Exit Do表示退出循环

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

    Loop

    数组元素d(1)到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
  • 2、有以下VB程序段:

    Dim a As String, b As String, p As String, s As String

    a = Text1.Text

    b = Text2.Text

    c = Text3.Text

    p = “ ”

    For i = 1 To Len(a)

        If b = Mid(a, i, Len(b)) Then

            s = s + c

            p = p + Str(i)

        Else

            s = s + Mid(a, i, 1)

        End If

    Next i

    Label1.Caption = p

    若文本框Text1中输入“Hello,Python!I use Python!”,文本框Text2中输入“Python”, 文本框Text3中输入“VB”运行该段程序后,标签Label1中显示的是(  )

    A、7 20 B、8 21 C、12 26 D、13 27
  • 3、数组a为一组正整数,奇数在前,偶数在后。奇数与偶数已分别按升序排序。依据对分查找思想:设计一个在数组a中查找数据Key的程序。实现该功能的VB程序段如下:

    i = 1: j = 10

    Key = Val(Text1.Text)

    Do While i <= j

        m = (i + j) \ 2

        If a(m) = Key Then Exit Do ′Exit Do表示退出循环

        If Key Mod 2 = 1 And a(m) Mod 2 = 0 Then

            

        ElseIf Key Mod 2 = 0 And a(m) Mod 2 = 1 Then

            

        Else

            

        End If

    Loop

    If i > j Then s = “没有找到!” Else s = “位置:” + Str(m)

    Text2.Text = s

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

    ①i = m + 1

    ②j = m - 1

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

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

    A、①、②、③ B、①、③、② C、②、①、③ D、③、②、①
  • 4、某对分査找算法的VB程序段如下:

    i = 1: j = 7: s = “ ”

    key = Int(Rnd * 100)

    Do While i <= j

        m = (i + j) \ 2

        If key = a(m) Then

            s = s + “M”: Exit Do  'Exit Do 表示退出循环

        ElseIf key < a(m) Then

            j = m - 1: s = s + “L”

        Else

            i = m + 1: s = s + “R”

        End If

    Loop

    Text1.Text = s

    数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是(  )

    A、RL B、LMR C、RLR D、LRLM
  • 5、某对分查找算法的VB程序段如下:

    key = Val(Text1.Text)

    i = 1: j = 10

    Text2.Text = “ ”

    Do While i <= j

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

        If key = a(m) Then Exit Do    'Exit Do表示退出循环

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

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

    Loop

    数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是(  )

    A、40 24 B、40 24 36 C、36 24 D、36 17 24
  • 6、某查找算法的部分VB代码如下:

    flag=True

    Key=Val(Text1.Text)

    i=1

    Do While i<=8 And flag

        If a(i)=Key Then

            flag=False

        Else

            i=i+1

        End If

    Loop

    If Not flag Then

        Label1.Caption=“Find!”

    Else

        Label1.Caption=“Fail!”

    End If

    数组元素a(1)到a(8)的数据依次为“11,2,0,6,8,3,5,8”,程序运行时,在文本框Text1中输入8,则在标签Label1中显示的内容是(  )

    A、“Find!” B、“Fail!” C、Find! D、Fail
  • 7、已知数列“32,19,6,57,41,67,28”,若要在数列中查找数据19,共需查找的次数是(  )
    A、1 B、 C、3 D、4
  • 8、已知数列“15,19,21,20,84,77,36,55”,若要在数列中查找数据100,共需查找的次数是(  )
    A、1 B、 C、9 D、无穷多次
  • 9、小王编写了一个数据排序且将重复数删除的VB程序。算法的基本思想:先随机生成20个[1,50]区间内的整数,然后按照数据从低到高进行排序,最后删除重复数(相同的数据只保留一个)。

    程序运行时,单击“生成随机数”按钮Command1,则生成20个[1,50]区间内的整数,存储在数组a中,并显示在文本框Text1中;单击“排序并去重”按钮Command2,则将数组a中数据进行从低到高排序,并将排序结果显示在文本框Text2中,将去重后结果显示在文本框Text3中,在标签Label4中显示共删除的重复数个数,程序运行界面如下图所示。

    实现上述功能的VB程序如下,请回答下列问题:

    (1)、若20个随机数分别为:7,18,5,7,7,12,7,1,10,14,17,7,9,7,10,16,5,18,8,18,则去掉的重复数共个。
    (2)、请在划线处填入合适的代码。

    Dim a(1 To 20) As Integer

    Const n = 20

    Private Sub Command1_Click()

        Dim i As Integer, s1 As String

        Randomize

        s1 = “ ”

        For i = 1 To n

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

            s1 = s1 + Str(a(i))

        Next i

        Text1.Text = s1

    End Sub

    Private Sub Command2_Click()

        Dim i As Integer, j As Integer, p As Integer, tt As Integer

        Dim ans As Integer, s2 As String, s3 As String

        For i = 1 To n - 1

            p = i

            For j = n To i + 1 Step -1

                If a(j) < a(p) Then p = j

            Next j

            If a(i) < > a(p) Then

                tt = a(i)

                a(i) = a(p)

                a(p) = tt

            End If

        Next i

        s2 = “ ”:s3 = “ ”

        ans = 0

        For i = 1 To n

            s2 = s2 + Str(a(i))

        Next i

        Text2.Text = s2

       

        s3 = Str(a(1))

        For i = 2 To n

        If a(i) < > q Then

            

            q = a(i)

        Else

            

        End If

        Next i

        Text3.Text = s3

        Label4.Caption = Str(ans)

    End Sub

  • 10、编写一个VB程序,实现功能为在n个数中寻找第m大的数。程序运行时,自动生成n个三位数随机整数,并显示在列表框List1中,单击“排序”按钮Command1,将数据进行排序,并将排好序的数据显示在列表框List2中,在文本框Text1中输入m,单击“计算”按钮Command2,在文本框Text2中显示第m大的数。程序运行效果如下图所示:

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

    Dim d(1 To 20) As Integer

    Const n = 20

    Private Sub Form_Load()

        Dim i As Integer, j As Integer, t As Single

        List1.Clear

        Randomize

        For i = 1 To n

            

            List1.AddItem Str(d(i))

        Next i

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, t1 As Integer

        For i = 1 To n - 1

            For j =

                If d(j) < d(j - 1) Then

                    t1 = d(j): d(j) = d(j - 1): d(j - 1) = t1

                End If

            Next j

        Next i

        For i = 1 To n

            List2.AddItem Str(d(i))

        Next i

    End Sub

    Private Sub Command2_Click()

        Dim m As Integer

        m = Val(Text1.Text)

        Text2.Text = “第” + Str(m) + “ 大的数为:” +

    End Sub

  • 11、小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。

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

    Const n = 10

    Dim a(1 To n) As Integer

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, t As Integer,bottom As Integer

        '获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略

        bottom = n

        i = 1

        Do While i <= bottom - 1

            For j = bottom To i + 1 Step -1

                If   Then      '①

                    t = a(j): a(j) = a(j - 1): a(j - 1) = t

                ElseIf a(j) = a(j - 1) Then   '相邻两个数据相等,进行剔除处理

                            '②

                    bottom = bottom - 1

                End If

            Next j

            i = i + 1

        Loop

        Text2.Text = “ ”

        For i = 1 To bottom

            Text2.Text = Text2.Text + Str(a(i))

        Next i

    End Sub

    程序中加框①处应改正为

    加框②处应改正为

  • 12、下面是一个采用拉锯式排序法对数组元素按升序进行排序的程序,所谓“拉锯式排序法”是这一遍把最小的元素从下往上移动到最上面的位置,下一遍则是从上往下把最大的元素移动到最下面的位置。 程序运行效果如下图所示。

    Private Sub Command1_Click()

        Dim a(10) As Integer, i As Integer

        Randomize ′产生不同的随机数

        For i = 1 To 10

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

            Text1.Text = Text1.Text & Str(a(i))

        Next i

        Call Shaker_sort(a())     '调用Shaker_sort

        For i = 1 To 10

            Text2.Text = Text2.Text & Str(a(i))

        Next i

    End Sub

    Private Sub Shaker_sort(k() As Integer)

        Dim i As Integer,c As Integer,d As Integer

        Dim t As Integer

        c = 1

        d = 10

        Do While c<=d

            For i=     '从下往上把最小的元素移到最上面的位置

                If k(i-1)>k(i) Then

                    t = k(i - 1):k(i- 1) = k(i):k(i) = t

                End If

            Next i

            For i = c+1 To d-c    '从上到下把最大的元素移到最下面的位置

                If  Then

                    t = k(i+1):k(i+1) = k(i):k(i) = t

                End If

            Next i

            c = c + 1

            

        Loop 

    End Sub

  • 13、有如下VB程序段:

    Private Sub Command1_Click()

        Dim a(1 To 100) As String, x As String, st As String

        Dim i As Integer, j As Integer, n As Integer

        x = Text1.Text

        n = Len(Text1.Text)

        For i = 1 To n

            a(i) = Mid(x, i, 1)

        Next i

        For i = 1 To n - 1

            For j = n To i + 1 Step -1

                 If a(j) > a(j - 1) Then

                    st = a(j): a(j) = a(j - 1): a(j - 1) = st

                End If

            Next j

        Next i

        st = “ ”

        For i = 1 To n

            st = st + a(i)

        Next i

        Label1.Caption = st

    End Sub

    程序运行时,在文本框Text1中输入“Text”(不包含双引号),单击按钮Command1,则在标签Label1上显示的内容为(  )

    A、Tetx B、Txte  C、xtTe D、xteT
  • 14、如下VB程序段:

    st = “ ”

    For i = 1 To 4

        For j = 1 To 10 - i

            If d(j) < d(j + 1) Then

                temp = d(j): d(j) = d(j + 1): d(j + 1) = temp

            End If

        Next j

        st = Str(d(j)) + st

    Next i

    Text1.Text = st

    数组元素d(1)~d(10)中的数据依次为“21,8,12,16,26,71,65,89,42,36”,程序执行后,在文本框Text1中显示的内容是(  )

    A、8,12,16,21 B、42,65,71,89 C、21,16,12,8 D、89,71,65,42
  • 15、有如下程序段:

    For i = 1 To 4

        For j = i + 1 To 5

            If a(j) > a(i) Then t = a(j): a(j) = a(i): a(i) = t

        Next j

    Next i

    数组元素a(1)~a(5)的值依次为“15,4,12,7,9”,整个排序过程中,数组中数据比较次数和交换次数分别是(  )

    A、比较11次,交换3次 B、比较11次,交换4次 C、比较10次,交换3次 D、比较10次,交换4次
  • 16、对数组元素b(1)~b(8)进行降序排序,其排序算法的VB部分程序如下:

    For x = 1 To 7

        w = x

        For y = x + 1 To 8

            

        Next y

        If w < > x Then

            Temp = b(x): b(i) = b(w): b(w) = temp

        End If

    Next x

    方框中应填入的语句为(  )

    A、If b(w) > b(y) Then w = y B、If b(w) < b(y) Then w = y C、If b(w) > b(y) Then w = x D、If b(w) < b(y) Then w = x
  • 17、采用冒泡排序对数组d中元素进行排序,第一趟排序后的结果为“10,25,15,30,50,38,60,55”,则d数组中元素的初始顺序不可能是(  )
    A、25,15,30,50,38,60,55,10 B、25,15,30,50,38,60,10,55 C、25,15,10,50,38,60,30,55 D、25,15,30,50,10,38,60,55
  • 18、采用冒泡排序算法对数组a中的6个数据“8,20,5,17,30,9”进行排序,部分程序代码如下:

    For i=1 To 2

        For j=6 To i+1 Step -1

        If a(j)>a(j-1) Then

            t=a(j): a(j)=a(j-1): a(j-1)=t

        End If

        Next j

    Next i

    运行该程序,数据交换的次数为(  )

    A、1 B、 C、3 D、4
  • 19、有趣的乘法:输入一个个位数不是5的奇数p,寻找一个整数s,使得p×s = 1111...1(每位数字均为1),要求输出整数s及它们乘积中1的个数(即乘积有几个1构成)。例如,当p=13时,13*8547=111111,因此整数s为8547,乘积由6个1构成;当p=23时,整数s为48309178743961352657,乘积由22个1构成。

    算法思想:

    首先生成一个比p大的全1数a,如果a能整除p,则算法结束,否则继续扩大a的位数,如此继续,直至a整除p。

    程序运行界面如下图所示,在文本框Text1中输入整数p,单击“计算”按钮,在文本框Text2中输出整数s,在文本框Text3中输出乘积中1的个数。

    小明依据上述描述设计如下VB程序。请回答下列问题:

    (1)、当p=3时,整数s为
    (2)、请在划线处填入合适的语句。

    Private Sub Command1_Click()

        Dim p As Long, a As Long, b As Long, c As Long, n As Long

        Dim s As String  '存放整数s,因为该数较大,因此采用字符串存储

        Do While True   '判断输入的整数p是否为个位不是5的奇数

            p = Val(Text1.Text)

            If p Mod 2 < > 0 And p Mod 5 < > 0 Then Exit Do

        Loop

        a = 0

        n = 0

        Do While a < p

            

            n = n + 1

        Loop

        c = a Mod p

        s = Str(a \ p)

        Do While c < > 0

            a = c * 10 + 1

            

            s = s & b

            n = n + 1

            

        Loop

        Text2.Text = s

        Text3.Text = Str(n)

    End Sub

  • 20、哥德巴赫猜想:任意一个大于等于4的偶数,都可以用两个素数之和表示。如:4=2+2,6=3+3,8=3+5,10=5+5,12=5+7,98=17+79。

    编写一个验证哥德巴赫猜想的VB程序:程序运行时,在文本框Text1中输入一个大于等于4的偶数,单击“验证”按钮Command1后,如果哥德巴赫猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式,否则显示“No”。程序运行结果如图所示。

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

    ′函数pp(x)的功能是判断整数x是否为素数,若是素数则返回True,否则返回False

    Function pp(x As Integer) As Boolean

        Dim j As Integer

        pp = True

        j = 2

        Do While j <= Int(Sqr(x)) And pp=True

            If x Mod j = 0 Then pp = False Else

                 '①

        Loop

    End Function

    Private Sub Command1_Click()

        Dim n As Integer, p As Integer, q As Integer, pd As Boolean

        n = Val(Text1.Text)

        p = 1              

        pd = False

        Do While Not pd And p < n

            p = p + 1

                        '②

            If pp(p) And pp(q) Then

                Text2.Text = “Yes”

                pd = True

                List1.AddItem Str(n) + “=” + Str(p) + “+” + Str(q)

            End If

        Loop

        If pd = False Then Text2.Text = “No”

    End Sub

    程序中加框①处应改正为

    加框②处应改正为

上一页 431 432 433 434 435 下一页 跳转