m1=0:m2=0
For i=1 To n * 2 Step 2
If a(i)>a(i+1)Then
t1=a(i):t2=a(i+1)
Else
t1=a(i+1):t2=a(i)
End If
If Then
m1=t1:m2=t2
ElseIf Then
m2=m1:m1=t1
ElseIf Then
m2=t1
End If
Next i
上述程序段中方框处可选代码为:①t1>m1 ②t1>m2 ③t2>m1
则(1)(2)(3)处代码依次为( )
请回答下列问题:
1)计算每个人的应还款(应还款=应分摊的总金额-先行垫付的总金额);
2)根据所有人的应还款数据计算转账明细(应还款为正的人转给应还款为负的人)。
根据上述要求编写VB程序,功能如下:运行程序,读取消费记录数据并在列表框List 1中显示。单击“结算”按钮Command 1,在列表框List 2中显示每个人的应还款,在列表框List 3中显示转账明细。程序运行界面如图所示。
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
小李为了解决该问题,首先结合数组a的有序性,找出a,b两个数组中要剔除的m个数据,再将数组b中保留的数据插入到数组a中。示例如下:
n=10,数组a:2,4,6,8,10,12,14,16,18,20 m=5,数组b:41 , 11,17 , 29,9 处理后的数组a:2,4,6,8,9 , 10,11 , 12,14,16 |
Const n=1000,m=50
Dim a(1 To n)As Integer, b(1 To m)As Integer
Function getImax(k As Integer)As Integer
‘在数组元素b(1)~b(k)中找出值最大的元素,返回其下标,代码略
End Function
Private Sub Commandl_Click( )
Dim i As Integer, j As Integer, k As Integer
Dim na As Integer, nb As Integer, imax As Integer, mean As Integer
‘读取数据分别存入数组a、b,代码略
na=n : nb=m
imax=getImax(nb)
For i=1 To m
If a(na)<= Then
b(imax)=b(nb)
nb=nb-1
If nb>0 Then imax=getImax(nb)
Else
na=na-1
End If
Next i
Do While nb>0
i=1 : j=na
imax= getImax(nb)
Do While i<=j
mean =(i+j)\2
If a(mean)<b(imax) Then i= mean +1 Else j=mean-1
Loop
For k=na To 1 Step-1
Next k
a(i+nb-1)=b(imax)
b(imax)=b(nb)
nb=nb-1
Loop
'输出数组a,代码略
End Sub