代码有什么问题吗,输出结果多了几个。


#include<stdio.h>
#include<math.h>                                                   //   水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。        
                                                                                   //例如:153=1 3+5 3+3 3
                                                                              //本题要求编写程序,计算所有N位水仙花数。

                                                                            //输入格式:
                                                                             // 输入在一行中给出一个正整数N(3≤N≤7)。

                                                                            //输出格式:
                                                                        //按递增顺序输出所有N位水仙花数,每个数字占一行。

                                                                       //输入样例:3
                                                                      //输出样例:
                                                                      // 153
                                                                       //370
                                                                      //  371
                                                                       // 407


int main()
{
    int N,i,x,y,sum=0,count=0;
    //scanf("%d",&N);
    N=3;
    for(i=pow(10,N-1);i<pow(10,N);)
    {
        sum=0,y=i;
        while(i>0)
        {
            x=i%10;
            i=i/10;
            sum=sum+pow(x,N);
            if(y==sum)
            {
                printf("%d\n",sum);
            }
        }
        count++;
        i=pow(10,N-1)+count;
    }
    return 0;
}

#include <stdio.h>
#include <math.h> //   水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
                  //例如:153=1 3+5 3+3 3
                  //本题要求编写程序,计算所有N位水仙花数。

//输入格式:
// 输入在一行中给出一个正整数N(3≤N≤7)。

//输出格式:
//按递增顺序输出所有N位水仙花数,每个数字占一行。

//输入样例:3
//输出样例:
// 153
//370
//  371
// 407

int main()
{
    int N, i, x, y, sum = 0;
    scanf("%d", &N);
    int m = pow(10, N - 1);
    int n = m * 10;
    for (i = m; i < n; i++)
    {
        sum = 0;
        y = i;
        while (y > 0)
        {
            x = y % 10;
            y = y / 10;
            sum = sum + pow(x, N);
        }
        if (i == sum)
            printf("%d\n", sum);
    }
    return 0;
}