以下代码旨在查找输入数字范围内的最大数字。输入0后输入结束(确定最大值时不考虑0)。它似乎适用于正数,但对于一系列负数,它总是说最大值为0.任何人都可以告诉我错误在哪里?
program MaximumEndZero (input, output);
var
Max,
Value : integer;
begin
writeln('Enter numbers');
readln(Value);
if (Value = 0) then
writeln('No input')
else
begin
Max := Value;
while Value <> 0 do
begin
readln(Value);
if Value > Max then
Max := Value
end;
writeln('Max is: ', Max)
end;
end.
谢谢vm
答案 0 :(得分:0)
您自己创建了此问题,方法是使用Value
的值来表示程序结束,然后在代码中没有考虑这个特殊含义(Value = 0
)价值是最大值。
只需将代码更改为
即可 if (Value <> 0) and (Value > Max) then
Max := Value
(Value <> 0) and
有效地说“忽略值,如果它恰好为零......”