题目

仓库管理员对每一件物品都进行了编码,并按升序排列,每个用户在领取物品时需要提供物品的后几位编码,如果用户提供的编码在仓库中有多件物品符合,则给他编码较小的物品。如果仓库中没有符合用户需要的物品, 则输出 none。请你编程帮管理员找出每一位用户应该领取的物品编码,物品不能被重复领取。例如,仓库有5 件物品,分别为134,1123,1234, 2112,5123 ,有 3 个用户提出领取物品的需求: 2233456212,第1个数就是第1个用户要求的物品编码后几位的长度(1到9之间),例如是2,则向后读取2位数,23就是第一个用户要求的编码尾号,依次类推,第2个用户要求后3位编码为456,第3个用户要求后2位编码为12。则他们应该领取的物品为 1123,none,2112。 (1) 根据题目中的物品编码,如果用户的需求数据是:143123223,领取的物品编码分别是。 (2) 实现上述功能的程序如下,请在划线处填入合适的代码。 Const num = 5 Dim a(1 To 10) As String     '物品编码 Dim s As String, req(1 To 10) As Integer     '每位用户需求的后几位编码 Dim n As Integer     '用户数 Dim g(1 To 10) As String Dim b(1 To 10) As Integer     '每位用户需求的后几位编码长度 Dim flag(1 To 10) As Boolean     '标记物品是否被领取 Private Sub Form_Load() '仓库物品编码数据初始化,并在List1中列举,代码略 End Sub Private Sub Command1_Click() s = Text1.Text k = 1: i = 1: n = 0 Do While i <= Len(s) t = Val(Mid(s, i, 1)) n = n + 1 b(n) = t req(n) = Val(Mid(s, i + 1, t)) Loop For i = 1 To n     List2.AddItem g(i) Next i End Sub Function search(need As Integer, needlen As Integer) As String j = 1 For j = 1 To num IfAnd flag(j) = False Then Exit For Next If j > num Then search = "none" Else flag(j) = True search = a(j) End If End Function 答案: 【1】134 1123 5123 【1】i = i + t + 1【2】g(i) = search(req(i), b(i))【3】need = Val(Mid(a(j), Len(a(j)) - needlen + 1, needlen))
信息技术 试题推荐
最近更新