题目

小安需要在一个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 (1) 请在划线处填入合适代码。 ① ② ③  (2) 实线框处的语句改为k = 1 - k,对程序运行结果(填:有/无)影响? 答案: 【1】i = i – 1【2】f(k) = f(k) + 1【3】x1 = x2 Or y1 = y2 【1】有
信息技术 试题推荐
最近更新