//如3,121,313,34443,12121都是回文数
#include <iostream>
using namespace std;
int judge(int m)
{//首先将输入的整数m按每位进行存储
//假设m=12121,则定义数组a[5]={1,2,1,2,1}
int temp,a[10];
int i,t;//i存储为m的位数,t为每位上的具体数字
temp=m;
while(temp!=0)
{
t=temp%10;
a[i]=t;
temp=temp/10;
i++;
}
int *p=a;
int *q=a+i-1;
while(p<q)
{
if(*p!=*q)
break;
else
{
p++;
q--;
}
}
if(p<q)
{
cout<<"不是"<<endl;
}
else
{
cout<<"是"<<endl;
}
cout<<m<<endl;
}
int main()
{
int m;
cout<<"请输入整数m";
cin>>m;
Judge(m);
system("pause");
return 0;
}
总结:1)如何将整数m的每位存储在数组中
2)设置两个指针,一个指向数组首元素,另一个指向数组有效长度的末位(注意:并不是数组的末位)
3)首位指针逐渐递增,末位指针逐渐递减,直到首位不小于末位地址。
发散:如果是字符串,如何判断?
如果是字符串abcdefbdcba,如何返回回文字符串最大长度以及回文字符串"abcd"?