回文数是指一个像14641这样“对称”的数,即:将这个数的各位数字相反的顺序重新排列后,所得到的数和原来的数一样,简单理解就是正读和反读 读法都是一样的。
那我们如何通过C++来判断一个数是不是回文数呢?
以14641为例,取个变量number,并把14641赋值给他,我们需要不断的通过number%10来取出从右到左的数字,每取出一个数字就把number重新赋值为number/10 并且不断的将取出的数字扩大10倍,具体过程如下:
第一次取出个位数1,14641%10=1,那剩下的数就是1464=14641/10 ,那么新的数字swap=1;
第二次取出个位数,1464%10=4,那剩下的数就是 146=1464/10,那么新的数字swap=1*10+4=14
第三次取出个位数,146%10=6,那剩下的数就是 14=146/10,那么新的数字swap=14*10+6=146
第四次取出个位数,14%10=4,那剩下的数就是 1=14/10,那么新的数字swap=146*10+4=1464
第五次取出个位数,1%10=1,那剩下的数就是 0=1/10,那么新的数字swap=1464*10+1=14641
通过以上的过程,我们就可以把一个数给反转过来,然后与原来的数进行对比,如果相等,那就是回文数了。
定义函数,返回一个反转一个数字后的新数字。代码如下:
#include<iostream>
using namespace std;
int SwapNumber(int number)
{
int Swap,temp;
temp=number;
while(temp)
{
Swap=Swap*10+temp%10;
temp/=10;
}
return Swap;
}
int main()
{
int swap,number=146;
swap=SwapNumber(number);
cout<<swap<<endl;
return 0;
}
判断一个数是否为回文数就很简单了,只需要对反转后的数字作个对比判断即可,完善C++代码定义一个回文数判断函数,代码如下:
#include<iostream>
using namespace std;
bool SwapNumber(int number)
{
int Swap,temp;
bool isHuiwenshu;
temp=number;
while(temp)
{
Swap=Swap*10+temp%10;
temp/=10;
}
if(Swap==number)
{
isHuiwenshu=true;
}
else
{
isHuiwenshu=false;
}
return isHuiwenshu;
}
int main()
{
int number;
cin>>number;
if(SwapNumber(number))
{
cout<<"是回文数"<<endl;
}
else
{
cout<<"不是回文数"<<endl;
}
return 0;
}
以上就是通过C++定义回文数判断函数来判断输入的某个数是不是回文数的完整实现过程了。
最后更新时间:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。