主题:还有个分析程序的
梧桐秋雨1229
[专家分:0] 发布于 2006-01-10 19:37:00
dim a(20)
for i=1 to 20
a(i/2)=2*i+1
a(i/2+1)=a(i/2)
next i
fpr i=10 to 1 step -3
print a(i);
next i
end
其中a(4)怎么等于19呢?谢谢!!!
回复列表 (共8个回复)
沙发
竹本无心 [专家分:20] 发布于 2006-01-10 21:43:00
dim a(20)
for i=1 to 20
a(i/2+1)=a(i/2)
next i
fpr i=10 to 1 step -3
print a(i);
next i
end
输出的是:49 29 19 5
输出的是 a(10) a(7) a(4) a(1)
所以 a(4)=19 而不是29啊
板凳
竹本无心 [专家分:20] 发布于 2006-01-10 21:49:00
dim a(20)
当i=8→ for i=1 to 20
则到这步是→ a(i/2)=2*i+1 a(8/2)=a(4)=2*8+1=19 所以a(4)=19
a(i/2+1)=a(i/2)
next i
fpr i=10 to 1 step -3
print a(i);
next i
end
3 楼
moz [专家分:37620] 发布于 2006-01-11 13:07:00
[color=FF00FF]则到这步是→ a(i/2)=2*i+1 a(8/2)=a(4)=2*8+1=19 所以a(4)=19[/color]
2*8+1 好像是等于17吧?
但当运行到 i=9 的时候
a(i/2)=2*i+1
i/2的值是4.5,但作为数组的下标得值4,是对a(4)作赋值2*9+1=19
这个时候才赋的值19
4 楼
梧桐秋雨1229 [专家分:0] 发布于 2006-01-13 19:35:00
MOZ,a(4.5)四舍五入不是A(5)吗?
5 楼
moz [专家分:37620] 发布于 2006-01-13 22:41:00
是四舍五入的
但是QB这种四舍五入的处理是很奇怪的
是要大于五的才进位的,等于五的都不进位的.
就像是对于
a%=a! 的这一种赋值语句,
当 a!=4.5 的时候 a%=4
当 a!=4.5000001 的时候 a%=5
但不怕老实说,这些东西别以为我能记得住,关键是在于实时检查.
用程序的运行结果来检查,这是很现实也很实际的事情.
6 楼
igdx [专家分:110] 发布于 2006-01-14 13:02:00
a(4.5) ===a(4)
a(3.5) ===a(4)
看4,3
总之一句话---奇进偶不进
大家可以自己试试
7 楼
moz [专家分:37620] 发布于 2006-01-14 13:51:00
呵呵,果然如些.
可能是与二位制位有关吧.
8 楼
梧桐秋雨1229 [专家分:0] 发布于 2006-01-14 16:45:00
哦,明白了,谢谢楼上的两位
我来回复