C语言求水仙花数,大家帮帮忙看看我哪里错了

#include <stdio.h>
int main()
{
    int a,b,c,n,i,j,k,d,e=1,w=1,q=1;
    scanf("%d",&n);
    d=n;
    for(a=1;d>1;a*=10){
    d--;
    }
    b=a*10;
    for(c=a;c<b;c++){
    i=c/100;
    j=c/10%10;
    k=c%10;
    while(n>0){
    e=e*i;
    w=w*j;
    q=q*k;
    n--;
    }
    if(c==e+q+w)
{
        printf("%d\n",c);}
    }
    return 0;
}

你的思路有点小问题,给你参考下

#include <stdio.h>

int main()

{

int start, end, i = 0, a, b, c, size = 0;

while (scanf("%d %d", &start, &end) == 2)

{

for (i = start; i <= end; i++)

{

a = i / 100;

b = i / 10 % 10;

c = i % 10;

//total = pow(c, 3) + pow(a, 3) + pow(b, 3);

if ((a*a*a + b*b*b + c*c*c) == i)  //满足水仙花条件

{

if (size == 0)   //size=0输出第一个水仙花数 

{

printf("%d", i);

}

else     //size++输出第二。。第n个水仙花数

{

printf(" %d", i);

}

size++;   //个数++;

}

}

if (size == 0)   //范围内个数为0,则说明没有满足条件的

{

printf("no");

}

printf("\n");

}

return 0;

}

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

前面的这段代码

if ((a*a*a + b*b*b + c*c*c) == i)  //满足水仙花条件

{

if (size == 0)   //size=0输出第一个水仙花数 

{

printf("%d", i);

}

else     //size++输出第二。。第n个水仙花数

{

printf(" %d", i);

}

size++;   //个数++;

}

可以更改为一下代码:

if ((a*a*a + b*b*b + c*c*c) == i)  //满足水仙花条件
        
 {
       printf("%d ", i);
       size++;   //个数++;
            
 }