请帮我解释一道初级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=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=?