请问这段水仙花数程序有什么问题

#include
void main()
{
int a, b, d,e=0;
for (a = 1;;a++)
{
do
{
b = a % 10;
d = a / 10;
e = e + b*b*b;
a = d;
} while (d != 0);
if (a==e)
printf(" %d\n",e);
}
}
大神求解答
诊断程序在VS2013中没有警告或错误,但是执行时弹出框只是光标在闪烁,没有其他任何数字或字母
请问这段程序有什么问题

do..while里面有问题啊。e得到的不是三个位数的立方。

a=100后d=100/10=0的,所以下一次又从do{}开始运行了,第二次你的a=0;而d=0/10=0;所以就会永远执行do{}while()循环了。

如果回答对你有帮助,请采纳

#include
void main()
{
int a, b, d,e=0;
for (a = 100;a<1000;a++)
{
do
{
b = a % 10;
d = a / 10;
e = e + b*b*b;
a = d;
} while (d = 0); //这里应该是“==”
if (a==e)
printf(" %d\n",e);
}
}

很明显的错误啊,判断符号==成了赋值符号=

#include
void main()
{
int a, b, d, e = 0;
for (a = 100; ; a++)
{
do
{
b = a % 10;
d = a / 10;
e = e + b*b*b;
a = d;
} while (d != 0);
if (a == e)
printf(" %d\n", e);
诊断程序在VS2013中没有警告或错误,但是执行时弹出框只是光标在闪烁,没有其他任何数字或字母

参考这个里面的代码实现:http://jingyan.baidu.com/article/f71d60377cd8601ab641d1e8.html

 #include<stdio.h>
int main()
{
    int a, b,e=0;
    for (a = 100;a<1000;a++)
    {b=a;
         e = 0;
        while (b > 0)
        {
                    e += (b % 10) * (b % 10) * (b % 10);
                    b /= 10;
        }
        if (a==e)
            printf(" %d\n",e);
    }
}

http://codepad.org/SHGTLN3T

在线运行通过,结果
153
370
371
407

水仙花代码

#include
#include
void main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<10000;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");
}