我试着通过以下代码检查数字是否是回文:
unsigned short digitsof (unsigned int x)
{
unsigned short n = 0;
while (x)
{
x /= 10;
n++;
}
return n;
}
bool ispalindrome (unsigned int x)
{
unsigned short digits = digitsof (x);
for (unsigned short i = 1; i <= digits / 2; i++)
{
if (x % (unsigned int)pow (10, i) != x % (unsigned int)pow (10, digits - 1 + i))
{
return false;
}
}
return true;
}
但是,以下代码无法检查回文 – 即使数字是回文,也始终返回false.
有谁可以指出错误?
(请注意:我没有兴趣将它变成一个字符串并反转它以查看问题所在:相反,我很想知道上面代码中的错误在哪里.)
解决方法:
问题是这样的:
x % (unsigned int)pow (10, i)
我们试试吧:
x =504405
i =3
SO I want 4.
x % 10^3 => 504405 %1000 => 405 NOT 4
怎么样
x / (unsigned int)pow (10, i -1) % 10