关于#c语言#的问题:输出a到b之间的水仙花数,如果没有则输出“no”、刚刚接触C

输出a到b之间的水仙花数,如果没有则输出“no”、
刚刚接触C,有人能帮忙看看问题在哪里吗

#include 

main()
{
    int a,b,c,d,i,flag1=1,flag2=0,e;
    while(scanf("%d %d",&a,&b)!=EOF)
        for(i=a;i<=b;i++)
        {
            e=i;
            c=e/100;
            d=e/10%10;
            e=e%10;
            if(i==c*c*c+d*d*d+e*e*e)
                {
                    printf("%d ",i);
                    flag1=0,flag2=1;
                    }

                  
        }
            if(flag1==1) 
                 {
                    printf("no"); 
                  }
        
}
    



题主代码,改动处见注释,供参考:

#include <stdio.h>
main()
{
    int a,b,c,d,i,flag1=1,flag2=0,e;
    while(scanf("%d %d",&a,&b)!=EOF)
    {//修改
        flag2=0;  //修改
        for(i=a;i<=b;i++)
        {
            e=i;
            c=e/100;
            d=e/10%10;
            e=e%10;
            if(i==c*c*c+d*d*d+e*e*e)
            {
                printf("%d ",i);
                flag1=0,flag2=1;
            }
        }
        if(flag2==0)   // if(flag1==1)修改
        {
            printf("no");
        }
        printf("\n");
    }//修改
    return 0;
}

参考此代码试试

#include<stdio.h>
#include<math.h>
int main()
{
    int m,n,i;            
    int sum = 0;
    int fun(int n);      //声明求位数的函数
    scanf("%d",&n);
    m = n;               //将输入数赋给m,因为后续求各位数时n已经变了,
                             无法用n与sum比较
    while(n > 0)               //从个位数开始求各位数    
    {
        i = n % 10;         
        sum += pow(i,fun(m));            //各位数的n次方和,pow(a,b)是求a的b次方,要加  <math.h>头文件
        n /= 10;                        
    }    
    if(sum == m)                     //与输入数比对,判断是否为水仙花数
        printf("是水仙花数\n");
    else
        printf("不是水仙花数\n");
    return 0;
    
 } 
 
int fun(int n)                   //求位数的典型函数
{
    int j = 0;
    while(n > 0)
    {
        n /= 10;
        j++; 
    }
    return j;
}