题库 高中信息

题干

   (加试题)小李同学碰到了一个数学问题: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 = 1
If a(i) = False Then s = s + 1
If s = 2 Then  
2    
List1.AddItem Str(i)
a(i) = True
f = 3  
End If
Loop
For i = 1 To 400
If 4    Then text1.text=str(i)
Next i
End Sub
为实现程序功能,在程序划线处应填入的代码为:
(1)    _________________
(2)    _________________
(3)    _________________
(4)    _________________
上一题 下一题 0.99难度 填空题 更新时间:2019-05-05 07:27:05

答案(点此获取答案解析)