试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省2019年信息技术选考模拟试卷四

【加试题】小方同学使用VB编程研究素数问题,程序运行界面如图所示。他发现1~100之内的素数一共有25个,并且将这些素数全部保存到数组a中,在列表框List1中显示所有素数(按大小从低到高排列)。在文本框Text1中输入需要查找的数据,单击“查找”按钮Command2,在标签框Label3中显示查找结果。

(1)、数组a中下标为14的元素值应为
(2)、程序代码如下,请在划线处填入合适的代码。

Dim a(1 To 25) As Integer   '数组a用于存储1~100之内的素数

Function search(k As Integer) As Integer

    i = 1 : j = 25

    Do While i <= j

       m =

        If a(m) = k Then

            search = m : Exit Function

        ElseIf k < a(m) Then

            j = m - 1

        Else

            i = m + 1

        End If

Loop

  search = 0

End Function

Private Sub Command1 Click()  '生成素数事件过程

    Dim i, j, k As Integer

    List1.Clear

    k = 0

    For i = 2 To 100

        For j = 2 To i - 1  

            If i Mod j = 0 Then

                Exit For

            End If

        Next j

        If  Then

            k = k + 1

            a(k) = i

            List1.AddItem "a(" & k & ")=" & a(k)

        End If

    Next i

End Sub

Private Sub Command2 Click()    '查找数据事件过程

    Dim t As Integer, r As Integer

    t = Val(Text1.Text)

   r =

    If r = 0 Then

        Label3.Caption = "1~100中的素数无此数据!"

    Else

        Label3.Caption = "素数序列和第" & Str(r) & "个数!"

    End If

End Sub

举一反三
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。

数组元素a(1)至a(5)依次为5,22,28,42,55,在a(3)处分成两段,交换位置后为:

a(1)

a(2)

a(3)

a(4)

a(5)

28

42

55

5

22

旋转数组a的最小元素是5。

数组d(1)至d(5)依次为0,1,1,1,1,在d(5)处分成两段,交换位置后为:

d(1)

d(2)

d(3)

d(4)

d(5)

1

0

1

1

1

旋转数组d的最小元素是0。

小明依据查找算法思想,设计一个查找旋转数组d最小元素的程序,功能如下:运行程序时,利用“添加”按钮Command1和文本框Text1依次输入旋转数组d的值,在列表List1中显示旋转数组,单击“求解”按钮Command2,在标签Label2中显示旋转数组d最小元素值。运行效果如图1所示,实现该功能的VB程序如下:

图1

Dim n As Integer

Dim d(1 To 100) As Integer '数组 d 存储待排序数据

Private Sub Command1_Click()

'按旋转数组规则将数据存入数组d中,代码略

End Sub

Private Sub Command2_Click()

  Dim mid As Integer, L As Integer, R As Integer

  L = 1: R = n

  mid = L

  Do While d(L) >= d(R)

    If  Then    '改错

      mid = R

      Exit Do

    End If

    mid = (L + R) \ 2

    If d(L)=d(R) And d(mid)=d(R) Then

mid =______________                              '填空

      Exit Do

    End If

    If d(L) < d(mid) Then

      L = mid

ElseIf d(mid) < d(R) Then

      R = mid

    End If

  Loop

Label2.Caption = "最小值为" + Str(d(mid))

End Sub

    End If

  Next i

End Function

返回首页

试题篮