判断Armstrong 数,就是n位数的各位数的n次方之和等于该数,我感觉我写的我没问题呀,为什么在DEVc++中输入153判断的结果不是

#include
#include
#include

int main()
{
int i=0,a=0,temp,num,n=0,sum=0;
printf("请输入:");
scanf("%d",&num);
temp=num;
while(temp!=0){
temp/=10;
n++;
}

while(num!=0){
a=num%10;
num/=10;
i=pow(a,n);
sum=sum+i;

}
if(num==sum){
printf("是");
}
else
printf("不是");
return 0;
}

在第二个while中你将num变成0了,之后num==sum自然就为false了