组卷题库 > 高中信息技术试卷库

浙江省山水联盟2021-2022学年高三上学期信息技术开学联考试题

作者UID:7189882
日期: 2024-04-28
开学考试
选择题(本大题共12小题,每小题2分,共24分)
非选择题(本大题共4小题,4+8+7+7,共26分)
在100个小球中,只有一个小球轻于其它小球。如何用没有砝码的天平找出该小球?小安设计了一个三分查找程序来快速查找这个小球,程序认定当需查找的小球个数小于3个时,认为已找到,程序运行界面如图。

Dim a(1 To 100) As Integer

Private Sub Form_Load()

    '产生100个重量为10的小球,存储在数组a中

    '其中随机选取1个小球的重量改为8,代码略

End Sub

Private Sub Command1_Click()

    Dim left As Integer, right As Integer

    Dim mid As Integer, count As Integer

    Dim s(1 To 2) As Integer

    left = 1: right = 100: count = 1

    List2.AddItem Str(left) + "-------->" + Str(right)

    Do While  left<=right

        s(1) = 0: s(2) = 0

            ①   

        i = left: k = 1

        Do While i <= left + mid * 2 - 1

            s(k) = s(k) + a(i)

            If     ②   Then k = k + 1

            i = i + 1

        Loop

        If s(1) = s(2) Then

            left = left + 2 * mid

        ElseIf s(1) < s(2) Then

            right = left + mid - 1

        Else

            

            left = left + mid

        End If

        count = count + 1

        List2.AddItem Str(left) + "-------->" + Str(right)

    Loop

    List2.AddItem "经过" + Str(count) + "次后找到这个数"

End Sub

小安需要在一个n*n(4<=n<=10)的房间里使用黑白两种地砖铺设房间,要求相邻的两块地砖颜色都不同。房间里会随机产生m(m<=10)根柱子,如果最后黑白两种地砖使用的数量相同,就认为可以铺满整个房间。小安将a数组元素值设置为0、1和2三种,当数组a的值为0时显示“□”,代表白地砖,为1时显示“■”,代表黑地砖,为2时显示“○”,代表柱子。最后,小安还求出了任意两根柱子之间的最大面积,单位长度为1(当两个柱子在同一行或同一列,认为面积为0,面积求法如图b所示)。

图a

图b

程序运行界面如图a所示。实现上述功能的VB代码如下:

Dim n As Integer, m As Integer

Dim a(1 To 100) As Integer

Dim b(1 To 10) As Integer 'b数组存储柱子位置

Dim f(3) As Integer, i As Integer 'f数组存储三种类型的个数

Private Sub Command1_Click()

    n = Val(Text1.Text):m = Val(Text2.Text)

    k = 0

    For i = 1 To m

        b(i) = Int((Rnd * n ^ 2) + 1)

        a(b(i)) = 2

        For j = 1 To i - 1

            If b(i) = b(j) Then

                   ①   

                Exit For

            End If

        Next j

    Next i

    '将房间设置为黑白两种颜色交错,白黑以0、1代替

    For i = 1 To n * n

        

        If a(i) = 0 And k = 1 Then

            s = s + "■": a(i) = k

        ElseIf a(i) = 0 And k = 0 Then

            s = s + "□": a(i) = k

        Else

            s = s + "○"

            f(k) = f(k) - 1

            f(2) = f(2) + 1

        End If

            ②  

        If i Mod n = 0 Then

            List1.AddItem s

            s = ""

        End If

    Next i

    '对b数组的数值按升序进行排序,代码略

    For i = 1 To m - 1

        s = search(i)

        If s > smax Then smax = s

    Next i

    '对f(0)和f(1)的相等情况进行判断,并输出最后结果,代码略

End Sub

Function search(i As Integer) As Integer

    Dim x1 As Integer, x2 As Integer

    Dim y1 As Integer, y2 As Integer

    x1 = (b(i) - 1) \ n + 1

    y1 = (b(i) - 1) Mod n + 1

    For j = i + 1 To m

        x2 = (b(j) - 1) \ n + 1

        y2 = (b(j) - 1) Mod n + 1

        If   ③  Then s = 0

        s = (x2 - x1) * (y2 - y1)

        If s > search Then search = s

    Next j

End Function

试卷列表
教育网站链接