注册 登录
编程论坛 VB6论坛

诸位大侠,在下不才,请告诉我程序的运行流程好吗?

sims1010 发布于 2013-02-01 17:10, 392 次点击
寒假复习VB准备考二级,看书的时候做课后习题遇到困难了。
执行下面程序,当单击窗体时,输出的结果是什么?
Private Sub Form_click()
    Dim I As Integer, k As Integer
    Dim a1 As Integer, a2 As Integer, a3 As Integer
    a1 = 1: a2 = 10: a3 = 2
    For I = a1 To a2 Step a3
        k = k + 1
        I = I + 2
        a1 = a1 + 1
        a2 = a2 - 5
        a3 = a3 + 2
    Next I
    Print k, I
    Print a1, a2, a3
End Sub
我算了几遍,和运行结果都不一致,每个数值都算的不对。我不明白I的取值到底是怎么样的顺序和流程,请各位大神给指点一下,多谢多谢!
PS:运行结果是       3                       13
                     4                       -5                    8
6 回复
#2
yz10252013-02-01 18:14
只有本站会员才能查看附件,请 登录
#3
sims10102013-02-01 19:48
回复 2楼 yz1025
不好意思,请问图中的1 5 9是I值的取值吗?虽然学了一招Debug的使用,但是如果单纯笔试,空手做题,对照结果我还是算不出结果的根据……I的取值分别是1 5 9 13的话,看似等差,每个相差4,但是实际上I每次循环要加2,step a3也要变大,a1 to a2这个范围会变小,一旦大于范围循环就终止了。麻烦再解答一下好吗?
#4
bczgvip2013-02-01 20:21
决定循环次数是I ,Step 只后的数使用后将固定。
I = I - 1 '改个看看就知道了。
#5
Artless2013-02-01 22:25
For I = a1 To a2 Step a3'1,3,5,7,9
I = I + 2'1,5,9
k = 0 + 1*3
a1 = 1 + 1*3
a2 = 10 - 5*3
a3 = 2 + 2*3
I=9+2+2
#6
SKYYYF2013-02-04 15:51
只有本站会员才能查看附件,请 登录

看一下能否理解?
For循环中,初值为1 ,终值为10,步长为2,不会随着a2和a3的变化而变化。
在循环体中,I的值发生变化。a2,a3的变化都不影响终值和步长。
Next I 相当于  I+步长(2),然后和终值(10)比较,小于或等于终值,则进入循环体,否则执行Next I之后的语句。
#7
sims10102013-02-04 22:08
回复 6楼 SKYYYF
好的,刚在看帖子前悟出来了,你说的很详细,多谢多谢!
1