这段代码没有给我正确的答案,我也找不到错误。我该如何修复代码?
场景:首先确定数字的位数,然后回文数字。
#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/