下面程序对已知数组b,删除数组中某指定值的元素,但程序不完整,请填空。
Private Sub Command1_Click()
Dim m, n%, i%, j%
m=Array(1,3,5,29,34,50)
n=Val(InputBox("请输入要删除的值"))
For i=0 To UBound(m)
If (12) Then
For j=i+1 To UBound(m)
(13)
Next j
ReDim Preserve (14)
MsgBox("删除完成")
Exit For
End If
Next i
End Sub
参考答案:(12)m(i)=n (13)m(j-1)=m(j) (14)m(UBound(m)-1)
解析: 从数组中删除一个元素,首先要找到需要删除的元素的位置,再通过移动元素的方法覆盖被删除的元素,最后重定义数组的大小。题目中For i=0 To UBound(m)循环语句就是循环数组中的每一个元素,判断是否有需要删除的元素,判断的方法是用数组元素的值与准备删除的值作相等比较,所以[12]空应填m(i)=n;找到需要删除的元素后,应该从被删除的元素的后一个元素依次向前移动一个位置,以覆盖被删除的元素,所以[13]空应填m(j-1)=m(j),用下标来表示数组的前后位置关系。注意,由于j的起始值为i+1,所以此空不能填m(j)=m(j+1),不然的话,第一个被覆盖的元素就变成了被删除元素的后一个元素了,同时,当j=UBound(m)时,会出现“下标越界”的错误。删除元素后,应重定义数组,使数组的上界减小1,由于原数组的上界为UBound(m),所以[14]空应填m(UBound(m)-1)。