有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))