发布时间:2019-08-01 06:33:49
#include<iostream>
using namespace std;
int main()
{
long long int a=99,b,x,y,z;
while(a<1000)
{
a+1;
while(1)
{
x=a%100;
y=a%10-10*x;
z=a-100*x-10*y;
if(x*x*x+y*y*y+z*z*z==a)
cout<<a;
else
{
b=a;
break;
}
}
}
return 0;
}
程序是求1000以内的水仙花数,作了较多的改错,改后的程序如下:
#include<iostream>using namespace std;int main(){int a=99,b,x,y,z;while(a<999){a++;while(1){z=a%10;y=a/10%10;x=a/100;if(x*x*x+y*y*y+z*z*z==a)cout << a<<endl;//else{b=a;}//break; }}return 0;}
程序的运行结果如下:
这个你可以直接检查啊
中间那个while(1)的循环没法跳出来啊,一直运行,没法停止。
看上去你是想求3位的水仙花数的,但算法完全不对
1. a+1;不能改变a的,所以大循环是死循环
2.求每一位的,x,y,z根本不对,对a=123
x=23 ,y=-227,z= 93
3.你的内循环没以有任何意义 ,因为不是水仙花,直接退出了
4.求个3位水仙花,根本不用long long
以下是改好的及结果