You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除Pascal代码中writeln()致输出异常,求正确无空行实现

Pascal程序修正:解决结果正确但多空行、删writeln出垃圾值问题

问题分析

你遇到的核心问题根源很明确:

  • 多余空行就是第30行writeln()直接导致的,删掉它就能解决空行问题,但删完后输出垃圾值,本质是变量未初始化——原程序里记录最长连续长度的变量没设初始值,保留writeln()时,函数调用碰巧让内存临时值符合预期,删掉后变量的随机初始值就暴露出来了。
  • 输入1、1、0、0时的超大数字就是未初始化变量的随机内存值。

修正后的代码

program LongestConsecutiveSequence;
var
    current, prev, curr_count, max_count: integer;
begin
    // 关键:初始化统计变量,彻底避免垃圾值
    curr_count := 1;
    max_count := 1;
    // 用非0值初始化prev,避免和输入的0触发错误停止条件
    prev := -1;

    // 读取第一个整数
    read(current);
    prev := current;

    while true do
    begin
        read(current);

        // 触发停止条件:连续两个0
        if (prev = 0) and (current = 0) then
            break;

        // 统计连续相同整数
        if current = prev then
            curr_count := curr_count + 1
        else
        begin
            // 更新最长连续长度
            if curr_count > max_count then
                max_count := curr_count;
            curr_count := 1;
        end;

        prev := current;
    end;

    // 最后补查:防止最后一段连续序列是最长的(比如到两个0前的序列)
    if curr_count > max_count then
        max_count := curr_count;

    // 仅输出最终结果,无多余空行
    writeln(max_count);
end.

修正要点

  1. 变量初始化:给curr_count(当前连续长度)和max_count(最长连续长度)设初始值1,prev设为-1(避免和输入的0冲突),从根源解决垃圾值问题。
  2. 移除多余输出:只在程序末尾输出最终结果,消除多余空行。
  3. 补全逻辑漏洞:循环结束后额外检查一次curr_count,确保最后一段连续序列的长度被纳入最长统计(比如输入2、2、2、0、0时,不会漏掉3这个最大值)。

测试验证

输入1、1、0、0时,程序会正确统计到连续2个1,输出2且无任何多余空行;删除无关writeln()后也不会再出现垃圾值。

内容的提问来源于stack exchange,提问作者user19437199

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:38:13