HDU2010水仙花数

问题遇到的现象和发生背景 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999),对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;

如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。

问题相关代码,请勿粘贴截图
#include
#include
#include
#include
int main()
{
    int m,n,i,c=0;
    while(scanf("%d %d",&m,&n)!=EOF){
        int *a=(int *)malloc(sizeof(int)*(n-m+1));
        memset(a,0,sizeof(int)*(n-m+1));
        a[0]=m;
        for(i=1;i1;i++){
            a[i]=a[i-1]+1;
            if(a[i]==pow(a[i]%100,3)+pow(a[i]/10,3)+pow(a[i]%10/10,3)){
                printf("%d ",a[i]);
                c++;
            }
        }
        if(c=0)printf("no");
        else printf("\n");
    }
    return 0;
}

运行结果及报错内容 没有输出结果,Ctrl+Z后也没有输出并终止输入
我的解答思路和尝试过的方法
我想要达到的结果 第一次写水仙花数,请教一下哪里有问题

供参考:

#include<stdio.h>
int main()
{
    int m,n,i,c=0,t,s;
    while(scanf("%d %d",&m,&n) == 2 && m >= 100 && n <= 999 && m <= n){
        //int *a=(int *)malloc(sizeof(int)*(n-m+1));
        //memset(a,0,sizeof(int)*(n-m+1));
        //a[0]=m;
        for(i = m, c = 0;i <= n;i++){
            //a[i]=a[i-1]+1;
            //if(a[i]==pow(a[i]%100,3)+pow(a[i]/10,3)+pow(a[i]%10/10,3)){
            t = i; s = 0;
            while(t){
                s += (t%10)*(t%10)*(t%10);
                t /= 10;
            }
            if(s == i){
                printf(c++ == 0 ? "%d" : " %d",i);
                //c++;
            }
        }
        if(c==0) printf("no"); //if(c=0)
        printf("\n");
    }
    return 0;
}

应该是判断是否为水仙花数那里错了,即取每个数的各位数位上的数那里要稍微修改一下,修改如下:
参考链接:
什么是水仙花数?_百度知道



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
    int m,n,i,c=0;
    while(scanf("%d %d",&m,&n)!=EOF){
        int *a=(int *)malloc(sizeof(int)*(n-m+1));
        memset(a,0,sizeof(int)*(n-m+1));
        a[0]=m;
        for(i=1;i<n-m+1;i++){
            a[i]=a[i-1]+1;
             //https://zhidao.baidu.com/question/42360988.html
             //取百位 即a[i]/100 ,用这个数除以100即得到百位上的数,a[i]/10%10, 用这个除以10然后对其求余,即得到十位上的数,a[i]%10,用这个数对10求余,即得到各位上的数 
            if(a[i]==pow(a[i]/100,3)+pow(a[i]/10%10,3)+pow(a[i]%10,3)){
                printf("%d ",a[i]);
                c++;
            }
        }
        if(c=0)printf("no");
        else printf("\n");
    }
    return 0;
}
 

img

文章:HDU - 2010 水仙花数 中也许有你想要的答案,请看下吧