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);