return返回值问题

int pdhw(int n)
{
    int s[10];
    int i = 0;
    int j = 0;
    int c= 0;
    int sum = 0;
    while(n){
        s[i]=n%10;
        i++;
        n/=10;
    }
    for(j=0;j<i;j++){
        sum += s[c]*pow(10,j);
        c++;
    }
        if(sum==n){
        return 1;
    }
    else{
        return 0;
    }
}
int main(){
    int  n ;
    scanf("%d",&n);
    if(pdhw(n)==1){
    printf("%d\t",n);
    }
else{
    printf("NO");
    }
} 

为什么明明是回文却输出NO

因为在pdhw函数中,while循环已经把n的值改变了,while循环结束后,n=0,已经不是原来的值了,所以需要在while处理前,用一个临时变量来记录n的值。然后if(sum==n)改成跟这个变量的比较。代码修改如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <math.h>
int pdhw(int n)
{
    int s[10];
    int tmp = n;  //记录n的值
    int i = 0;
    int j = 0;
    int c= 0;
    int sum = 0;
    while(n){
        s[i]=n%10;
        i++;
        n/=10;
    }
    for(j=0;j<i;j++){
        sum += s[c]*pow(10.0,j);
        c++;
    }
    if(sum==tmp){  //修改2,跟tmp进行比较
        return 1;
    }
    else{
        return 0;
    }
}
int main(){
    int  n ;
    scanf("%d",&n);
    if(pdhw(n)==1){
        printf("%d\t",n);
    }
    else{
        printf("NO");
    }
} 

if(sum==n){
return 1;
}
else{
return 0;
}
此时n被除到0了。所以return 0。
前面while里用个变量代替n,n不能变

14行也要改一下sum += s[c]*pow(10,i-j-1);