你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;
}