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

为什么这段判断回文数的C语言代码无法正常运行?

回文数判断代码的问题分析与修复

你的代码之所以判断错误,核心原因是反转数字的过程中把原始输入的n给改没了。

看这段循环逻辑:

while (n!=0){
   rem = n % 10;
   rev = rev * 10 + rem;
   n = n / 10;
}

每次循环都会把n除以10,直到n变成0才停止循环。这时候你再用rev == n做判断,相当于拿反转后的数字和0比,除非你输入的是0,否则永远不会相等,自然会错误判定为非回文数。

修复方法很简单:提前把原始输入的数字存到另一个变量里,比如original,最后拿反转后的rev和original比较就行。

修正后的完整代码:

#include<stdio.h>

int main(){
   int n, original, rev = 0, rem;
   printf("enter number: ");
   scanf("%d", &n);
   original = n; // 保存原始输入的数字

   while (n != 0){
      rem = n % 10;
      rev = rev * 10 + rem;
      n = n / 10;
   }

   if (rev == original) {
      printf("Number is a palindrome");
   } else {
      printf("Number is not a palindrome");
   }

   return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:15:46