(加试题)小李同学碰到了一个数学问题:400个同学按顺序进行编号后围成一个大圈,按1至2报数(从1号位置开始),报到2的同学出列,以此一直循环报数下去,问最后剩下的那位同学他的编号是几号?
例如以6个同学编号为例,按1至2报数(从1号位置开始)依次出列的编号次序为2-4-6-3-1-5,那么最后剩下的就是编号为5的同学。
为了解决这个问题,小李用VB编写了如下程序尝试解决,其中列表list1显示出列的顺序编号,文本框text1中显示最后留下的编号,程序代码如下(测试界面如下图):
Private Sub Command1_Click() Dim s, f, t As Integer Dim a(1 To 400) As Boolean For i = 1 To 400 a(i) = False Next i s = 0 f = 0 i = 0 Do While f < 399 i = i + 1 If i = 401 Then i = If a(i) = False Then s = s + 1 If s = 2 Then List1.AddItem Str(i) a(i) = True f = End If Loop For i = 1 To 400 If Then text1.text=str(i) Next i End Sub 在程序划线处填入合适的代码。
答案:【1】1【2】s=0【3】f+1【4】Not a(i)或a(i)= false