问题
单项选择题
窗体如图3所示。要求程序运行时,在文本框Text1中输入一个姓氏,单击“删除”按钮(名称为Command1),则可删除列表框List1中所有该姓氏的项目。若编写以下程序来实现此功能:
Private Sub Command1_Click()
Dim n%, k%
n=Len(Text1.Text)
For k=0 To List1.ListCount-1
If Left(List1.List(k), n)=Text1.Text Then
List1.RemoveItem k
End If
Next k
End Sub
在调试时发现,如输入“陈”,可以正确删除所有姓“陈”的项目,但输入“刘”,则只删除了“刘邦”、“刘备”2项,结果如图4所示。这说明程序不能适应所有情况,需要改正。正确的修改方案是把For k=0 to List1.ListCount-1改为
答案
参考答案:A
解析: 由于在删除项目的过程中,前面的项目被删除后,后续项目的下标自动减1,而用于控制循环的变量k总是在按步长1增长,所以造成部分项日被错过了检查。如本题中输入“刘”时,检查项目“刘邦”时变量k为5,删除项目“刘邦”后,项目“刘秀”的下标变为5,但下次再检查时,k已变成6,跳过了对项目“刘秀”的检查。选项A的修改方式是从下标大的项目依次向下标小的项目检查,删除的项目不影响剩下的项目的下标,是正确的修改方法。