导致这段代码出现问题的原因是什么?

时间:2009-05-29 20:51:15

标签: user-input pascal

我只是想知道为什么这个问题发生在我身上。如果你能帮助我,我会很感激。

Program factorial;
uses crt;
var
  f, i: Integer;
begin
  f:=1;
  for i:=1 to 5 do
    f:= f * i;
  write(f);
  readkey;
end.

好的,工作正常,结果是120.这是真的。

现在,这是问题所在。如果我要求用户输入数字的值,它将无效。

Program factorial;
uses crt;
var
  i,r: Integer;
begin
  write('Enter the number');
  read(r);

  for i:=1 to r do
    r:= r * i;

  write(r);
  readkey;
end.

如果我写了5,输出将是600。

3 个答案:

答案 0 :(得分:10)

您正在使用值r作为循环的停止条件并修改循环中的值。

Program factorial;
uses crt;
var
    i,r, f: Integer;
begin
  write('Enter the number');
  read(r);
  f := 1;
  for i:=1 to r do
     f:= f * i;
  write(f);
  readkey;
end.

答案 1 :(得分:4)

您重复使用r变量。如果您为5输入r,您的计划将生效一到多次。您应该从1开始作为第一个f

Program factorial;
uses crt;
var
    i,r, f: Integer;
begin
    write('Enter the number');
    read(r);
    f:=1
    for i:=1 to r do
        f:= f * i;
    write(r);
    readkey;
end.

答案 2 :(得分:1)

尝试:

Program factorial;
uses crt;
var
i,r,x: Integer;
begin
write('Enter the number');
read(x);
r:=1
for i:=1 to x do
r:= r * i;
write(r);
readkey;
end.