用VB6.0写出

用VB6.0写出有17个人围成一个圈(编号0~16)从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置号是多少... 用VB6.0写出有17个人围成一个圈(编号0~16)从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置号是多少号? 展开
 我来答
数学与计算机编程
2016-10-12 · TA获得超过2160个赞
知道大有可为答主
回答量:2312
采纳率:80%
帮助的人:565万
展开全部

代码:

Private Sub Command1_Click()
  Me.Caption = "Cycle number"
  Dim a() As Integer, b() As Integer, n As Integer
  n = InputBox("Pleace input number of people:", "Input box", 17)
  m = n
  ReDim a(1 To n)
  For i = 1 To n
    a(i) = i - 1
    Print "a(" & i & ")=" & a(i) & Space(1);
    If i Mod 10 = 0 Then Print
  Next i
  Print
  Print "Count:" & n
  Print
  If n = 1 Then
    Print "Last:"; a(1)
  ElseIf n = 2 Then
    Print "Last:"; a(2)
  Else
    Do
      k = k + 1
      Print "No_" & k & " Round:"
      ReDim b(1 To n)
      For i = 1 To n
        b(i) = a(i)
      Next i
      For i = 1 To (n Mod 3)
        a(i) = b(n - (n Mod 3 - i))
      Next i
      For i = 1 To (n \ 3)
        a(2 * (i - 1) + 1 + n Mod 3) = b(3 * (i - 1) + 1)
        a(2 * (i - 1) + 2 + n Mod 3) = b(3 * (i - 1) + 2)
      Next i
      For i = 1 To 2 * (n \ 3) + n Mod 3
        Print "a(" & i & ")=" & a(i) & Space(1);
        If i Mod 10 = 0 Then Print
      Next i
      n = (n \ 3) * 2 + n Mod 3
      ReDim Preserve a(1 To n)
      Print
      Print "Count:" & n
      Print
    Loop Until n = 2
    Print "Last:"; a(2)
    Me.Caption = "Number of people=" & m & ",Last:No_" & a(2)
  End If
  Print
  Print
End Sub

Private Sub Command2_Click()
  Me.Cls
End Sub

Private Sub Command3_Click()
  End
End Sub

Private Sub Form_Load()
  Me.AutoRedraw = True
  Me.Caption = "Cycle number"
End Sub

运行效果:



疯狂小鸟ZXD
高粉答主

2016-10-11 · 每个回答都超有意思的
知道大有可为答主
回答量:1.3万
采纳率:96%
帮助的人:3021万
展开全部

如图所示,望采纳。。。。。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式