学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
某物品柜有5层,每层有10个格子,每个格子只能放一个物品。第1层格子编号依次为1到10,第2层格子编号依次为11到20,依此类推。有9组物品(组号1~9),每组有2到8个物品,物品总数不超过50个。将9组物品按组号由小到大依次放入柜中,放置方式有两种:
1)整体放置。按格子编号由小到大的次序查找第一个可放置该组全部物品的空区域(空区域是指从某个空格子开始的同层连续的所有空格子),若找到,则在该空区域居中、连续放置该组全部物品,如图a所示。
2)零散放置。若所有空区域格子数都小于该组物品数,则将该组每个物品依次放置在当前编号最小的空格子中,如图b所示。

图a          图b

编写VB程序,模拟物品放置。运行程序,在列表框List1中显示每组物品的组号和数量,单击“放置”按钮Command1,在列表框List2中显示每组物品放置结果。程序运行界面如图c所示。

图c

(1)若第1、第2组的物品数分别为6和2,则放置第2组物品的格子编号依次为__________。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Constm = 50’m表示物品柜的格子数
Const w = 10’w表示物品柜每层的格子数
Const n = 9’n表示物品的组数
’f(i)存储第i个格子开始的同层连续的所有空格子数。f(i)为0表示第i个格子不是空格子
Dim f(m)As Integer
Dim a(n)As Integer
Private Sub Form_Load()
’读取各组物品的个数依次存入数组a,并在List1中显示
’代码略
End Sub
Function getpos(r As Integer As Integer
’按格子编号从小到大的次序,查找空格子数≥r的第一个空区域
’若找到,返回该空区域的起始编号,否则返回 — 1
’代码略
End Function
Private Sub Command1_Click()
Dim i As Integer,j As Integer, k As Integer,p As Integer,v As Integer
Dim s As String
For i = 1To m
f(i)= w -(i -1)Mod w     ’w为10,表示每层的格子数
Next i
v = 1
For i = 1 To n
s = ""
p =_____
If p = - 1 Then
j = 1
Do While j <= a(i)
If f(v)<> 0 Then
s = s + Str(v)
f(v)=0
j = j + 1
End If
____
Loop
Else
k =(f(p)- a(i)) \ 2
For j = k To 1 Step - 1
f(p)= j
p = p + 1
Next j
For j =_____
f(j)= 0
s = s + Str(j)
Next j
End If
List2. AddItem "第" + Str(i)+ "组:" + s
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
我要答疑
编写解析
解析:

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

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