pascal高手进 奇怪的问题

来源:百度知道 编辑:UC知道 时间:2024/06/19 14:37:33
先看这段代码:
说明:在这段代码之前,sort数组已经排好序了。counts是用来计数的,用以统计相同数字出现的次数。输出的格式为:
数字 次数
(最后一个数据不对)
counts:=1;
write(sort[1]);
for i:=2 to n do
begin
if sort[i-1] = sort[i] then
counts:=counts+1
else
begin
write(' ');
writeln(counts);
write(sort[i]);
counts:=1;
end;
if i=n then
begin
write(' ');
writeln(counts);
end;
end;
为什么改成这样就对了呢?这有什么区别么?
counts:=1;
write(sort[1]);
for i:=2 to n do
begin
if sort[i-1] = sort[i] then
counts:=counts+1
else
begin
write(' ');
writeln(counts);
write(sort[i]);
counts:=1;
end;
end;
write(' ');
writeln(counts);
end;
end;

不太清楚,进循环前先指定一个i值试下..如果你用C++写这个程序是没有问题的... 但是这是pascal程序
fp2.2.2的编译器...两段程序跑起来都没问题
delphi说类pascal语言中循环变量出循环后值无定义..应该和这个没什么关系吧...
p.s.你可以试一下inc函数和dec函数..很方便的:
inc(i); = i:=i+1;
dec(i); = i:=i-1;
inc(i,a); = i:=i+a;
dec(i,a); = i:=i-a;