回 帖 发 新 帖 刷新版面

主题:请帮忙看下此段程序错在哪里


t等于1加2加2的平方加2的三次方一直加到2 的63次方


s=0 :n=1
for i=1to 63
n=n*2
s=s+n
next i
print "s=";s
end
这段程序错在哪里[em2][em2][em2]

回复列表 (共8个回复)

沙发

程序看不出来有什么错的
t是什么意思看不懂
如果是从1开始加的话,
s应该等于1

板凳

s=0
for i=1 to 63
  s=s+2^i
next i
print "s=";s
end

3 楼

s溢出

4 楼

这好象是从一个笑话里挤出来的编程题,在国际象棋的棋盘上放麦子。。。
如果循环是1到63,s的初值应该是1。
但关键是精度问题,这里的s是单精度的,有效位不够,就是双精度也不够,所以说不能精确地得到计算结果。如果有int64类型的64位整型数,应该刚好可以。可惜QB的长整型只有32位。

5 楼

请大虾们在讲明白些。

6 楼

遗憾的是,
在我的WIN2K,和我的DOS6.22上都没出现溢出,

真要排错的话
我估计是那一句 for i=1to 63
                     /
  1和to要用空格分开写成
               for i=1 to 63

7 楼

感谢各位大虾的指点,还有一事不明,就是这道题里从那里看出加入了1

8 楼

你的程序里没有加1

可以有两种方法改:
1.   s赋初值 s=1
2.   i从0开始, 2^0 = 1

我来回复

您尚未登录,请登录后再回复。点此登录或注册