回 帖 发 新 帖 刷新版面

主题:初学QB碰到的第一个疑问,帮帮我啊。

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个回复)

沙发

2n就是2乘以n的意思,QB中乘号不能省略!!
10的-3次方就是0.001
While T>0.001的意思就是当T大于0.001的时候继续执行这个循环,T小许0.001也就是10的-3次方则不满足条件跳出循环!

板凳

谢谢zqnhlm热心的给我解答。看你的资料你还不到20岁,编程就这么厉害,真是佩服啊。

还有两个问题,(2n-1)到程序里为什么减号变成+号了??

再是题目给的是“小于”10的-3次方,那么在程序里是不是应该写成“T<0.001”啊????为什么答案给成 “while T>0.001”呢???

3 楼

[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 楼

moz说的对!
搂主也太夸我了吧!!
我只会做简单的,稍微有些难的我就不会了!

Moz年轻的时候那么帅啊!!真是迷倒众生!!!对了,你年轻时是几岁啊??你现在老了吗???还不出30啊!!!!

5 楼

[em1][em1]
谢谢热心的朋友啦。

这个问题我终于搞定了。好开心啊。总结一下原来是我WHILE……WEND函数没有搞懂。现在知道了。



[em1][em1]

6 楼

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 楼

建议:请在标题中具体、明确点明主题,最好不用“小菜问题”、“跪求”“来看看呀”之类的模糊标题。

我来回复

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