不多说,直接上代码,解释都在代码注释里,不懂请留言。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int i;
for (i = 0; i <= 10000; i++)//求0到10000的水仙花数,此处自己可以设置想求的范围
{
int count = 1;//水仙花数至少是一位
int tmp = i;//tmp表示i的位数
int sum = 0;//表示水仙花数
while (tmp / 10)//判断位数
{
count++;
tmp = tmp / 10;
}
tmp = i; //while循环后tmp值已改变,tmp需要重新被赋值
//2.求和
while (tmp)//求出水仙花数并赋值给sum
{
sum += pow(tmp % 10, count);//pow( x, y)函数是求x的y次方
tmp = tmp / 10;
}
if (i == sum)//输出水仙花数
{
printf("%d ", i);
}
}
return 0;
}