VB 有十七个人围成一圈(编号为0~16),第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去

VB 有十七个人围成一圈(编号为0~16),第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去
直到最后只剩下一个人为止.问此人原来的位置号是多少?
要的是程序!
ibii7777 1年前 已收到1个回答 举报

ryh5858 春芽

共回答了12个问题采纳率:100% 举报

Private Sub Command1_Click()
Form1.Cls
Dim a(1 To 17) As Integer
Dim i As Integer,j As Integer,k As Integer
For i = 1 To 17
a(i) = i - 1
Next
i = 0
j = 0
k = 17
Do While k > 1
For i = 1 To 17
If a(i) > -1 Then
j = j + 1
If j = 3 Then
j = 0
Print a(i)
a(i) = -1
k = k - 1
End If
End If
Next
Loop
Print "剩下的是:"
For i = 1 To 17
If a(i) > -1 Then
Print a(i)
Exit For
End If
Next
End Sub


1年前 追问

1

ibii7777 举报

可以讲解下不?不是太懂,尤其是-1那

举报 ryh5858

程序首先将 0-16 填充数组 a() 然后循环地数 a() 的每个元素,如果 a(i) < -1 就忽略,否则 每数到 3(j = 3)就打印 a(i) 并将 a(i) 置为 -1。 其实就是用 -1 代替离开的人,下次循环不再数他
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.016 s. - webmaster@yulucn.com