为什么我的 For 循环只打印最后一个结果?

1 pascal for-loop

我正在尝试编写一个 for 循环,它将给定的数字 n 与特定范围内的每个数字(例如 1-10)相乘,并打印每个步骤。我的代码如下所示:

begin
     writeln('FOR');
     for i:=1 to 10 do
     x:=n*i;
     writeln(x);
     readln();
     end;
Run Code Online (Sandbox Code Playgroud)

但是,只会打印最后的结果。如果 n=5,则为 50。我该如何解决这个问题?

亲切的问候,朱利叶斯

没有 x:=n*i; 行,它将打印 0 十次,正如它应该做的那样。另外,在 writeln 行中将 x 替换为 n 将打印 n 10 次。

Dav*_*vid 5

您(1)缺少beginand endforfor循环,并且(2)因缩进不一致而感到困惑。

如果缩进一致,您的代码将是:

begin
    writeln('FOR');
    for i:=1 to 10 do
        x:=n*i;
    writeln(x);
    readln();
end;
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,如果没有beginand endfor 循环,只有紧邻的下一行代码才是实际的循环体。包含beginandend块以在循环体中指定多行代码:

begin
    writeln('FOR');
    for i:=1 to 10 do
    begin
        x:=n*i;
        writeln(x);
    end;
    readln();
end;
Run Code Online (Sandbox Code Playgroud)