回文数C++

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:42:43
#include <iostream>
using namespace std;
bool lsame(long n);
void main()
{
long i,n,k=0;
long p[100];
cin>>n;
for(i=1;i<=n;i++)
{
if(lsame(i))
{
p[k]=i;
k++;
}
}
cout<<p[n]<<endl;

}
bool lsame(long n)
{
long lold,lnew=0;
lold=n;
while(n)
{
lnew=lnew*10+n%10;
n/=10;
}
if(lold==lnew)
return true;
else return false;
}
我想让它输入任意一个数N,然后会输出第N个回文数的值/

上面的 不对呀?????

*************************** 回文数 *****************************

#include <iostream>
#include "stdio.h"
using namespace std;
bool lsame(long n);
int main()
{
long i,n,k=0;
cin>>n;
for(i=1;;i++)//想要得到从某个数以后的回文数,改i为你想要的值即可
if(lsame(i)&&++k==n) { cout<<i<<endl;break;}//想要全部输出,“==”变为“<=”
return 0;
}
bool lsame(long n)
{
/*********************************************/
long lold=n,lnew=0;
while(n/10!=0 || n%10!=0)
{
lnew=lnew*10+n%10;
n=n/10;
}
if(lold==lnew)
/*****************************************/
return true;
return false;
}

上面的两条星号线的代码可换为下面的代码:(看你自己喜欢)

char a_array[12]={0},b_array[12]={0};
int i,length=0;
while(n/10!=0 || n%10!=0)
{
a_array[length++]='0'+n%10;
n=n/10;
}
for(i=0;i<length;i++)
b_array[i]=a_array[length-i-1];