C++求“水仙花数”问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 21:41:29
//输出所有的“水仙花数”,即一个三位数,其各位数字的立方之和等于该数本身,比如153=1*1*1+5*5*5+3*3*3,我的程序如下:

int main()
{
int n;
for(n=100;n<=999;n++)
{
int b,s,g;
b=int(n/100); //百位数
s=int((n%100)/10); //十位数
g=int((n%100)%10); //个位数
int v;
v=b*b*b+s*s*s+g*g*g; //立方和
if(n=v) cout<<n<<endl;

}
return 0;
}

不知道为什么输出结果不准确(包含个位数和4位数),希望高手帮我看看,谢谢!

b=int(n/100); //百位数
s=int((n%100)/10); //十位数
g=int((n%100)%10); //个位数
int v;
v=b*b*b+s*s*s+g*g*g; //立方和
if(n=v)

上面这个程序段有两个错误
(1)b=n/100即可,不用强制转换,两个数都是整型,/是整除
(2)n==v,不能用n=v,一个等号是赋值,两个等号才是逻辑判断~

v=b*b*b+s*s*s+g*g*g; //立方和
if(n=v) cout<<n<<endl;

这里修改为:
while(n==(b*b*b+s*s*s+g*g*g))
do{
cout<<n<<endl;
}