学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
叠方块游戏。在一个 10×10 的区域内玩叠方块游戏,为方便处理,该区域的行号从下往上依次编号为 1、2、……、9、10,列号从右往左依次编号为 0、1、……、8、9。方块只有一种形状,如下图 a 所示,左上角是该方块的中心位置。程序界面如下图 b 所示,单击“生成数据”按钮 Command1,随机生成 5 个[1,9]范围内的数字,并显示在文本框 Text1 中,每个数字即为方块的中心位置从该数字表示的列掉下来,若碰到方块就叠上去,若一直掉到底部都没有碰到方块,就停在底部。所有操作结束后,输出整个区域的状态,如下图 c、图 d 所示。图 e 为行、列编号示意图。

算法概述如下:用一个二进制位表示某个位置的状态,0 表示该位置没有方块,1 表示该位置有方块,每一行的状态存储在数组 a 中。例如:图 c 第 1 行的状态为“1010101010”,则 a(1)=682,即 29 +27 +25 +23 +21 =682,根据 a(1) \ 2 ^ 1 Mod 2 的结果可判断第 1 行的第 1 列是否有方块。
(1)以图 d 为例,a(1) \ 2 ^ 4 Mod 2 的结果是____________ (填数字)。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Dim s As String
Const n = 10
Private Sub Command1_Click() ' 生成数据
Dim i As Integer, t As Integer
Randomize
s = ""
For i = 1 To n \ 2
_______ '随机生成[1,9]范围内的整数
s = s + CStr(t) ' Cstr()的作用是去掉字符串前面的空格
Next i
Text1.Text = s
End Sub
Private Sub Command2_Click() ' 开始游戏
Dim a(n) As Integer
Dim i As Integer, k As Integer, t As Integer
Dim ans As String
For i = 0 To n
a(i) = 0
Next i
For k = 1 To Len(s)

t = Val(Mid(s, k, 1))

For i = n - 2 To 0 Step -1 ' i=0 时该方块可以直接到达底部

If a(i) \ 2 ^ t Mod 2 = 1 Or a(i + 1) \ 2 ^ (t - 1) Mod 2 = 1 Or i = 0 Then

_________
a(i + 2) = a(i + 2) + 2 ^ t + 2 ^ (t - 1)
Exit For ' Exit For 为退出 For 循环

End If

Next i
Next k
List1.Clear
ans = ""
For i = 10 To 1 Step -1
For k = 0 To 9

If a(i) Mod 2 = 1 Then

ans = "■" + ans

Else

ans = " " + ans

End If

___________

Next k
List1.AddItem ans
ans = ""
Next i
End Sub
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交