#include <iostream>
#include <iomanip>
using namespace std;
int Weishu(int n)//求整数n有多少位
{
int s,i=0;
do
{ s=n%10;
n=n/10;
i++;
}while(n);
return (i);
}
void Meiweishu(int n,int *a)//求的是整数n每位数,如n=456,a[0]=6,a[1]=5,a[2]=4
{
int i=0;
a[i]=0;
do
{ a[i]=n%10;
n=n/10;
i++;
}while(n);
}
void nihuan(int b,int *a,int *c)//是将a数组的元素,逆换下,如a[0]=6,a[1]=5,a[2]=4,换成,c[0]=4,c[1]=5 ,c[2]=6
{for(int k=0;k<b;k++)
{c[k]=a[b-k-1];
}
}
bool panduan(int b,int *c)//判断这个b位整数n,是不是回文数,是返回true,不是返回false。如45677,五位数,只需要判断4=4,5=7,6=6,是否成立都成立就是回文数循环次数=b/2=2,数数组是从0开始的
{
if(b==1)
return true;
for(int k=0;k<b/2;k++)
{
if(c[k]==c[b-k-1])
return true ;
else return false;
}
}
int main()
{
int *a,*c,i=0,n,b,s=0,m;
cout<<"请输入m,n:"<<endl;
cin>>m>>n;
for(i=m;i<=n;i++)
{
b=Weishu(i);
a=new int [b];
c=new int [b];
Meiweishu(i,a);
nihuan(b,a,c);
if(panduan(b,c)==true)
{
cout<<setw(4)<<i<<setw(4);//若n大于1000,请把setw(4)的4写大点,不然后面的数都是连在一起了
s++;
if(s%5==0)
cout<<endl;
}
}
cout<<endl;
return 0;
}//写的很菜,楼主参考,有好的方法说下,同讨论下,同学习同进步