回文数C++

2024-11-18 22:40:14
推荐回答(3个)
回答(1):

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

#include
#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<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;ib_array[i]=a_array[length-i-1];
if(strcmp(a_array,b_array)==0)

理论上,可以得到10万多个回文数,或者在long范围内更多的回文数,但运行的时间较长。

你自己运行看看吧!!!

回答(2):

回答:计VS付
回文数从0开始,1位数全是,2位的如11,22,33,44,55,66,77,88,99是.可以自己测试一下,我用vc++调试没有问题.不知道哪里不对,请指明.
#include
using namespace std;
bool lsame(long n);
void main()
{
long i=0,n,k=0;
long p[100];
cin>>n;

while(i!=n)
{
if(lsame(k))
{
p[i]=k;
i++;
}
k++;
}
cout<
}
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;
}

回答(3):

上面的 不对呀?????