为什么一直都是输出No?(感觉没毛病)


#include<stdio.h>
#include<math.h>
int IsSquare( int n );
int huiwen(int j);
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n!=0)
    {
        if(huiwen(n)==1&&IsSquare(n)==1)
        printf("YES\n");
        else
        printf("NO\n");
    }
}
int IsSquare( int n )
{
    double j;
    j=sqrt(n);
    if(j*j==n)
    return 1;
    else
    return 0; 
}
int huiwen(int j)
{
    int a,p=0;
    while(j!=0)
    {
        a=j%10;
        j=j/10;
        p=p*10+a;
    }
    if(p==j)
    return 1;
    else
    return 0;
}



img


int huiwen(int j)
{
    int a, p = 0;
    int temp = j;
    while (temp != 0)
    {
        a = temp % 10;
        temp = temp / 10;
        p = p * 10 + a;
    }
    if (p == j)
        return 1;
    else
        return 0;
}

修改如下,供参考:

#include<stdio.h>
#include<math.h>
int IsSquare( int n );
int huiwen(int j);
int main()
{
    int n;
    while(scanf("%d",&n)==1 && n!=0) //修改
    {
        if(huiwen(n)==1&&IsSquare(n)==1)
        printf("YES\n");
        else
        printf("NO\n");
    }
}
int IsSquare( int n )
{
    double j;
    j=sqrt(n);
    if(j*j==n)
       return 1;
    else
       return 0;
}
int huiwen(int j)
{
    int a=0,p=j;  //修改
    while(j!=0)
    {
        a=a*10+j%10;  //修改
        j=j/10;
    }
    if(p==a) //修改
        return 1;
    else
        return 0;
}