首页 > 解决方案 > 帕斯卡 - 我如何将所有可以除以 4 的数字相加,必须使用重复

问题描述

无法获得正确的答案,它也错误地求和并相乘,解决这个问题时我必须使用重复,我想问题出在sum:=i+i但我不知道如何解决

program SAD;
uses crt;
var a, i, sum, prod: integer;
begin
clrscr;
sum:=0;
prod:=0;
{Sum}
repeat
for i:=1 to 26 do
if i mod 4 = 0 then sum:=i+i;
until i = 26;
{Multiplication}
repeat
for a:=1 to 26 do
if a mod 4 = 0 then prod:=a*a;
until a = 26;
writeln('Suma numerelor divizate la 4 este:', sum);
writeln('Produsul numerelor divizate la 4 este:', prod);
end.

标签: pascal

解决方案


我认为“使用重复”指令可能意味着您也应该避免使用for

您的代码中有一些错误:

  1. 在 sum 循环中,您应该添加isum,而不是添加到自身。

  2. 在 prod 循环中,由于您prod在开始时设置为零,因此它将保持为零,因为零乘以任何东西都是零。所以你需要调整你的prod计算逻辑,如果prod是零,当mod 4条件满足时,你设置prod为当前值a,否则你乘以它a

这是一些修复上述问题并避免使用for.

program Sad;
uses crt;
var
  a, i, sum, prod: integer;
begin
  clrscr;
  sum:=0;
  prod:=0;

  {Sum}
  i := 0;
  repeat
    inc(i);
    if (i mod 4) = 0 then
      sum := sum + i;
  until i = 26;

  {Multiplication}
  a :=0;
  repeat
    inc(a);
    if a mod 4 = 0 then begin
      if prod = 0 then
        prod := a
      else
        prod := prod * a;
    end;
  until a = 26;
  writeln('Suma numerelor divizate la 4 este:', sum);
  writeln('Produsul numerelor divizate la 4 este:', prod);
  readln;
end.               

推荐阅读