C语言 判断一个数是否为水仙花数
代码如下,输入55,算出来是48,77就是正常的98,输入153、154、155算出来都是217,无法正常计算请问这是怎么回事?
#include <stdio.h>
#include <math.h>
int function(int n);
int main()
{
int n;
scanf("%d", &n);
printf("%d", function(n));
}
int function(int n)
{
int sum, k, p, q, j, m, l;
int s = n;
for(p=1, q=0; p<n; p*=10)
{
if (n/p>0)
q++;
}
for (j=pow(10, q-1), sum=0; j>=1; j/=10)
{
l=n/j;
m=pow(l, q);
sum+=m;
n=n%j;
}
if(sum == s)
printf("yes");
else
return sum;
}