pascal中while,repeat语句的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 20:45:07
两个都好是求15之内的阶乘
(1)
var
i,n:integer;
p:real;
begin
p:=1;
i:=1;
repeat
write('an integer under 16,please:');
readln(n);]
until (n>=0) and (n<16);
while i<=0 do
begin
p:=p*i;
i:=i+1
end
这里都懂,只是p:=p*i; i:=i+1这里不懂

(2)也是求15之内的阶乘的
var........................until那句是一样的,然后:
repeat
p:=p*i;
i:=i+1
until i>n

这两个程序不明白啊,上面不是把p:=1,i=1定义了吗?
那p:=p*i; i:=i+1 有什么意义?

当然有意义。
第一次循环:p:=1*1;i:=1+1;
第二次循环:p:=1*2;i:=2+1;
第三次循环:p:=2*3;i:=3+1;
第四次循环:p:=6*4;i:=4+1;
第五次循环:p:=24*5;i:=5+1;
第六次循环:p:=120*6;i:=6+1;
第七次循环:p:=720*7;i:=7+1;
……
这样下去,p=1*1*2*3*4*5*6*7*……*n,也就是n的阶乘。

ps:while i<=0 do——————这句应改为while i<=n do

第一个程序有一点点错误
应该将while i<=0 do 改为 while i<=n do

是定义了,但是p:= p*i的意思是,后面的程序中p的值就是等于p*i了
i:=i+1的意思是,后面的程序中i的值就等于i+1了,
p和i在程序中都叫变量,也就是说他们的值是可以变化的,明白了吗?

p:=p*i表示累乘
i:=i+1表示递增! 还有就是 你的程序有问题哈!