回文数字

来源:互联网 发布:excel数据下拉递增 编辑:程序博客网 时间:2024/06/02 23:41

/*回文数字
  题目:一个整数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;
    }

 

 

原创粉丝点击