/*回文数字
题目:一个整数M,满足M,M^2,M^3都是回文数
算法:用sprintf函数把整数M转换为字符数组
定义一个指针指向该字符数组,然后比较前后字符
by adengou
2010.08.04
win7 dev c++ 5.0 ,vs 2010 通过
*/
#include <iostream>
#include <iomanip>
using namespace std;
int jodge_huiwen(long a);/*调用判断函数*/
int main(void)
{
long j;
int myFind=0;
cout<<" 指定范围的回文数字 "<<endl<<endl;
for(j=11;j<10000;j++)
{
if ( jodge_huiwen(j)==0&&jodge_huiwen(j*j)==0&&jodge_huiwen(j*j*j)==0)
{
cout<<"第"<<myFind+1<<"个回文数字是:" <<setw(10)<<j<<" "
<<"平方数:"<<setw(10)<<j*j<<" "
<<"立方数:"<<setw(10)<<j*j*j<<"\n";
myFind+=1;
}
}
myFind==0?cout<<"\n该范围不存在满足条件的回文数"<<endl:
cout<<"\n共有"<<myFind<<"个数满足条件"<<endl;
getchar();
return 0;
}
char num[9];//定义字符数组长度,注意其的生存期
int jodge_huiwen(long a)
{
/*判断回文数字函数*/
int huiwen_num=0;
int numLen;
char *pt;//定义指针
sprintf(num,"%d",a);//把整数a转化为字符数组
pt=num;
for(numLen=0;numLen<=strlen(num)/2;numLen++)//strlen(num)确定字符数组实际元素个数,比较一半就够了
{
if (*(pt+numLen)!=*(pt+strlen(num)-numLen-1))
{
huiwen_num=1;
break;
}
}
return huiwen_num;
}
本文介绍了一种算法,用于找出特定范围内那些其本身及其平方、立方均为回文数的整数,并展示了完整的C++实现代码。
573

被折叠的 条评论
为什么被折叠?



