请教一个简单问题
我用For循环和While循环分别编了2个求100以内奇数立方根和的过程,代码如下:*100以内奇数立方根之和求法
SET TALK OFF
CLEAR
s=0
FOR i=1 TO 100
j=i^(1/3)
s=s+j
i=i+2
ENDFOR
?'100以内奇数立方根之和为:',s,'最大奇数为:',i-2
SET TALK ON
RETURN
*100以内奇数立方根之和求法
SET TALK OFF
CLEAR
s=0
i=1
DO WHILE i<100
j=i^(1/3)
s=s+j
i=i+2
ENDDO
?'100以内奇数立方根之和为:',s,'最大奇数为:',i-2
SET TALK ON
RETURN
我运行了一下,2个过程的计算结果是不一致的。做了一个简单试验,好像用While循环做的是正确的。可是我找不出For循环的错误所在。请教各位,错在哪里?
SET TALK OFF
CLEAR
s=0
FOR i=1 TO 100
j=i^(1/3)
s=s+j
i=i+1
ENDFOR
?'100以内奇数立方根之和为:',s,'最大奇数为:',i-2
SET TALK ON 第一个程序,取消i=i+2,修改循环开始语句为for i=1 to 100 step 2 在FOR循环中,以修改循环变量的方式来写程序,非常容易出错。楼上说的非常正确。 补充说明:I 多加了1,因为for循环还要加1
循环中得出的I=1,4,7…… 而不是1,3,5……
改为i=i+1 &&(加上for循环加的1,实际i=2,结果就会一样了) for ……Endfor默认步长(step)为1,而不是你设定有I=I+2.出现这样的问题,主要是搂猪对For……Endfor循环缺乏了解。 我想版主是无意敲出了同音错字了。
不论发帖者提的问题有多么简单幼稚、或令人不解,只要他不是有意捣乱,可以不理他,但不应鄙视他。
这样才会有更多的初学者和老师、VF高手参与,网站的人气才会旺。
楼主提出的问题,本来已经讨论明了,但版主的回帖中的一句“楼猪”似乎使热烈的讨论有所变味……
但愿版主确实敲错字了…… [tk02] 应该是无意之举! 感谢这么多人关注这个小问题。我后来看了一下帮助,改用step 2,问题就解决了。
但是,有这么多人回复,我感觉真的很好,来这里没白来。有这么多人一起来学习研究,相信对各位都有裨益。有问题我会经常来请教的,感谢各位。
页:
[1]
