一般建議:
你一定要重新閱讀的複合語句和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