当前位置: 高中信息技术 / 综合题
  • 1. (2020·浙江模拟) 七灯游戏是一款经典的益智类游戏。游戏中,有七盏灯排成一圈,如图a所示,初始时灯的开关状态随机生成,操作其中某一盏灯,则可以切换该灯的“开/关”状态,同时,这盏灯对面的两盏灯也会切换“开/关”状态,如图b所示:

    图a为初始状态,操作圈中的灯,则该灯与对面的两盏灯都会切换“开/关”状态,如图b所示。假设这些灯的编号为0到6号,“开/关”状态随机产生,并输出到列表框List1中,接着需要从中选出数盏灯进行操作,使得最后所有灯都打开(已证明方案-一定存在且唯一), 并在列表框List2中输出灯的编号。

    程序采用枚举策略,一一尝试对每盏灯状态进行“切换”操作,“1”表示对当前灯进行切换,“0”表示不操作。

    程序运行界面如图c所示。

    1. (1) 0-6号灯的初始状态为“关  关  关  开  关  关  开”,如对1号灯进行切换操作,对面随之切换灯的编号是:
    2. (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

微信扫码预览、分享更方便