int huiwen(long n)
{
int a,sum=0;
while(n>0)
{
a=n%10;
sum=sum*10+a;
n=n/10;}
if(sum==n)
return 1;
else
return 0;
}
int main(void)
{
long i;
for(i=1;i<=300;i++){
if(huiwen(i)&&huiwen(i*i))
printf("%ld\n",i);
}
return 0;
}
望采纳,代码的问题在于,在函数huiwen()中,比较的数是sum而不是原来的n,应该是这样:
int huiwen(long n)
{
int a,sum=0;
while(n>0)
{
a=n%10;
sum=sum*10+a;
n=n/10;
}
if(sum==n) // 这里应该比较sum和原来的n
return 1;
else
return 0;
}
n都被你赋值成0了,它还能等于sum吗
直接return sum就可以,在主函数里判断是否等于i,修改的代码如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int huiwen(long n)
{
long sum=0;
while(n>0)
{
sum=sum*10+n%10;
n=n/10;
}
return sum;
}
int main(void)
{
long i;
for(i=1;i<=300;i++){
if(i==huiwen(i))
printf("%d ",i);
}
return 0;
}