为什么这个for循环是死循环 (pascal)

为什么这个for循环是死循环(pascal)vara,i:longint;beginfori:=1to100dobegina:=a+i*i;i:=i+2;end;end.... 为什么这个for循环是死循环 (pascal)
var
a,i:longint;
begin
for i:=1 to 100 do
begin
a:=a+i*i;
i:=i+2;
end;
end.
展开
 我来答
叮当猫武汉
2010-05-21 · TA获得超过3739个赞
知道大有可为答主
回答量:744
采纳率:0%
帮助的人:0
展开全部
嘿嘿,howlshadow可能只用Delphi,很少用turbo pascal或free pascal

end. 表示 program xxx begin的结束, 在Delphi中.dpr可以看得到!

这个程序是一个死循环,turbo pascal也可以编译通过.刚才用free pascal试了下,编译报错!

这是因为pascal在编译的程序在判断for循环语句是否结束时, 首先对循环变量加1, 再判断是否“等于”结束值+1,是则退出
而当循环体中修改了循环变量,造成这时的值永远不等于结束值的话,就会出现死循环!

你可以加两句看看效果:

var
a,i:longint;
begin
for i:=1 to 100 do
begin
a:=a+i*i;
i:=i+2;
writeln(i);
if i>120 then break;
end;
end.

或改成下面的,也不会出现死循环!

var
a,i:longint;
begin
for i:=1 to 100 do
begin
a:=a+i*i;
i:=i+1;
end;
end.
howlshadow
2010-05-21 · TA获得超过1381个赞
知道小有建树答主
回答量:1171
采纳率:100%
帮助的人:937万
展开全部
首先你这个语法应该编译不过的吧

pascal中循环变量在循环过程不允许赋值的

另外最后一个end后面应该是分号,而不能是点吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6fa3859
2010-05-21 · TA获得超过3349个赞
知道小有建树答主
回答量:1148
采纳率:85%
帮助的人:425万
展开全部
那是在Turbo Pascal中,在Free Pascal中就不会。
在Turbo Pascal中,For的用处只是将变量值加1,拿这个程序来讲,当i的值为101时才退出,但是在执行过程中,i的值从没变成101,只有100和102,所以才死循环的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友37e7a1b
2010-05-21 · TA获得超过297个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:331万
展开全部
首先,你的a没有赋值清零,而且循环可以用repeat做:
var
a,i:longint;
begin
a:=0;i:=1;
repeat
a:=a+i*i;
i:=i+2;
until i>100;
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式