某3行3列的格子初始状态如图a所示,1表示异常(由于不知名原因感染了病毒且具有传染性),0表示正常。除了边上一圈的格子,每个格子周围有8个格子,第一天某正常格子周围超过半数格子异常,则该格子第二天就会变异常,并且带有传染性。传染过程如第16题图b所示,矩阵中1、2、3、4分别表示该格子第1天、第2天、第3天、第4天被感染,0表示未被感染。可以看出该矩阵格子第4天全部被感染。
1 | 0 | 0 |
1 | 1 | 0 |
0 | 0 | 0 |
图a
|
|
|
| ||||||||||||||||||||||||||||||||||||
第一天 | 第二天 | 第三天 | 第四天 |
图b
编写VB程序,运行程序后,在Text1中输入矩阵规模(不超过10),单击“初始化”命令按钮,在List1中输出第一天所有格子的状态,单击“传播”命令按钮,在List2中输出所有格子的最终状态,并在Label2中输出第几天全部被感染或者“不会被全部感染”。
程序运行界面如图c所示。
图c


(1)已知第一天所有格子状态如图d所示,则第
(2)实现上述功能程序代码如下,完善划线处语句。
Dim a(1 To 100) As Integer '存放格子状态
Dim b(1 To 100) As Integer '辅助作用
Dim zc(1 To 10000) As Integer '记录每一天的正常格子数
Dim n As Integer '存放矩阵规模
Private Sub Command1_Click()
Dim i As Integer, j As Integer, s As String
List1.Clear
n = Val(Text1.Text)
For i = 1 To n
s = ""
For j = 1 To n
a((i - 1) * n + j) = Int(Rnd() * 2)
s = s + Str(a((i - 1) * n + j))
If a((i - 1) * n + j) = 0 Then
Next j
List1.AddItem s
Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, tian As Integer, flag As Boolean
List2.Clear
'下面代码实现病毒传染过程
tian = 1: flag = False
Do While zc(tian) > 0
tian = tian + 1
For i = 1 To n * n
If a(i) = 0 Then
If
Else
b(i) = a(i)
End If
Next i
For i = 1 To n * n
If b(i) = 0 Then zc(tian) = zc(tian) + 1
a(i) = b(i)
Next i
If
Loop
'在List2中输出所有格子的最终状态,代码略。
If flag Then
Label2.Caption = "不会被全部感染"
Else
Label2.Caption = "第" + Str(tian) + "天全部被感染"
End If
End Sub
'Judge函数用来判断第i行第j列的格子周围的异常格子数是否超过半数,超过半数返回True
Function Judge(i As Integer, j As Integer) As Boolean
'代码略
End Function

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

