大一新生我这到底哪里错了,一直重复零。

#include
int main()

{
int n;
scanf("%d", &n);
int first = 1;
int b = 1;
while (b < n)
{
first *= 10;
b++;
}
b = first;
while (b < first * 10)
{
int a = b;
#include
int sum = 0;
while (b > 0)
{
int j = b % 10;
b /= 10;
int q = 1;
int p = 0;
while (p < n)
{
q *= j;
p++;
}
sum += q;
}
if (sum == a)
{
printf("%d", b);
}
b++;
}
return 0;

这个题是水仙花数

修改处见注释,供参考:

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    int first = 1;
    int b = 1;
    while (b < n)
    {
        first *= 10;
        b++;
    }
    b = first;
    while (b < first * 10)
    {
        int a = b;
        int sum = 0;
        while (a > 0) //(b > 0)
        {
            int j = a % 10; //b % 10;
            a /= 10;  //b /= 10;
            int q = 1;
            int p = 0;
            while (p < n)
            {
                q *= j;
                p++;
            }
            sum += q;
        }
        if (sum == b)
        {
            printf("%d ", b);
        }
        b++;
    }
    return 0;
}