全网最易懂的解题——C语言“水仙花数”/“阿姆斯特朗数”

 找出0~100000之间的所有“水仙花数”,这个问题首先我们需要了解什么是水仙花数

知道了规律我们是不是初步可以写出框架了 

int main()
{
	int num = 0;
	
	//首先得知道num是几位数
	for (num = 1; num <= 100000; num++)
	{
		int count = 0;//位数
		while (num != 0)
		{
			num / 10;
			count++;
		}
		if (count == 3)//水仙花数只能说三位数,所以遍历所有三位数
		{
			//判断这个三位数的数字是不是水仙花数
		}
	}
	return 0;
}

框架虽然写好了,但是需要思考一个问题,我们现在传给判断函数的num还是原本的num吗?答案是否认的对吧。所以我们要创建一个临时的变量tmp,将让它等于num。

写代码前先介绍一个库函数,用于立方一个数

#include <math.h>
int main()
{
	int num = 0;
	for (num = 1; num <= 100000; num++)
	{
		int count = 0;
		int tmp = num;
		while (tmp != 0)//让临时变量去循环里面变
		{
			count++;
			tmp /= 10;
		}
		tmp = num;//判断还会改变num吧,那我们就再借用tmp,这样num就不会变化了
		if (count == 3)
		{
			int sum = 0;
			for (int i = 1; i <= 3; i++)
			{
                sum += pow(tmp % 10,count);
                //sum += (tmp % 10) * (tmp % 10) * (tmp % 10)这样写也行
				tmp = tmp / 10;
			}
			if (sum == num)
			{
				printf("%d ", num);
			}
		}
	}

	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值