3

我正在尝试编写一个程序来将自然数从 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 中存在语法错误的结果。

为什么会这样?

4

2 回答 2

5

以下代码在此在线基本解释器中工作。

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

)

于 2019-07-24T17:26:56.350 回答
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
于 2019-08-12T18:15:36.800 回答