free pascal 编译成功 整体运行 答案错误 单步执行出问题
来源:百度知道 编辑:UC知道 时间:2024/06/01 15:44:29
程序编译成功了
运行一遍
输出的答案错了
我就F7单步执行
执行到只有一个语句循环体的while语句时
黑屏提示错误
继续F7
回到篮屏继续单步执行
以后每次到那个地方
就黑屏提示错误
再按F7 也还能回来
能否解释一下?
while (a[j]=a[i])and(j<max) do inc(j);
我已经知道了
根据输入数据
这句将被执行上百万次
而F7是按行执行,而不是按句执行
所以在这里停了几秒钟
二楼
我的程序的确是没有问题的
正如我上面说的那样
你把“inc(j);”调到下面单独列一行再试试,也许是数组越界了
之所以还能“再回来”是由于Free Pascal早期版本的Bug导致的
如果还是没有发现错误你再补充
附上我的很丑的程序
=============
program milk2;
const
MaxN=5000;
var
a,b:array[1..MaxN] of longint;
i,n,mid,temp,l,r,MaxWork,MaxBreak:longint;
procedure Qsort(l,r:longint);
var i,j:longint;
begin
i:=l; j:=r; mid:=a[(l+r) shr 1];
repeat
while a[i]<mid do inc(i);
while a[j]>mid do dec(j);
if i<=j then
begin
temp:=a[i]; a[i]:=a[j]; a[j]:=temp;
temp:=b[i]; b[i]:=b[j]; b[j]:=temp;
inc(i); dec(j);
end;
until i>j;
if l<j then Qsort(l,j);
if i<r then Qsort(i,r);
end;
procedure GetMax(var a:longint; b:longint);
begin
if b>a then a:=b;
end;
begin
assign(input,'milk2.in