c - 在c中找到一个数字的回文

标签 c palindrome

这段代码没有给我正确的答案,我也找不到错误。我该如何修复代码?

场景:首先确定数字的位数,然后回文数字。

#include<stdio.h>
#include<conio.h>
#include<math.h>

int main()
{
    int number=42321,j=0,dig,temp;
    long long pal= 0LL;

    temp=number;     
    while(temp>0)
    {
          temp/=10;
          j++;
    }

    while (number>0)
    {          
          dig=number%10;
          pal+=dig*(int)pow(10,j);
          number/=10;
          j--;  
    }

    printf("%d",pal);
    getch();   
}

最佳答案

while(temp>0)
{
      temp/=10;
      j++;
}

您正在计算 number 的位数,它比不超过 number 的十的最高次方的指数多一位。之后您需要递减 j

但是使用 pow() 并不是最好的方法,更好的方法是逐步构造反转数:

while(temp > 0)
{
    pal = 10*pal + temp%10;
    temp /= 10;
}

关于c - 在c中找到一个数字的回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662378/

相关文章:

recursion - LISP-- 递归回文

c - 写入文本文件

在 C 中连接/追加字符串流

java - 在隐性回文方法上终止代码时遇到问题

python - 找到最大回文的最快算法,该回文是具有相同位数的 2 个数字的乘积

javascript - 递归检查字符串是否为回文的算法的时间复杂度是多少?

c++ - 如何计算两个玩家之间的回文游戏的总分?

c - 数组结构和内存访问模式

C 系统调用 msgsnd() : invalid argument error on certain compiler versions

c - 跳过下一列的数据(C)