当前位置: 高中信息技术 / 综合题
  • 1. (2021·浙江模拟) 果园里有n堆果子放在地上,现要将所有果子合并成一堆。每次只能合并两堆果子,消耗的体力等于两堆果子的重量之和。显然,n堆果子需要经过n-1次合并。合并果子的过程中总共消耗的体力等于每次合并所耗体力之和。为了尽可能地节省体力,我们每次都选择重量最小两堆进行合并。例如,有三堆果子,重量依次为1,2,9。可以先将1、2堆合并,新堆重量为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,重量为12,耗费体力为12。所以总共耗费体力为3+12=15。可以证明15为最小的体力耗费值。

    编写VB程序,实现上述合并功能。运行程序时,将n堆果子的重量从数据库读入到a数组。单击“合并”按钮Command1后,在文本框Text1中输出最小的体力耗费值。请回答下列问题:

    1. (1) 若要清空文本框Text1中的内容,能实现该功能的语句是(单选,填字母:A .Text1.Caption=“”/B .Text1.Clear/C .Text1.Text=“”)。
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

      Private Sub Form_ Load( )

      ‘将n堆果子的重量从数据库导入到数组a,代码略。

      End Sub

      Private Sub Command1_Click( )

          Dim f As Boolean

          Dim last As Integer

          Dim a(1 To n) As Integer

          i= 1

          Do While i<n And Not f

              f=True

              For j=n To i+1 Step-1

                  If a(j)<a(j- 1) Then

                      t= a(j): a(j)=a(j- 1): a(j-1)=t

                      last= j

                      f= False

                  End If

              Next j

             

          Loop

          For i= 1 To n-2

              tmp=a(i)+a(i+1)

              j=

              Do While a(j)< tmp

                  a(j-1)= a(j)

                  j=j+1

                  If j=n+ 1 Then Exit Do

              Loop

             

              Min=Min+tmp

          Next i

         

          Text1.Text = Min

      End Sub

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

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