主题:请帮忙看下此段程序错在哪里
杨333
[专家分:0] 发布于 2005-09-29 16:47:00
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个回复)
沙发
moz [专家分:37620] 发布于 2005-09-29 16:56:00
程序看不出来有什么错的
t是什么意思看不懂
如果是从1开始加的话,
s应该等于1
板凳
飞鸟12 [专家分:2830] 发布于 2005-09-29 22:28:00
s=0
for i=1 to 63
s=s+2^i
next i
print "s=";s
end
3 楼
QB71 [专家分:1300] 发布于 2005-09-30 03:25:00
s溢出
4 楼
staa [专家分:3690] 发布于 2005-09-30 08:51:00
这好象是从一个笑话里挤出来的编程题,在国际象棋的棋盘上放麦子。。。
如果循环是1到63,s的初值应该是1。
但关键是精度问题,这里的s是单精度的,有效位不够,就是双精度也不够,所以说不能精确地得到计算结果。如果有int64类型的64位整型数,应该刚好可以。可惜QB的长整型只有32位。
5 楼
杨333 [专家分:0] 发布于 2005-09-30 08:59:00
请大虾们在讲明白些。
6 楼
moz [专家分:37620] 发布于 2005-09-30 11:28:00
遗憾的是,
在我的WIN2K,和我的DOS6.22上都没出现溢出,
真要排错的话
我估计是那一句 for i=1to 63
/
1和to要用空格分开写成
for i=1 to 63
7 楼
杨333 [专家分:0] 发布于 2005-10-02 15:59:00
感谢各位大虾的指点,还有一事不明,就是这道题里从那里看出加入了1
8 楼
moz [专家分:37620] 发布于 2005-10-03 00:44:00
你的程序里没有加1
可以有两种方法改:
1. s赋初值 s=1
2. i从0开始, 2^0 = 1
我来回复