【问题标题】:How to write a program in gwbasic for adding the natural numbers for 1 to 100?如何在 gwbasic 中编写一个程序来将 1 到 100 的自然数相加?
【发布时间】:2019-07-24 06:56:13
【问题描述】:

我正在尝试编写一个将自然数从 1 加到 n (1 + 2 + 3 + ... + n) 的程序。但是,当我使用 if 语句时,总和显示为 1。而当我使用for-next 语句时,会出现我不理解的语法错误。

if:

30 let s = 0
40 let i = 1
50 s = s + i
60 i = i + 1
70 if i<=n, then goto 50
80 print s

for-next:

30 let i, s
40 s = 0
50 for i = 1 to n
60 s = s + i
70 next i
80 print n
  1. 当我取 n = 10 时,if 语句代码给出的结果为 1,但它应该是 55。
  2. 当我尝试使用for-next 语句时,它没有给出30 中存在语法错误的结果。

为什么会这样?

【问题讨论】:

  • ((1 + n) * n)/2 ... 是直接计算总和的公式!!! ....:D

标签: for-loop if-statement gw-basic


【解决方案1】:

以下代码在此online Basic interpreter 中有效。

10 let n = 100
30 let s = 0
40 let i = 1
50 s = s + i
60 i = i + 1
70 if i <= n then goto 50 endif
80 print s

我在标记为 10 的行上初始化了n,删除了标记为 70 的行上的逗号,并在同一行上添加了一个endif。

这是for-next 版本:

30 let n = 100
40 let s = 0
50 for i = 1 to n
60 s = s + i
70 next i
80 print s

(顺便说一句,第一个n自然数之和是n(n+1)/2:

10 let n = 100
20 let s = n * (n + 1) / 2
30 print s

)

【讨论】:

    【解决方案2】:

    为什么会这样?我错在哪里了?

    30 let s = 0
    40 let i = 1
    50 s = s + i
    60 i = i + 1
    70 if i<=n, then goto 50
    80 print s
    

    修复 #1:初始化变量“n”:

    20 let n = 10
    

    修复 #2:从第 70 行删除逗号:

    70 if i<=n then goto 50
    
    30 let i, s
    40 s = 0
    50 for i = 1 to n
    60 s = s + i
    70 next i
    80 print n
    

    修复 #1:初始化变量“n”:

    30 let n = 10
    

    修复 #2:打印 's' 而不是 'n':

    80 print s
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多