1. 问题分析
- 水仙花数(又称为阿姆斯特朗数):各数位的3次方之和等于其本身
- 示例: 153 = 1^3+5^3+3^3;
- 拓展:四位的四叶玫瑰数,五位的五角星数,六位的六合数,七位的北斗七星数,八位的八仙数……各种花里胡哨的名字,瞎扯犊子,哈哈哈。最根本的定义就是,各数位的总位数次方之和等于数字本身就行。
2. 代码
2.1 三位数的水仙花数
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
#include <math.h>
int Daffodil_num(int n)
{
if (n > 9)
return Daffodil_num(n / 10) + pow(n % 10, 3);
else
return pow(n, 3);
}
int main()
{
int i;
for (i = 100; i < 1000; i++)
{
if (Daffodil_num(i) == i)
printf("%d ", i);
}
return 0;
}
2.2 拓展代码(通用)
本代码将实现的功能:用户输入k, 代码就会输出k位数的阿姆斯特朗数(也就是水仙花数).
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
#include <math.h>
int Daffodil_num(int n, int k)
{
if (n > 9)
return Daffodil_num(n / 10, k) + pow(n % 10, k);
else
return pow(n, k);
}
int main()
{
int i, j, k, n;
printf("你想输出几位数的水仙花数>:");
scanf("%d", &k);
i = pow(10, k - 1);
j = pow(10, k);
for (n = i; n < j; n++)
{
int daffodil = Daffodil_num(n, k);
if (daffodil == n)
printf("%d ", daffodil);
}
return 0;
}
3. 总结
看了朋友打印的水仙花数,觉得很有意思,所以自己也搞一波,哈哈哈。互相学习,共同进步,加油鸭 这平台还没有@粉丝或者好友功能,要是啥时候站主增加这个功能就好了,啊哈哈(站主小心被@爆)