c语言中求水仙花数,可以帮我纠正一下吗?

请问这样求水仙花数有什么错误的地方吗?为啥输出的结果不对?

img

你应该while循环结束后再判断是否是水仙花数,不能在循环中判断啊

do
{
     sum += pow(t%10,n);
     t  /= 10;
}while(t>0);
if(sum==i)
    printf("%d\n",i);

你应该while循环结束后再判断是否是水仙花数。
求水仙花数其实很简单,循环嵌套加if判断就可以了,不需要你这么麻烦:

#include <stdio.h> 
#include <stdlib.h>

int main() 
{ 
    int i, j, k, n; 
    printf("'water flower'number is:"); 
    for(n=100;n<1000;n++) 
    { 
        i=n/100; 
        j=n/10%10;
        k=n%10;/*分解出个位*/ 
        if(n==i*i*i+j*j*j+k*k*k) 
        { 
            printf("%-5d",n); 
        } 
    } 
    printf("\n");
    return 0;
}

如果对你有帮助,还请帮忙点个采纳,谢谢!

sum==i要放到do,while外面来判断呀
没循环完你判断个什么劲
如果一个数abc,a^3+b^3==abc,c还没有加上去,就已经满足等式了,那你也认为它是个水仙花数