首先关于这个问题,第一步要做的是先明白什么样的数为水仙花数?
“水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。如:1^3 + 5^3+ 3^3 = 153。
回到问题,要实现这样一个问题,我们要将一个三位数取三次分别定义为a,b,c。然后再定义一个数,只需要这个最后定义的数是a*a*a+b*b*b+c*c*c的和就可以得知其是不是一个水仙花数。
其代码如下:
(代码只是采用了无参形式下求水仙花数分别为)
#include <stdio.h>
void s()
{
int a,b,c,x;
printf("输出的数就是所有的水仙花数:\n");
for(x=100;x<1000;x++)
{
a=x%10;
b=x/10%10;
c=x/100;
if(x==a*a*a+b*b*b+c*c*c)
printf("%d ",x);
}
}
int main(){
s();
return 0;
}
其运行结果如图所示: