题目

模拟某新型病毒传播的过程,已知有n*n个格子(1<=n<=10),某天其中某些格子由于不知名原因感染了病毒,开始影响周围的格子。传染原理如图a所示: 某3行3列的格子初始状态如图a所示,1表示异常(由于不知名原因感染了病毒且具有传染性),0表示正常。除了边上一圈的格子,每个格子周围有8个格子,第一天某正常格子周围超过半数格子异常,则该格子第二天就会变异常,并且带有传染性。传染过程如图b所示,矩阵中1、2、3、4分别表示该格子第1天、第2天、第3天、第4天被感染,0表示未被感染。可以看出该矩阵格子第4天全部被感染。 编写VB程序,运行程序后,在Text1中输入矩阵规模(不超过10),单击“初始化”命令按钮,在List1中输出第一天所有格子的状态,单击“传播”命令按钮,在List2中输出所有格子的最终状态,并在Label2中输出第几天全部被感染或者“不会被全部感染”。 程序运行界面如图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 Then b(i) = tian             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 Then flag = True: Exit Do     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 答案: 【1】2 【1】zc(1)=zc(1)+1【2】Judge((i-1)\n+1,(i-1) Mod n+1)【3】zc(tian)=zc(tian-1)
信息技术 试题推荐