C语言之水仙花数(保姆级教程)

C语言之水仙花数

前提

题目:求出0~100000之间的所有“水仙花数”并输出

  要想解决这个问题,首先要知道什么”水仙花数“
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:1 ^ 3 + 5 ^ 3+ 3 ^ 3 = 153,则153是一个“水仙花数”

思路

1 步骤一

  要想求1~10000之间的“水仙花数”,首先我们得知道它是几位数的,才能计算它的n次方,我们先假设输入的数是一个五位数,然后分解它的每位数
代码如下:

#include 

int main()
{
	int n = 0;
	scanf("%d", &n);
	int a = n / 10000;                //分解万位数
	int b = (n % 10000) / 1000;       //分解千位数
	int c = (n % 1000) / 100;         //分解百位数
	int d = (n % 100) / 10;           //分解十位数
	int e = n % 10;                   //分解个位数
	return 0;
}

2 步骤二

  其次我们要判断这个数是1位数还是n位数,然后再根据不同的位数计算他们的n次方,然后判断n次方的和是否等于它本身
代码如下:

int main()
{
	int n = 0;
	for (n = 0; n <= 99999; n++)
	{
		int a = n / 10000;                //分解万位数
		int b = (n % 10000) / 1000;       //分解千位数
		int c = (n % 1000) / 100;         //分解百位数
		int d = (n % 100) / 10;           //分解十位数
		int e = n % 10;                   //分解个位数
		if (n >= 0 && n <= 9)             //当n为一位数时,都是水仙花数
		{
			printf("%d ", n);
		}
		else if (n >= 10 && n <= 99)     //当n为两位数时,判断个位 十位 的 二次方方和
		{
			if (e * e + d * d == n)
			{
				printf("%d ", n);
			}
		}
		else if (n >= 100 && n <= 999)   //当n为三位数时,判断个位 十位 百位 的 三次方方和
		{
			if (e * e * e + d * d * d + c * c * c == n)
			{
				printf("%d ", n);
			}
		}
		else if (n >= 1000 && n <= 9999)  //当n为四位数时,判断个位 十位 百位 千位 的四次方方和
		{
			if (e * e * e * e + d * d * d * d + c * c * c * c + b * b * b * b == n)
			{
				printf("%d ", n);
			}
		}
		else  //当n为五位数时,判断个位 十位 百位 千位 万位 的四次方方和
		{
			if (e * e * e * e * e + d * d * d * d * d + c * c * c * c * c + b * b * b * b * b + a * a * a * a * a == n)
			{
				printf("%d ", n);
			}
		}
	}
	
	return 0;
}

你可能感兴趣的:(C语言每日一题,c语言,开发语言,学习,笔记,经验分享,学习方法)