c语水仙花数for语句循环嵌套

#include"stdio.h"
main()
{int a,b,c,x,s=0,n;
scanf("%d",&n);
for(s=100;s<=n;s++)
{x=s;
a=s/100;
s=s%100;
b=s/10;
s=s%10;
c=s;
if(aaa+bbb+ccc==x)
printf("%d\n",x);
}
}
为什么这样打出来全是11111111111…麻烦解释一下

因为你在循环代码里修改了循环变量s啊
你应该在循环中将s全部改为x,将x改为s

#include"stdio.h"
int main()
{int a,b,c,x,s=0,n;
scanf("%d",&n);
for(s=100;s<=n;s++)
{x=s;
a=x/100;
x=x%100;
b=x/10;
x=x%10;
c=x;
if(a*a*a+b*b*b+c*c*c==s)
    printf("%d\n",s);
}
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

修改如下,供参考:

#include"stdio.h"
main()
{
    int a,b,c,x,s=0,n;
    scanf("%d",&n);
    for(s=100;s<=n;s++)
    {
        x=s;
        a=s/100;
                //s=s%100; 修改
        b=s/10%10; //b=s/10; 修改
                //s=s%10;  修改
        c=s%10; //c = s; 修改
        if(a*a*a+b*b*b+c*c*c == x)
           printf("%d\n",x);
    }
}

for循环里的s不要动,s的值是循环结束的标志,另外赋一个值去做运算,你这样写循环到最后s一直是0到10,没意义,没有遍历100到n,for循环写成下面这样就对了
x=s;
a=x/100;
x=x%100;
b=x/10;
x=x%10;
c=x;
if(aaa+bbb+ccc==s)
printf("%d\n",s);