所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的。
那么如何编程来判断一个数是否为回文数呢?
///判断一个数是否为回文数
//思路:从个位开始,依次取出每位上的数,然后反顺序输出,与原数比较即可
bool symm(unsigned n)
{
unsigned i = n;
unsigned m = 0;
while(i > 0)
{
m = m * 10 + i % 10;//取出该位上的数字
i /= 10;//降低位
}
return(m == n);
}
思考题:
寻找并输出11~999之间的数m,它满足m、m^2、m^3均为回文数。例如:11满足条件:11^2=121, 11^3=1331
代码如下:
#include <iostream>
using namespace std;
bool symm(unsigned n)
{
unsigned i = n;
unsigned m = 0;
while(i > 0)
{
m = m * 10 + i % 10;//取出该位上的数字
i /= 10;//降低位
}
return(m == n);
}
int main()
{
for(unsigned i = 11; i <= 999; i++)
{
if(symm(i) && symm(i * i) && symm(i * i * i))
{
cout << "m = " << i << '\t'
<< "m ^ 2 = " << i * i << '\t'
<< "m ^ 3 = " << i * i * i << endl;
}
}
return 0;
}