请帮我解释一道初级VB题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/04 05:13:58
FOR I=1 TO 100 STEP 2
S=1
S=S*I
NEXT I
MSGBOX S

答案是99,为什么?
为什么不是连乘?
是不是S=1放在FOR那句后面就变恒定了?

因为有
s=1
这个语句,所以不管循环多少次,s都是等于1,所以
s=s*I
等价于
s=1*I
也就是
s=I
再者,I在值变为99的时候,循环结束,因为步长为2,再往后I就会就101
所以最后,
s=I
s=99

这个问题是这样的,你要把s = 1提到for循环外面才行
如果像你这样,每次循环s = 1,然后在s = s*1 下次循环s = 1
,等于是没有保存上次计算的结果``这样的话只计算出来最后一个循环的值了,也就是 s = 1 s = s * i (i = 99) s = 99

FOR I=1 TO 100 STEP 2
S=1
S=S*I
NEXT I
MSGBOX S

I 从1开始,3,5,7...97,一直到99
然后进入循环
S=1
S=S*99
即 S=99

要混换的话得这样
S=1
FOR I=1 TO 100 STEP 2
S=S*I
NEXT I
MSGBOX S

S=1
FOR I=1 TO 100 STEP 2
S=S*I
NEXT I
MSGBOX S
这样就不会是99了

你的问题可以简化一下
S=0
S=2
这时候,S=?