题目

有m个人结伴旅行(m≤9,每个人用整数1~m编号)。期间既有全员参与的集体活动,也有自主参与的小团队活动。每项活动的消费由参与人平均分摊,其中一人先行垫付并记录。记录内容包括该项活动的人均消费金额(整数,单位:元)、参与人。每项活动的参与人用字符串表示,垫付人排在第1位。如“25134”表示2、5、1、3、4号参与该项活动,其中2号是垫付人。旅行结束后依据所有活动的消费记录进行结算: 1)计算每个人的应还款(应还款=应分摊的总金额-先行垫付的总金额); 2)根据所有人的应还款数据计算转账明细(应还款为正的人转给应还款为负的人)。 根据上述要求编写VB程序,功能如下:运行程序,读取消费记录数据并在列表框List 1中显示。单击“结算”按钮Command 1,在列表框List 2中显示每个人的应还款,在列表框List 3中显示转账明细。程序运行界面如图所示。 (1) 结合程序与界面可知,AddItem是List 2的(单选,填字母:A .方法名/B .事件名/C .属性名)。 (2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。 Const n=9, m=15 Dim x(1 To n)As Integer       ‘x(i)存储第i项消费记录的人均消费金额 Dim a(1 To n)As String        ‘a(i)存储第i项消费记录的参与人 Private Sub Form_Load( )     ‘读取所有消费记录,存入数组x和a中,并显示在列表框List 1中      ‘代码略 End Sub Private Sub Command1_Click( )     Dim i As Integer, j As Integer, k As Integer, p As Integer     Dim c As Integer, w As Integer, v As Integer     Dim b(1 To m)As Integer        ‘保存应还款数据     For i= 1 To m         b(i)=0     Next i     For i=1 To n      ‘根据消费记录计算应还款         k=Len(a(i))         p=Val(Mid(a(i), 1, 1))         b(p)=b(p)-(k–1)*x(i)         For j=2 To k             p=Val(Mid(a(i), j, 1))                      Next j     Next i     c=0     For i=1 To m         List 2. AddItem Str(i)+“号”+Str(b(i))         If b(i)>0 Then c=c+1     Next i     i=1 : j=1               ‘根据应还款数据计算转账明细     Do While           Do While b(i)<=0             i=i+1         Loop     Do While b(j)>=0         j=j+1     Loop:                  If w>0 Then  Else v =b(i)         b(i)=b(i)-v:b(j)=b(j)+v         List 3. AddItem Str(i)+“号->”+Str(j)+“号   ”+Str(v)         If w<=0 Then c=c–1     Loop End Sub (3) 程序中加框处代码有错,请改正。 答案: 【1】A 【1】b(p)= b(p)+x(i)【2】c>0【3】w=b(i)+b(j) v=b(i)-w 或v=-b(j) 或 v=Abs(b(j))
信息技术 试题推荐