水仙花数问题,请问以下代码哪里出错了
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
//n = 3;
int first = 0;
int num = 1;
while (first < n)
{
first++;
num *= 10;
}
//printf("num = %d\n",num);
int i = num/10;
while (i < num)
{
int d = 1;
int a = i;
int sum = 0;
do
{
d = a%10;
a /= 10;
int j = 1;
int p = d;
while (j < n)
{
p *= d;
j++;
sum += p;
}
} while (i > 0);
if (sum == i)
{
printf("%d\n",i);
}
i++;
}
}
```c
```