内容正文:
1.约瑟夫问题。编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人手持一个密码(正整数)。开始任意选一个正整数m作为报数的上限值,从第一个人开始顺时针自1开始顺序报数,报到m时停止,同时报m的人出列,并将他的密码作为新的上限值m,从他顺时针下一个人开始重新自1开始报数,如此下去直到所有人全部出列为止。
要求:
1)由用户输入队列人数n和正整数m,以及游戏的密码上限x。
2)队列中每人所持的密码随机产生,大小必须在[1,x]区间。
3)在程序界面中按出列顺序显示每个人的编号和出列时他所持的密码。
运行效果如图所示。
实现上述功能的VB程序如下。请在划线处填入适当的语句和代码,把程序补充完整。
Private Sub Command1_Click()
Dim a()As Integer,b() As Integer,m As Integer,n As Integer
Dim i As Integer,k As Integer,c As Integer,x As Integer
n=Va1(Text1.Text):m=Va1(Text2.Text):x=Va1(Text3.Text)
ReDim a(1 To n)As Integer′重新定义数组a,存储下标对应编号人的队列状态
ReDim b(1 To n)As Integer′重新定义数组b,存储下标对应编号人的密码
Randomize′随机数生成器初始化
For i=1 To n
a(i)=1 ′在列
____①____ ′产生每个人的随机密码
Next i
c=0
k=0
List1.Clear
Do While c<n
For i=1 To n
k=k+a(i) ′累计报数
If k=m And____②____Then
k=0
a(i)=0 ′出列
List1.AddItem“出列人的编号为&i&”,该人的密码为“&b(i)”
____③____
c=c+1
End If
Next i
Loop
End Sub
2.猜数字是一种古老的密码破译类益智小游戏。通常由两个人玩,也可以由一个人和电脑玩,其标准规则为:
(1)一方出数字,出数字的人要想好一个无重复数字的4位数(如0165,5234等),不能让猜的人知道;
(