小言_互联网的博客

用C语言求出0~999999之间的所有“水仙花数”并输出。

254人阅读  评论(0)

求出0~999999之间的所有“水仙花数”并输出。

“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身。在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,
其各个数之N次方和等于该数。

今天这道题真是让我头发都掉光了,真是不堪回首,具体思路我就写在程序备注了供大家参考了,真的想到头秃了QAQ。

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 999999; i++)
	{
		int  count = 0, a = 0,sum=0;//在每个循环的开始需要初始化识别数字位数
		a = i;//防止i变化导致程序混乱
		while (a != 0)
		{
			a = a / 10;
			count++;
		}
		//确定i的位数
		a = i;//重新赋值,开始使用i
		while (a != 0)
		{
			sum += pow((double)(a%10), (double)count);//使用pow函数,用while函数求每一位数次方之和
			a = a / 10;//开始计算下一位数

		}
		if (sum == i)//判定结果
		{
			printf("%d\n", i);
		}


	}
	return 0;
}

这道题主要是要用好循环,以及每一位数的运算。有一点需要注意的是在调用pow函数的时候需要用math.h的头文件,而且在使用pow函数的时候需要把参数类型强制转换为double。


转载:https://blog.csdn.net/qq_45596007/article/details/101929587
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场