任意位数的水仙花数(C语言)

这是我第一次写博客,作为一个计算机专业的大一学生,听说博客记录学习过程是一种不错的做法,我便来尝试了,很新奇,希望能坚持下去。
回归正题,当时学循环时以为水仙花数就是一个各位数字立方和等于它本身的三位数,但实际任意位数都可求水仙花数,此处贴下我的代码。

#include<stdio.h>
#include<math.h>
int main()
{
	int m,n,i;            
	int sum = 0;
	int wei(int n);      //声明求位数的函数
	scanf("%d",&n);
	m = n;               //将输入数赋给m,因为后续求各位数时n已经变了,
						     无法用n与sum比较
	while(n > 0)               //从个位数开始求各位数	
	{
		i = n % 10;		 
		sum += pow(i,wei(m));	        //各位数的n次方和
		n /= 10;                        
	}	
	if(sum == m)                     //与输入数比对,判断是否时水仙花数
		printf("yes\n");
	else
		printf("no\n");
	return 0;
 } 

int wei(int n)                   //求位数的典型函数
{
	int k = 0;
	while(n > 0)
	{
		n /= 10;
		k++; 
	}
	return k;
}

还没做时以为不会做,但一动手其实不过只是要调用求位数的函数罢了,果然计算机还是要勇敢尝试呀。

欢迎探讨交流。谢谢。

猜你喜欢

转载自blog.csdn.net/weixin_44009743/article/details/84875238
今日推荐