问个vb 课后题

来源:百度知道 编辑:UC知道 时间:2024/05/09 10:05:48
貌似是二级模拟试卷上的题:

Dim a(-1 To 5) As Boolean
Dim flag As Boolean
flag = False
Dim i As Integer
Dim j As Integer
Do Until flag = True
For i = -1 To 5
j = j + 1
If a(i) = False Then
a(i) = True
Print j
Exit For
End If

If i = 5 Then
flag = True
End If
Next

Loop
Print j

屏幕上显示j最后结果是多少?怎么的来的?谢谢~

35.说明如下
==========================
Dim a(-1 To 5) As Boolean '定义布尔值数组
Dim flag As Boolean'定义布尔值flag
flag = False'flag为假
Dim i As Integer'定义整数i
Dim j As Integer'定义整数j
Do Until flag = True'循环直到flag为真
For i = -1 To 5'遍历数组a
j = j + 1'j增加1
If a(i) = False Then'判断,如果a(i)是假
a(i) = True'让a(i)为真
Print j'打印j
Exit For'退出for循环,do并没有退出
End If'判断结束

If i = 5 Then'判断,如果循环结束
flag = True'让flag为真,否则当a全为假,do不会结束
End If'判断结束
Next'for结束

Loop'do结束
Print j'打印j
========================
由于a没有赋值,定义后默认全为0,转为布尔值也就是假了
开始运行,直到do没有什么可讲,flag是假,进入do循环
1,开始for循环,i=-1,j=1,a(-1)是假(默认值),
打印j,退出for.并没有进行后面的if判断,所以flag还是假,但是a(-1)是真,a(0)-a(5)还是假;

2,do第二次,重新开始for循环,j=2,a(-1)真;
for第二次,j=3,a(0)假,给a(0)赋值为真,打印j,退出for,还是没有后面的if判断.flag假

3,do第三次....
....

这样只是打印1,3,6...直到a所有都为真,最后