两种方法:
第一种,是输入一个数值,判断是否为水仙花数
//打印水仙花数
//水仙花数是指一个n位数,各个位数字的n次方之和等于该数字本身
//如:153=1^3+5^3+3^3
//
//分析:
//153/10=15
//15/10=1
//1/10=0
#include<stdio.h>
#include<math.h>
int main()
{
int a = 0;
int b[10] = { 0 };
printf("输入一个整数:");
scanf("%d",&a);
int n = 0;
int c = a;
int i = 0;
//判断这个整数,有几位数
while (a)
{
//将a的每一位分别存入b[10]
b[i++] = a % 10;
a = a / 10;//15 1 0
n++;//1 2 3
}
for (i = 0; i < n; i++)
{
printf("%d ",b[i]);
}
printf("\n");
int d = 0;
for (i = 0; i < n; i++)
{
d = pow(b[i] ,n) + d;
printf("%d ", d);
}
printf("\n");
if (d == c)
printf("是水仙花数\n");
else
printf("不是水仙花数\n");
return 0;
}
输出的结果:
第二种,是给定一个范围,输出水仙花数
#include<stdio.h>
#include<math.h>
int main()
{
int g = 0;
for (g = 0; g < 100000; g++)
{
int a = g;
int b[10] = { 0 };
int n = 0;
int c = a;
int i = 0;
//判断这个整数,有几位数
while (a)
{
//将a的每一位分别存入b[10]
b[i++] = a % 10;
a = a / 10;//15 1 0
n++;//1 2 3
}
int d = 0;
for (i = 0; i < n; i++)
{
d = pow(b[i] ,n) + d;
}
if (d == c)
printf("%8d\n",d);
}
return 0;
}
输出结果: