题型:综合题 题类:常考题 难易度:困难
浙江省湖州市菱湖中学2019届高三上学期信息技术12月月考试卷
小张经分析,每次n堆金币如果都是从小到大,将前两堆合并成新一堆,然后,继续进行从小到大排序,如此合并成最后一堆,此时消耗体力最少,为此他编写了一个解决上述问题,求最少体力的VB程序,功能如下:窗体加载时,自动读取n堆金币的数据,依次存储在数组元素a(1)、a(2)、a(3)…中,金币堆数存储在变量n中,n堆金币的重量数据显示在列表框List1中。单击“求解”按钮Command1,程序对n堆金币进行合并处理,消耗最少的体力显示在文本框Text1中。程序运行界面如图所示。
Const n = 10
Dim i As Integer, j As Integer, t As Integer
Dim a(1 To n) As Integer
Private Sub Form_Load()
'本过程用于读取n堆的数据并存储在数据a中
'代码略
End Sub
'sort(x)过程的功能是对a(x)、a(x+1)、……、a(n)中的数进行从小到大排序
Private Sub sort(x As Integer)
For i =To n - 1
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
End If
Next j
Next i
End Sub
Private Sub Command1_Click()
Dim sum As Integer, k As Integer
sum = 0
sort (1)
For k = 1 To n - 1
a(k + 1) = a(k) + a(k + 1)
sum = sum +
sort ()
Next k
Text1.Text = Str(sum)
End Sub
试题篮