题目

由数组a生成数组b的方法描述如下: ⑴将数组a中的n个元素依次分割出若干个数据块,每个数据块有2m个元素,分割时,按尽可能大的数据块进行分割。 ⑵对每个分割出的数据块进行求和,将和依次存储在数组b中。 例如:n=13,可将a(1)~a(13)依次分割成3个数据块,元素的个数分别为8、4、1。将3个数据块的和依次存储在b(1)、b(2)、b(3)中。 小明依据上述描述设计了如下VB程序,运行界面如图所示。请回答下列问题: Const n = 13 Dim a(1 To n)  As  Integer Dim b(1 To n) As Integer Private Sub Command1_Click()   Dim start As Integer                 ‘当前未分割数据的第1个元素下标   Dim i As Integer, k As Integer, pb As Integer, left As Integer, m As Integer   '读取n个数据,依次存储到a(1)、a(2)、……a(n)中,并对数组b赋初值为 0,代码略   start = 1: left = n: m = 0   Do While 2 ^ m <= left             ‘寻找第1个数据块          ①          Loop   m = m - 1   pb = 1   Do While left > 0     For i = start To start + 2 ^ m - 1             ②              Next i     List1.AddItem Str(2^m) + " " + Str(b(pb)) pb = pb + 1             ‘改错     left = left - 2 ^ m     Do While left < 2 ^ m       m = m - 1     Loop   Loop End Sub (1) 当 n=110时,分割出的数据块有 个。 (2) 程序代码中,将划线处语句补充完整。 ① ②  (3) 程序代码中,加框处语句有错,请改正。 答案: 【1】5 【1】m = m + 1【2】b(pb) = b(pb) + a(i) start = i 或 start = start + 2 ^ m
信息技术 试题推荐