我到底做错了什么?由于某些原因,每次给它5个数字时它返回0
var
I : integer;
Ligne : array[1..5] of integer;
function MinArray( var A : array of integer) : integer;
var I,min : integer;
begin
min := A[1];
for I := 1 to 5 do
if A[I] < min then
min := A[I] ;
writeln(min);
end;
begin
for I := 1 to 5 do
readln(Ligne[I]);
MinArray(Ligne);
sleep(50000);
end.
Run Code Online (Sandbox Code Playgroud)
如果我把它从功能上取下来,它工作正常,它给了我正确的答案,但是当我尝试使用一个功能时,我无法让它工作.
您必须为该Result功能指定一个:
function MinArray( var A : array of integer) : integer;
var I : integer;
begin
Result := A[Low(A)];
for I := Low(A) + 1 to High(A) do
if A[I] < Result then
Result := A[I] ;
end;
begin
...
WriteLn(MinArray(Ligne));
...
end.
Run Code Online (Sandbox Code Playgroud)
请注意,传递的数组将在函数中从0索引到4.请参见打开阵列参数.这是WriteLn(min);您的代码中的行为的原因.偶然的,超出范围A [5]返回零.
打开{$ R +}以在调试时添加范围检查.总是!