一般建议:
你一定要重新阅读的复合语句和if..then..else的语法。您的代码可能并非如您所期望的如果陈述比较号码。
然后,请拿纸笔和运行代码手动(以执行该程序的计算机的一部分),想着在一份声明中的作用,并写下所涉及的变量的任何值,然后怎么回事到下一个陈述,直到你到达最后的结局。这会让您更好地了解代码的功能。要分析您的代码的特定不当行为,您可能需要使用调试器进行学习。
具体到你的代码:
在给定的代码中的任何负数是输入最高将重置为0 。这可能是最大值缺失初始化的结果,因为您似乎试图确保最大值不会作为负值返回?
此外,您缺少您所述的终止条件(输入将结束程序)。
有了这些方面的固定代码如下:
program findMaximum(input,output);
var
number: integer; Maximum: integer;
readOn: boolean;
begin
Maximum:=0;
readOn := true;
writeln('Insert any number except of 0. 0 finishes your input.');
if eof then
writeln('No input!')
else
begin
read(number);
Maximum:= number;
while readOn and not eof do
begin
if number = 0 then
readOn := false
else
begin
if number>Maximum then
Maximum := number;
read(number);
end;
end;
writeln ('The highest number is ',Maximum,'.');
end
end.
但是,你将不能正确EOF时,输入时是发生处理此案。 (而不仅仅是要读值时,第一事件)考虑到这个账户也
,你可能最终使用的东西一起:
program findMaximum(input,output);
var
number: integer; Maximum: integer;
readOn: boolean;
valuesSeen: boolean;
begin
Maximum:=0;
readOn := true;
valuesSeen := false;
writeln('Insert any number except of 0. 0 finishes your input.');
read(number);
while readOn and not eof do
begin
if not eof then
begin
if number = 0 then
readOn := false
else
begin
valuesSeen := true;
if number>Maximum then
Maximum := number;
read(number);
end
end
end;
if valuesSeen then
writeln ('The highest number is ',Maximum,'.')
else
writeln('No input!')
end
end.
来源
2016-04-24 21:12:55
rpy
请学会在这里发帖时正确格式化你的代码。将其粘贴,全部高亮(选择),然后单击工具栏上的“{}”按钮或工具栏上的Ctrl + K。如果您需要格式化内容方面的帮助,请单击要输入问题的文本区域右上角的小“?”。 –
另外,你还没有解释你使用你发布的代码时遇到的问题,而且你还没有提出有关该代码的**特定问题**。 *任何人都可以提供帮助?*不是特定的(或者甚至是有意义的)问题。 –
你应该解释你的问题显示的代码有什么问题(除了隐含的_It不工作(如预期)_。 – rpy