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

C语言:仅用stdio.h无数组实现最长相同数字序列统计函数求助

解决C语言无数组求最长连续相同数字序列问题

我来帮你搞定这个需求!咱们先理清楚核心要求,再一步步实现符合规则的代码——只能用stdio.h、不能用数组,还要统计最长连续序列的长度和它的出现次数。

核心思路分析

因为不能用数组存储所有输入,所以我们必须用状态变量实时跟踪当前的连续序列状态,不需要保存历史数据:

  • prev_num:记录上一个输入的正整数,用来和当前数比较是否连续
  • current_len:当前正在统计的连续相同数字的长度
  • max_len:目前找到的最长连续序列长度
  • count_max:最长长度出现的次数

关键注意点:

  • 第一个输入的数需要单独处理(因为一开始没有上一个数)
  • 循环结束后,必须处理最后一段连续序列(退出循环时最后一段还没参与比较)

完整代码实现

#include <stdio.h>

void MaxLength() {
    int n;
    // 初始化变量:prev_num设为-1(因为输入是正整数,第一个数必然和它不同)
    int prev_num = -1;
    int current_len = 0;
    int max_len = 0;
    int count_max = 0;

    // 循环输入正整数,直到输入负数停止
    while (scanf("%d", &n) == 1 && n >= 0) {
        if (prev_num == -1) {
            // 处理第一个输入的数
            prev_num = n;
            current_len = 1;
        } else if (n == prev_num) {
            // 当前数和上一个相同,连续长度+1
            current_len++;
        } else {
            // 当前数和上一个不同,先处理上一段连续序列
            if (current_len > max_len) {
                // 找到更长的序列,更新最长长度和计数
                max_len = current_len;
                count_max = 1;
            } else if (current_len == max_len) {
                // 和当前最长长度相同,计数+1
                count_max++;
            }
            // 重置状态,开始统计新的序列
            prev_num = n;
            current_len = 1;
        }
    }

    // 处理循环结束后剩下的最后一段连续序列(非常重要,容易遗漏)
    if (current_len > 0) {
        if (current_len > max_len) {
            max_len = current_len;
            count_max = 1;
        } else if (current_len == max_len) {
            count_max++;
        }
    }

    // 按照要求格式输出结果
    printf("最长长度 - %d,出现次数 - %d\n", max_len, count_max);
}

// 测试用主函数(可选,用于验证)
int main() {
    MaxLength();
    return 0;
}

代码测试与验证

用你提供的示例输入测试:

19 19 97 97 97 97 681 681 681 681 97 36 36 36 97 97 97 97 36 -19

程序会输出:

最长长度 - 4,出现次数 - 3

完全符合预期——连续4次的序列分别是97(第一次)、681、97(第二次),共3次。

边界情况处理

  • 仅输入一个正整数(如5 -1):输出最长长度 - 1,出现次数 - 1
  • 所有数都不重复(如1 2 3 4 -5):输出最长长度 - 1,出现次数 - 4
  • 多个相同最长长度的序列(如22 22 33 33 44 44 -1):输出最长长度 - 2,出现次数 - 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:08:47