组卷题库 > 高中信息技术试卷库
试题详情
小安需要在一个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

知识点
参考答案
采纳过本试题的试卷
教育网站链接