有关三重回文数问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 19:48:15
我编了一个判断11--999三重回文数的程序,但是不知道为什么答案多了121 202两个立方不是回文数 以下是我编的程序 希望帮我找下问题 谢谢了
#include <stdio.h>
#include <string.h>
int huiwen(int x);
void main(){
int m;
for (m=11;m<1000;m++){
if(huiwen (m)&&huiwen(m*m)&&huiwen(m*m*m)){
printf ("%d ",m);
putchar(10);
}
}
}

int huiwen (int x){
int a[100];
int temp;
int i;
int length=0;
temp=x;
while(x!=0){
x/=10;
length++;
}
x=temp;
for (i=0;i<length;i++){
a[i]=x%10;
x/=10;
}
for (i=0;i<length/2;i++){
if(a[i]!=a[length-1-i]){
return 0;
}
return 1;
}

}

************* 送个和你一样功能的程序,也是三重回文数***************
注意:下面这个程序能从 0 开始验证一个整数是否是三重回文数!!!
#include <stdio.h>
int main()
{
bool huiwen(long n);
long m;
for (m=0;m<1000;m++)
if(huiwen(m)&&huiwen(m*m)&&huiwen(m*m*m))
printf ("%d\n",m);
return 0;
}

bool huiwen(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];
if(strcmp(a_array,b_array)==0)
********************************************