题目

七灯游戏是一款经典的益智类游戏。游戏中,有七盏灯排成一圈,如图a所示,初始时灯的开关状态随机生成,操作其中某一盏灯,则可以切换该灯的“开/关”状态,同时,这盏灯对面的两盏灯也会切换“开/关”状态,如图b所示: 图a为初始状态,操作圈中的灯,则该灯与对面的两盏灯都会切换“开/关”状态,如图b所示。假设这些灯的编号为0到6号,“开/关”状态随机产生,并输出到列表框List1中,接着需要从中选出数盏灯进行操作,使得最后所有灯都打开(已证明方案-一定存在且唯一), 并在列表框List2中输出灯的编号。 程序采用枚举策略,一一尝试对每盏灯状态进行“切换”操作,“1”表示对当前灯进行切换,“0”表示不操作。 程序运行界面如图c所示。 (1) 0-6号灯的初始状态为“关  关  关  开  关  关  开”,如对1号灯进行切换操作,对面随之切换灯的编号是:和 (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。 Dim a(0 To 6)As Integer,b(0 To 6) As Integer Private Sub Command1_Click()   Dim i As Integer, x As Integer, pos As Integer   Dim flag As Boolean   List2.Clear   For i = 0 To     x = i:pos = 0:flag = True     For j = 0 To 6         b(j)= a(j)     Next j     Do While x > 0         If x Mod 2 = 1 Then             b(pos)= 1 - b(pos)             b((pos + 3) Mod 7) = 1 – b((pos + 3) Mod 7)                     End If         pos = pos + 1         x = x \ 2      Loop      For j = 0 To 6          IfThen flag = False:Exit For      Next j      If flag Then         pos = 0         Do While i > 0            If i Mod 2 = 1 Then List2.AddItem “第” + CStr(pos)+ “号”            i = i \ 2            pos = pos + 1         Loop         Exit For      End If    Next i End Sub Private Sub Form_Load()     ‘随机生成初始数据     Dim i As Integer     Randomize     List1.Clear     For i = 0 To 6         a(i)= Int(Rnd * 2)         If a(i)= 1 Then             List1.AddItem “第” + CStr(i) + “号:”+ “开”         Else             List1.AddItem “第” + CStr(i) + “号:” + “关”         End If      Next i End Sub 答案: 【1】4【2】5 【1】2^7-1或127【2】b((pos+4)Mod7)=1-b((pos+4)Mod7)【3】b(j)=0
信息技术 试题推荐
最近更新