首先我们要搞清楚水仙花数是什么,水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个数,它的每个位上的数字的 n次幂之和等于它本身(例如:153是一个三位数,n==3,13 + 53+ 33 = 153)。

头文件需要的是:

#pragma warning(disable:4996)
#include<stdio.h>
#include<math.h>//po的头文件

首先要算出这是几位数,,我们用自定义函数jisuan来写,下面是代码实现:

int jisuan(int n)
{
int w = 0;
if (n == 0)
{
w++;
}
while (n >= 1)
{
n = n / 10;
w++;
}
return w;
}

返回值是w。

然后下面就是main函数了:

int main()
{
int w = 0;//计算几位数
int i = 0;
int q = 0;
int z = 0;
int c = 0;
int f = 0;
for (i = 0; i <= 100000; i++)
{
w = jisuan(i);//自定义函数求i是几位数
f = i;//f顶替i进行计算,因为i要++
c = 0;//因为每次计算c都要从0开始算
for (q = 0; q < w; q++)//计算每一位的w次方之和
{
z = f % 10;//提取出每一位数字
f = f / 10;
c = c + pow(z, w);//pow是计算次方的,这里是计算z的w次方
}
if (i == c)
{
printf("%d ", i);
}
}
return 0;
}