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

判断五位数是否含重复数字的C++代码运行错误求排查

五位数重复数字判断代码修复方案

错误原因

你当前代码的核心问题是if判断逻辑覆盖场景不全:

  • 仅针对「恰好有两组两个相同数字、剩余一个不同」的极少数特殊场景做了判断,完全没有覆盖仅存在一对重复数字的基础场景,比如输入11234你的代码会错误输出NO
  • 没有覆盖三个及以上数字相同的场景,比如输入11123,你条件里的不等判断会直接排除该类合法场景
  • 大量重复组合没有纳入判断,比如个位和百位相同、十位和万位相同这类组合,你的条件里完全没有相关判断逻辑

修复方案

方案1:直接枚举所有两两组合

五位数共5个数字,总共有10种两两组合,只要任意一组相等就符合要求,代码改动最小:

#include <iostream>
using namespace std;

int main()
{
    int n,a,b,c,d,f;
    cin >> n;
    a = n / 10000;
    b = n / 1000 % 10;
    c = n / 100 % 10;
    d = n / 10 % 10;
    f = n % 10;
    if(a==b || a==c || a==d || a==f ||
       b==c || b==d || b==f ||
       c==d || c==f ||
       d==f)
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

方案2:数字计数法(通用扩展型)

如果后续需要适配更多位数的判断,推荐用计数法,逻辑更简洁,扩展性更强:

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int cnt[10] = {0};
    for(int i = 0; i < 5; i++){
        int digit = n % 10;
        if(++cnt[digit] >= 2){
            cout << "YES";
            return 0;
        }
        n /= 10;
    }
    cout << "NO";
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:57:00