被用c语言的for循环解决输出水仙花数难住了

img


我这样为什么不行呢?求一个改错思路

你n不清零的啊,永远往上加
首先,你while循环之前,n要清零
其次,判断i==n应该在while循环结束之后,循环过程中判断会出岔子的,比如某些数的其中2位立方相加等于原数,你也把它当水仙花数了

你的错误点是%和/的区别:
/ 是除,如果是整数相除,只取整数部分,没有四舍五入之类的。
% 是取模,即取除法的余数。比如3%5那就是3除以5然后去余数,那就是商是0余3 啊,结果就是3

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

#include<stdio.h>
 
int main()
{
    int i,x,y,z;
    for(i=100;i<1000;i++)
    {
        x=i%10;
        y=i/10%10;
        z=i/100%10;
        
        if(i==(x*x*x+y*y*y+z*z*z))
        printf("%d\n",i);
        
    }
    return 0;
}