这段代码为什么没有输出

#include "stdio.h"
#include "math.h"
#include "time.h"

int main()
{

int n=100,a,b,c;

for(n=100; n<1000; n++)
{
a = n/100;
b = n/10%10;
c = n%10;

   if(n == a*a*a + b*b*b + c*c*c)
    printf("%d\n",n);
    else
        return 0;

}

return 0;

}

n == a*a*a + b*b*b + c*c*c 这个判断一直不通过

n == a*a*a + b*b*b + c*c*c 这个判断一直不通过

n == a*a*a + b*b*b + c*c*c 这个判断一直不通过

水仙花数啊,算法没错

你把else return 0去掉就行了

去掉2行。

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

for循环变量写错了,虽然我不懂c

 if(n == a*a*a + b*b*b + c*c*c)
    printf("%d\n",n);
    else
        return 0;

去掉这两句,

 else
        return 0;

只剩下if

那条else语句根本没必要,去掉else return 0;不然一开始没找到符合的数,就直接返回了

for循环的第一次,就会进行判断,这个时候 a=1, b=0, c=0, 等式不成立,就直接返回0了,这个时候并没有进行第二次循环
因而需要将判断的 else 语句去掉,让其循环到1000后再返回0

虽然大家都回答了,但我之前被禁言了。。。都没回答成功。
在第一次执行else return 0时你的程序就结束了。

在循环判断里面,你不要用return,除非你要退出这个函数了。继续下一步循环用continue,或者不写,跳出这个循环用break,用return就不再执行往下的代码了