主题:初学QB碰到的第一个疑问,帮帮我啊。
ysyz
[专家分:0] 发布于 2005-07-29 17:08:00
BSICA语言书中的一道题
求1+1/3+1/5+1/(2n-1),直到最后一项小于10的-3次方为止。
我看解答程序是:
10 LET SUM=0
20 LET N=0
30 LET T=1
40 WHILE T>0.001
50 LET N=N+1
60 LET T=1/(2*N+1)
70 WEND
80 PRINT SUM
90 RUN
我想不通题目是(2n-1),怎么到程序里就变成(2*n+1)了???而且程序里的条件是T>0.001啊?题目中的要求是小于10的-3次方啊???
迷惑中。
回复列表 (共7个回复)
沙发
zqnhlm [专家分:780] 发布于 2005-07-29 18:45:00
2n就是2乘以n的意思,QB中乘号不能省略!!
10的-3次方就是0.001
While T>0.001的意思就是当T大于0.001的时候继续执行这个循环,T小许0.001也就是10的-3次方则不满足条件跳出循环!
板凳
ysyz [专家分:0] 发布于 2005-07-30 09:58:00
谢谢zqnhlm热心的给我解答。看你的资料你还不到20岁,编程就这么厉害,真是佩服啊。
还有两个问题,(2n-1)到程序里为什么减号变成+号了??
再是题目给的是“小于”10的-3次方,那么在程序里是不是应该写成“T<0.001”啊????为什么答案给成 “while T>0.001”呢???
3 楼
moz [专家分:37620] 发布于 2005-07-30 10:36:00
[color=FF00FF]While T>0.001的意思就是当T大于0.001的时候继续执行这个循环,T小许0.001也就是10的-3次方则不满足条件跳出循环! [/color]
=
[color=FF00F0]直到最后一项小于10的-3次方为止。[/color]
2*n+1也是可以的,
但是需要从0开始,
或者让sum省略1这一步.
(在你的程序里,是不是忘了处理sum这个变量了?)
方案A:
sum=1
N=0
T=1
while T>0.001
N=N+1
T=1/(2*N+1)
sum=sum+T
wend
print sum
方案B:
sum=0
N=0
T=1
while T>0.001
T=1/(2*N+1)
N=N+1
sum=sum+T
wend
print sum
建议方案:
do
t=1/(2*n+1)
sum=sum+t
n=n+1
loop while t>0.001
print sum
很多表面上的东西没有谁对谁错,
结果是对的才是对的.
八十年代的时候我比较相信书报的准确性真实性,
因为那个年代的人比较严谨,做事情都懂得顾全大局.
到了投机风行的九十年代之后,书本上的东西,唉......
已经不完全是出书者的问题了,还会有盗版书问题等等等等
我觉得只要你能把握住变量的准确变化,
控制好程序运行路径.怎么改都没问题的.
剩下来的只是怎样把程序精兵简政的事情而已了.
4 楼
zqnhlm [专家分:780] 发布于 2005-07-30 10:57:00
moz说的对!
搂主也太夸我了吧!!
我只会做简单的,稍微有些难的我就不会了!
Moz年轻的时候那么帅啊!!真是迷倒众生!!!对了,你年轻时是几岁啊??你现在老了吗???还不出30啊!!!!
5 楼
ysyz [专家分:0] 发布于 2005-07-30 11:39:00
[em1][em1]
谢谢热心的朋友啦。
这个问题我终于搞定了。好开心啊。总结一下原来是我WHILE……WEND函数没有搞懂。现在知道了。
[em1][em1]
6 楼
lwm1988 [专家分:90] 发布于 2005-08-26 03:55:00
DIM b AS DOUBLE
k = 1
a = 0
b = 1
WHILE b >= .001
a = a + b
k = k + 2
b = 1 / k
WEND
PRINT "1+1/3+1/5----"; a
END
7 楼
spray [专家分:180] 发布于 2005-09-02 05:31:00
建议:请在标题中具体、明确点明主题,最好不用“小菜问题”、“跪求”“来看看呀”之类的模糊标题。
我来回复