有人能给我解释一下如何用 Pascal 编写一个程序,每隔一个数字相加直到总和为 100 吗?

Can someone explain me how to make a program in pascal that will add every second number until sum is 100?

我试过这样做,但似乎不起作用。 它只在我输入数字 55 3 次时有效,但在任何其他情况下都无效。

var
   x: array[1..100] of integer;
   i, suma: integer;
begin
   suma := 0;
   repeat 
      readln(x[i]);
      for i := 1 to 100 do 
      begin
         if i mod 2 = 0 then suma := suma + x[i];
      end;
   until suma >= 100;
end.

在这里我想我终于做了一个程序,可以按照我在问题中的要求去做。

var
   x: integer;
   i, suma: integer;
begin
   suma := 0;
   i := 1;
   repeat 
      readln(x);
      if i mod 2 = 0 then suma := suma + x;
      i := i + 1;
   until suma >= 100;
end.

看看你的代码在做什么。

你重复直到 suma 大于或等于 100。这很好。在此您读入 x[i]i 尚未初始化。

假设这可行,然后循环 100 次,将数组的未初始化成员添加到 suma

这基本上是不必要的。数组当然是。

我们需要循环repeat直到和大于等于100。在这个循环中,我们需要读入数字,我们需要跟踪当前循环是偶数还是奇数.

program Test;
var
  user_input: integer;
  sum: integer = 0;
  i: integer = 0;

begin
  repeat
    read(user_input);

    if i mod 2 = 0 then
      sum := sum + user_input;

    i := i + 1;
  until sum >= 100;

end.

我知道你有解决方案,但我会把我的解决方案放在这里。

其实,你只需要移动线:

readln(x[i]);

begin 代码之后的行。

您的新代码将是:

var x: array[1..100] of integer;
i, suma: integer;
begin
suma := 0;
for i := 1 to 100 do
begin
readln(x[i]);
if i mod 2 = 0 then suma := suma + x[i];
if suma >= 100 then exit;
end;
end.

P/S:你不需要重复……直到。您可以使用 if 'condition' then exit;