miui系统开发者选项:一道vf程序题,有个小问题

来源:百度文库 编辑:高校问答 时间:2024/04/28 16:27:20
set talk off
x=0
y=.t.
do while y
x=x+1
if int(x/4)=x/4
??x
else
loop
endif
if x>16
y=.f.
endif
enddo
set talk on
return
结果是4 8 12 16 20,为什么有20呢?
可不可以跟我讲讲loop的具体用法呀??????????????

程序结构不合理,你想让这个程序的功能是 求出 1..16中所有被4整除的数,但是,当变量X > 16 的时候 比如17程序并没有机会执行到 Y=.F. 这条语句就被LOOP返回了,继续循环,以至增加到X=20后 才有机会执行到 Y=.F.
正确应该改成如下
set talk off
x=0
y=.t.
do while y
x=x+1
if x>16
y=.f.
endif
if int(x/4)=x/4
??x
else
loop
endif
enddo
set talk on
return