题库 高中信息

题干

(加试题)猴子选大王的问题:N 只猴子选大王,选举办法如下:从头到尾 1、2、3 报数,凡报 3 的退 出,余下的从尾到头 1、2、3 报数,还是报 3 的退出,依此类推;当剩下只有两只猴子时,不再报数,取 当前报数报 1 的为王。如五只猴子报数,则第一轮顺序为第 12345,第 3 只出列,第二轮顺序为 5421,第 2只出列;第三轮顺序为 145,第 5 只出列,这时第 1 只猴子报数为 1,则第 1 只猴子为猴王。若想当猴王, 请问最初占据什么位置?在 Text1 文本框中输入参选大王的猴子总数量,单击“猴王的位置”,在 Label2 标 签上显猴王最初的位置。VB程序运行界面如下:

实现上述功能的 VB程序如下:
(1)如果只有 10 只猴子参加本次选大王,则猴王最初的位置为:________
(2)实现上述功能的 VB程序如下,请在划线处填入合适代码。
Private Sub Command1Click()
Dim n, x, m, s As Integer   '假设参与的猴子数量不超过 5000
Dim a(1 To 5000) As Integer  '用数组 a 存储每只猴子的报数,值为 3 时视同出列
Dim t, y As Boolean    't 用于循环,y 为 true 时表示报数顺序是从头到尾,y 为 false 时报数顺序 是从尾到头
n = Val(Text1.Text)
x = 1  'x 为每次猴子的位置
m = 1  'm 为报数的 1、2、3
y = True
t = True
Do While t
'该位置的猴子是否已经出列
If a(x) <> 3 Then '没有出列的,则报数
a(x) = m
①________ '1,2,3 之后重新开始
If m > 3 Then m = 1
Else '每次有猴子报 3 出列之后,检查是否已经只有两只猴子没有出列
s = 0
For i = 1 To n
If ②________   Then s = s + 1
Next i
If s < 3 Then Exit Do
End If
If y = True Then x = x + 1 Else x = x - 1
'检查报数是在递增,还是递减,y 为 true 时递增
'报到最后一次猴子后
If x > n Then y = False: m = 1: x = n
'报到第一次猴子后
If x = 0 Then y = True: m = 1:
Loop
'输出猴王的位置
For i = 1 To n
③_________
If a(i) = 1 Then Label2.Caption = "猴王的位置为第" + Str(i) + " 只"
Next i
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2019-04-21 04:12:06

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

同类题2

展开字符串。如果在输入的字符串中,含有类似于“c-g”或者“3-7”的字符子串,就把它当作一种简写,字符串展开输出时有如下规则:
(1)如果“-”号右边的字符按照ASCI码的顺序大于左边字符,输出时,用连续递增的字母或数字串替代其中的“-”号,例如:“c-g”输出为“cdefg”,“3-7”输出为“34567”。
  
(2)如果“-”号右边的字符按照 ASCII码的顺序小于或等于左边字符,输出时,保留中间的“-”号,例如:“a-a”输出为“a-a”,“4-1”输出为“4-1”。
(3)如果“-”号右边的字符恰好是左边字符的后继,则删除中间的“-”号,例如“d-e”应输出为“de”,“3-4”应输出为“34”。
某同学按照上述算法,编写了VB程序,功能如下:在文本框 Text 1中输入简写字符串,单击“展开”按钮 Command 1,程序进行字符串展开处理并显示在文本框Text 2中。程序运行界面如图所示。
(1)如果输人的简写字符串为“abs-w-Y1234-5S-4z”,则展开后的字符串为___________________。
(2)实现上述功能的VB程序如下,请在画线处填入合适代码。
Private Sub Command1_Click()
Dim stl As String, st2 As String, i As Integer
st1=Text1. Text
n=Len(st1)
st2=""
For i=1 To n

If pos(stl, i)Then<> "-" Then

st2=st2-+pos(stl, i)

Else

If pos(stl, i-1)<pos(stl, i+1) Then
For j=Asc(pos(stl, i-1))+1 To Asc(pos(stl, i+1))-1
_______________
Next j
Else
st2=st2+"-"
End If

End If

Next i
Text2. Text=st2
End Sub
Function pos(s As String, x As Integer) As String   '返回字符串s中x位置的字符
__________________
End Function