水仙花数 是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) 算法如下: #include <iostream> #include <iomanip> #include <string> #include <cmath> using namespace std; int main() { int g_iMax = 0; cout << "pls put the max number:"; cin >> g_iMax; try { if(g_iMax < 0) throw g_iMax; for(int l_iLoop = 0; l_iLoop <= g_iMax; l_iLoop++) { int l_iTmp1 = l_iLoop; int l_iTmp2 = l_iLoop; int l_iTtl = 0; int l_iDgt = 0; do { ++l_iDgt;//此数的位数 l_iTmp1 = l_iTmp1/10;//每除以10少一位 }while(l_iTmp1); for(int i = 0; i != l_iDgt; ++i) { l_iTtl += int(pow(double(l_iTmp2%10),double(l_iDgt)));//调用幂函数 l_iTmp2 = l_iTmp2/10; } if(l_iLoop == l_iTtl) cout << l_iTtl << endl; } } catch(int n) { cerr << "ERROR,input number" << n << "less than zero!" << endl; } return 0; }