引用:
原帖由 ai357299256 于 2008-4-29 16:13 发表 
哈哈,for 语句。 教材上还有怎么一道题 ,和这个差不多。编程找出一亿以内的水仙花数。所谓水仙花数就是各位数字的立方和等于该数本身。如 153=1*1*1+5*5*+3*3*3,有兴趣的话自己可以做下。 ...
#include<iostream>
#include<math.h>
using namespace std;
//i=153,n=3 ;j=1,k=3;j=2 k=8
int main()
{
int i,j,k,n; //i是用来循环,n用来判断几位数
for (i=1;i<=100000000;i++) //最多9位数
{
n=0;
if ((i/10)<1) //用switch,case做可以写的简单些
n=1;
else if ((i/100)<1)
n=2;
else if ((i/1000)<1)
n=3;
else if ((i/10000)<1)
n=4;
else if ((i/100000)<1)
n=5;
else if ((i/1000000)<1)
n=6;
else if ((i/10000000)<1)
n=7;
else if ((i/100000000)<1)
n=8;
else if ((i/1000000000)<1)
n=9;
k=0;
for(j=1;j<=n;j++)
k=k+pow((int(i/(pow(10,(j-1)))))%10,3); //(int{ i初以(10的j-1次方)}再%10)的立方
if (k==i) cout<<i<<endl;
}
return 0;
}
//得到结果1,153,370,371,407