Pascal 帕斯卡练习没有解决

Pascal 帕斯卡练习没有解决,pascal,Pascal,其目的是在整数列表中找到最大值 program findMaximum(input,output); var number: integer; Maximum: integer; begin writeln('Insert any number except of 0. 0 finishes your input.'); if eof then writeln('No input!') else be

其目的是在整数列表中找到最大值

program findMaximum(input,output);

var
number: integer; Maximum: integer; 

begin    
    writeln('Insert any number except of 0. 0 finishes your input.');

        if eof then      
        writeln('No input!')   
    else   
    begin        
        read(number);    
        Maximum:= number;    
        while not eof do     
        begin    
            if number>Maximum then    
            read(number);
            Maximum := number
        end;
    if number<0 then
        read(number);    
        Maximum:= 0;    
    writeln ('The highest number is 0.')
end.
程序查找最大值(输入、输出);
变量
数字:整数;最大值:整数;
开始
writeln('插入除0之外的任何数字。0完成输入');
如果是eof那么
writeln('无输入!')
其他的
开始
读取(数字);
最大值:=个数;
而不是eof做什么
开始
如果数量>最大值,则
读取(数字);
最大值:=个数
结束;
如果编号一般建议:

你肯定应该重新阅读复合语句的语法,如果..那么..否则。您的代码可能和if语句在数字上的比较不符。
然后,请拿起纸和笔,手动运行代码(你是计算机执行程序的一部分),思考一个语句的效果,写下所有涉及的变量值,然后继续下一个语句,直到最后一个语句。这将使您更好地了解代码的功能。为了分析代码的特定错误行为,您可能需要学习使用调试器

特定于您的代码:

对于给定代码,输入的任何负数都会将最大值重置为0。这很可能是由于缺少Maximum的初始化,因为您似乎试图确保Maximum不会作为负值返回

此外,您缺少所述的终止条件(输入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.

请学习在这里发布时正确设置代码格式。粘贴它,高亮显示(选择)所有内容,然后单击工具栏上的
{}
按钮或工具栏上的Ctrl+K。如果您需要有关内容格式的帮助,请单击文本区域右上角键入问题的小
。此外,您还没有解释所发布代码的问题,也没有询问有关该代码的特定问题。有人能帮忙吗?不是一个具体的(甚至没有意义的)问题。你应该解释你的问题所显示的代码有什么问题(除了暗示它不起作用(如预期的)。