初学vb 虚心求教 关于for 和next的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:20:31
Dim i As Integer, j As Integer
i = 10
Do
i = i + j
For j = 10 To i Step -3
i = i + j
Next j
Loop While i < 50
Print i; j
End Sub
请问输出结果为什么是 57 10
我的理解是 初始 i=10 j=0
然后进入for next循环 此时j第一次为10 因为10=10
于是i=i+j=20
接下来next j 由于 j=10 to i (20)所以j无解for next循环结束进入do loop循环 i=i+j(此时j为10)以后j一直为10
但这样得出的结论与答案不符。。。虚心请教下究竟错在哪里?
还是不懂 为什么第一次j=7 而以后都为10?
是不是初值=终值时(for j=10 to 10 step-3(可以循环?

第一次到FOR时,i=10,j=10,进入循环
i=i+j ,(i=20,j=10)
执行Next后 J会减去步长值再与终值对比判断是否再次循环,因为j=7,小于终值,跳出For循环,进入Do Loop
这时i(20)<50,所以再次DO循环后,i=20+7=27,由于初值10小于终值,一直不进入 FOR...NEXT
直到i=57

执行NEXT时,都会加减步长值的,除非一次都没有执行

补充回答
初值=终值时会进入循环的。

你单步跟踪一下就OK了!!!!

你就明白了!!!!!

你上网找找for循环的流程图 看完就一目了然
提示:for是执行完循环体才加上间隔值的

因为第一次循环时 i=j ,所以执行了一次循环体,而在以后,进入for循环时, i 一直大于 j ,所以不执行for 循环。
在第一次for循环结束时,j 自动加上步长值 ,当然是 7
以后不执行for循环 , j 值也就不会有变化。

同意楼上各位的观点
你在
Loop While i < 50
前面加上Print i; j就可以看出i和j的变化了

这个for循环要比较i和j的大小,如果i>j那就不用执行循环体,直接跳过,步长也不用加