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

循环验证5个整数是否为回文:首项正确后续错误排查求助

问题分析与修复方案

嘿,这问题其实挺常见的——你没在每次处理新数字前重置reverse变量的值!

咱们来拆解下为什么第一个输入正确,后面全错:

  • 第一次进入外层循环时,reverse的初始值是0,反转计算完全正常,对比store得到正确结果。
  • 但从第二个输入开始,reverse还保留着上一次反转后的数值,新的反转计算是在这个旧值基础上累加的,结果自然和实际反转值差了十万八千里。

举个例子:假设第一个输入是121,反转后reverse变成121;第二个输入是123,这时候计算反转时,reverse一开始是121,然后执行reverse = 121*10 + 3 = 1213,接着1213*10 +2=12132,最后12132*10+1=121321,这和store里的123完全不相等,所以会错误输出“Not a palindrome”。

修复后的代码

把reverse的初始化移到外层循环内部,每次处理新数字前都重置为0:

int count = 0;
int n, store, reverse;
while (count < 5) {
    reverse = 0; // 关键:每次循环都重置reverse为0
    cin >> n;
    store = n;
    while (n > 0) {
        reverse = reverse * 10 + n % 10;
        n = n / 10;
    }
    if (store == reverse) {
        cout << "it's a palindrome " << endl;
    } else {
        cout << "Not a palindrome " << endl;
    }
    count++;
}

这样每次处理新的输入整数时,反转计算都会从0开始,得到正确的反转值,对比store就能输出正确结果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:54:39