填空题
执行下面的程序,单击Command1按钮后,列表框上显示的第一个列表项内容是
1,最后一个列表项内容是
2。
Option Explicit
Private Sub Command1_Click()
Dim st As String, p As String*1, i As Integer, js As Integer
st="12233"
p=Mid(st, 1, 1)
js=1
i=1
Do
i=i+1
If Mid(st, i, 1)=p Then
js=js+1
Else
List1.AddItem p &":"& js
p=Mid(st, i, 1)
js=1
End If
Loop While i<Len(st)
List1.AddItem p &":"& js
End Sub
【正确答案】
【答案解析】1:1 3:2
[解析] 本程序的主要功能是统计各字符出现的次数。程序执行过程分析如下:
(1)程序开始时,i=1,p="1",js=1;然后进入Do循环,循环的结束条件是变量i值不小于字符串st的长度(5)。
(2)第一次循环时,i=2,此时Mid(st,2,1)的值为"2",与p的值不同,此时表达式p&":"&js的结果为"1:1",添加到列表框中的第一项;然后用Mid(st,2,1)的结果"2"给变量p赋值,变量js值置为1。
(3)第二次循环时,i=3,此时Mid(st,3,1)的值为"2",与p的值相同,于是变量js值加1,为2。
(4)第三次循环时,i=4,此时Mid(st,4,1)的值为"3",与p的值不同,此时表达式p&":"&js的结果为"2:2",添加到列表框中的第二项;然后用Mid(st,4,1)的结果"3"给变量p赋值,变量js值置为1。
(5)第四次循环时,i=5,此时Mid(st,5,1)的值为"3",与p的值相同,于是变量js值加1,为2。此时i值不小于字符串st的长度,循环结束。
(6)表达式p&":"&js的结果为"3:2",添加到列表框中的第三项,程序结束。
这一类型的考题一般没有复杂的算法,只要在掌握基本知识的基础上,一步一步分析,记录每一步的变量值与输出内容;循环次数多的程序,注意归纳规律;另外还要注意变量的作用范围与按地址传递参数时,实参应该随形参的变化实时变化。
有时还有递归题,在分析递归题时,一定要注意,递归结束后逐层返回到上次未执行结束的语句下一句(逻辑顺序上)继续执行。