自学内容网 自学内容网

进阶版水仙花数水是指一个n位数,各个位数字的n次方之和等于该数字本身

两种方法:

第一种,是输入一个数值,判断是否为水仙花数

//打印水仙花数
//水仙花数是指一个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;
}

输出结果:


原文地址:https://blog.csdn.net/2301_78189441/article/details/142397708

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!