x = 6 For k = 1 To 10 Step -2 x = x + k Next Print k; x 为什么X=6

问题描述:

x = 6 For k = 1 To 10 Step -2 x = x + k Next Print k; x 为什么X=6

x = 6
For k = 1 To 10 Step -2
x = x + k
Next
Print k; x
这是一段考查For/Next循环的题目,我告诉你我在给学生讲课过程中是如何教学生判断循环的:

判断循环是否执行,也就是判断初值是否“超过”终值,“超过”则循环体不执行,不“超过”,则循环体执行,注意此处的“超过”不是初值要小于终值,判断“超过”的方法如下:

主要看初值到终值的趋势与步长要求的趋势是否一致.
步长为正,则要求初值到终值的趋势为越来越大,应初值<=终值,若满足此要求,则为不“超过”,执行循环体,否则为“超过”,循环体不执行;
步长为负,则要求初值到终值的趋势为越来越小,应初值>=终值,若满足此要求,则为不“超过”,执行循环体,否则为“超过”,循环体不执行;
步长为0时,将造成“死循环”.

在这里步长为-2,即负数,要求初值到终值的趋势为越来越小,即应初值>=终值,可是此题中初值为1,终值为10,初值<终值,与步长要求的趋势不同,为“超过”,则循环体不执行,也就是将直接执行Next后的语句,所以此处的“x=x+k”语句并不能得到执行,因此,x变量的值仍然为6.

此处还有一个小问题,即变量k的值.在执行到For语句时,计算出初值、终值和步长后(此处不用计算)将这三个值放入内存,并将初值赋给循环控制变量k,然后才去判断是否“超过”,所以尽管循环体未执行,但变量k的值依然为1.

所以最后的结果为:16