为什么这个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. 展开
var
a,i:longint;
begin
for i:=1 to 100 do
begin
a:=a+i*i;
i:=i+2;
end;
end. 展开
展开全部
嘿嘿,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.
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.
展开全部
首先你这个语法应该编译不过的吧
pascal中循环变量在循环过程不允许赋值的
另外最后一个end后面应该是分号,而不能是点吧
pascal中循环变量在循环过程不允许赋值的
另外最后一个end后面应该是分号,而不能是点吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那是在Turbo Pascal中,在Free Pascal中就不会。
在Turbo Pascal中,For的用处只是将变量值加1,拿这个程序来讲,当i的值为101时才退出,但是在执行过程中,i的值从没变成101,只有100和102,所以才死循环的。
在Turbo Pascal中,For的用处只是将变量值加1,拿这个程序来讲,当i的值为101时才退出,但是在执行过程中,i的值从没变成101,只有100和102,所以才死循环的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,你的a没有赋值清零,而且循环可以用repeat做:
var
a,i:longint;
begin
a:=0;i:=1;
repeat
a:=a+i*i;
i:=i+2;
until i>100;
end.
var
a,i:longint;
begin
a:=0;i:=1;
repeat
a:=a+i*i;
i:=i+2;
until i>100;
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询