当前位置: 高中信息技术 / 综合题
  • 1. (2021高三上·浙江开学考) 世界上有很多国家向我国申购新冠疫苗。我国共有n个仓库存储疫苗,第i个仓库有疫苗a(i)(单位:万支,(单位:万支,下同)。现有m(n>=m)个国家向我国提出疫苗购买申请。我国计划将n个仓库中的疫苗全部分配给这m个国家。分配规则如下:①每个仓库中的疫苗只能作为一个整体分配给一个国家;②一个国家可以获得任意多个仓库的疫苗;③要求获得最多疫苗的国家与获得最少疫苗的国家之间疫苗数量差值最小;④若存在多个满足条件的分配方式,则输出最先找到的分配方式。

    例如:若n=4,4个仓库中的疫苗数分别为50、13、80、27。若m=2,最小差值为10;若m=3,最小差值为40。

    编写VB程序模拟上述功能,在文本框Text1中输入n(n≤15),在文本框Text2中输入m(m≤4),随机生成n个两位正整数,在列表框List1中输出。单击“计算”按钮Command1,在文本框Text3中输出最小差值,在列表框List2中输出每个国家获得疫苗的方案。程序运行界面如图所示。

    1. (1) 语句 List1.Clear 中的“Clear”属于(单选,填字母:A .对象名/B .属性名/C .方法名)。
    2. (2) 实现疫苗分配的VB程序如下,请在划线处填入合适的代码。

      Private Sub Command1_Click()

          Const maxn = 15

          Dim n As Integer, i As Long, j As Long, k As Long, p As Integer, m As Integer

          Dim a(1 To maxn) As Long, f(1 To maxn) As Long

          Dim s(1 To maxn) As String, max As Long, min As Long, ans As Long, ansi As Long

          n = Val(Text1.Text): m = Val(Text2.Text)

          List1.Clear: List2.Clear: Randomize

          For i = 1 To n

                ① 

              List1.AddItem Str(a(i))

          Next i

          ans = 10000

          For i = 1 To m ^ n     '枚举所有的分配方案

              For j = 1 To m

                  f(j) = 0

              Next j

              j = i: max = 0: min = 10000

              For k = 1 To n

                  

                  f(p) = f(p) + a(k)

                  j = j \ m

              Next k

              For k = 1 To m

                  If f(k) > max Then max = f(k)

                  If f(k) < min Then min = f(k)

              Next k

              If    ②   Then

                  ans = max - min

                     ③    

              End If

          Next i

          Text3.Text = Str(ans)

          For i = 1 To n

              j = ansi Mod m

              s(j + 1) = s(j + 1) + Str(a(i))

              ansi = ansi \ m

          Next i

          For i = 1 To m

              List2.AddItem s(i)

          Next i

      End Sub

       ② ③ 

    3. (3) 程序中加框处代码有错,请改正。

微信扫码预览、分享更方便