C语言实现求水仙花数

一.题目描述:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1^3+5^3+3^3。

二.代码实现

方法(一):

​
​
包装成函数使用
int Judge(int n)
{
	int a = 0;
	int b = n;
	int sum = 0;
	while (b)
	{
		a = b % 10;
		b = b / 10;
		sum = sum + (a * a * a);
	}
	return sum;
}
int main()
{
	int num = 0;
	int ret = 0;
	for (num = 100; num <= 999; num++)
	{
		ret = Judge(num);
		if (ret == num)
		{
			printf("%d是水仙花数\n", num);
		}
	}

​

​

在主函数内部,设置变量num和ret,因为水仙花数是指三位数,所以要使用循环,num从100开始,999结束,在循环内部调用函数Judge,此时变量ret用来接收函数调用后的结果。最后再判断num的值是否和ret的值相等,来进行判断num是不是水仙花数。

在Judge函数中设置变量a,b,sum。经题目分析我们是要得到一个数的每位上的数,之后每位上的数再分别进行3次幂运算,运算之后的结果再相加与原来的num进行判断。为了保证num的值不被改变,将num的值先赋值给b。接着使用while循环,a=b%10是得到每位的数字,例:153%10=3;

b=b/10是为了得到下个位制的数字,例:153/10=15;如此反复,直到不满足条件b!=0时跳出循环。

运行结果:

方法(二):

int main()
{
	int x = 0;
	int y = 0;
	int z = 0;
	int i = 0;
	for (i = 100; i <= 999; i++)
	{
		x = i % 10;        //得到个位上数字
		y = (i / 10) % 10; //得到十位上数字
		z = (i / 100) % 10;//得到百位上数字
	
	if (i == (x * x * x + y * y * y + z * z * z))
	{
		printf("%d是水仙花数\n", i);
	}
	}
	return 0;
}

该方法比较直观。

运行结果:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值