#打印三位数的水仙花数及其拓展#

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. 总结

看了朋友打印的水仙花数,觉得很有意思,所以自己也搞一波,哈哈哈。互相学习,共同进步,加油鸭 smile 这平台还没有@粉丝或者好友功能,要是啥时候站主增加这个功能就好了,啊哈哈(站主小心被@爆) joy

visual-c++·c++·c
118 views
Comments
登录后评论
Sign In
·
#pragma warning(disable:6031)```

这是什么啊,忽略了警告?