我只是想知道为什么这个问题发生在我身上。如果你能帮助我,我会很感激。
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。
答案 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.