求教!!
vb吧
全部回复
仅看楼主
level 2
求教!!
出圈游戏(具体效果如演示程序所示)
有 n 个人排成一圈,然后先从第一人开始按顺时针方向依次从 1 报数,报到数 m 的人
就淘汰,下一个再从 1 开始报,报到 m 就被淘汰,一直到剩下最后一人即为胜利者。
打开“D:\test1111\考试结果\程序设计\试题三“文件夹中的工程文件“test3.vbp”,完成下
列操作:
1.(18 分)对注释“①”、“②”、“③”所在行的代码进行修改,并在代码中的“-④-”、“-
⑤-”和“-⑥-”处填写一条代码(填写完成后,删除标号“-④-”、“-⑤-”和“-⑥-”),以让
程序正确执行。调试并运行程序。第一个改错 2 分,第三个改错 4 分,其余每个计 3 分。
代码如下:
Private Sub Command1_Click()
Dim a(1000) As Integer
n = Val(Text1.Text)
m = Val(Text2.Text)
check = n
k = 1
List1.Clear
For i = 1 To n
a(i) = 1
Next i
i = 0
Do
i = 1 '-①-
If a(i) <> 0 Then
a(i) = 1 '-②-
If a(i) = m Then
a(i) = 0
List1.AddItem i & "号出圈"
check = check + 1 '-③-
k = 0
End If
k = k + 1
End If
'-④-
i = 0
End If
'Loop Until -⑤-
For i = 1 To n
'-⑥-
List1.AddItem "获胜者是" & i & "号"
Exit For
End If
Next i
End Sub
2020年09月12日 03点09分 1
level 2
老师布置作业,实在不会,求教!!
2020年09月12日 03点09分 2
level 15
代码分析:
数组a表示每个人是否在圈内(0表示出圈,非0值表示在圈内且为上次报的数)
变量check表示仍在圈内的人数
变量k表示当前要报的数
运行过程即为循环报数:i表示当前报数人的编号,每次令i增加1,即 i = i + 1(注释1改法);如果a(i)不为0,则表示第i个人在圈内,令其报数k,即 a(i) = k(注释2改法);如果k=m(也就是a(i)=m),则令a(i)=0,第i个人出圈,仍在圈内的人数减1,即 check = check - 1(注释3改法),并且报数变量k归零,重新从1开始报数;每报完一个数,k值增加1;如果轮到编号为n的人了(第4空填 If i = n Then),则令i=0,回到第1个人继续报数:如此循环,直到圈内只剩一个人为止(第5空填 check = 1)
循环报数之后,再循环查找剩下的那个人的编号,如果第i个人对应的数组元素值a(i)不为0(第6空填 If a(i) Then,在If条件中,不等于0的判断可以将<>0省略不写),则输出获胜者的编号
2020年09月12日 03点09分 4
感谢!
2020年09月15日 02点09分
1