C语言打印所有“水仙花数”

目录

1 例题:

2 设计思想:

3 C语音代码:

4 运行结果:


1 例题:

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

2 设计思路:

       首先确定水仙花数n可能存在的范围,因为n是一个三位数,所以范围确定为n从100变化到999,分离出n的百位i、十位j、个位k后,只要判断n是否等于i*i*j+j*j*j+k*k*k即可知道n是否是水仙花数。

3 C语音代码:

#include<stdio.h>
void main()
{
	int i,j,k,n;
	printf("所有的水仙花数有:");
	for(n=100;n<1000;n++)
	{
		i=n/100;       //分出百位数字 
		j=(n-i*100)/10;        //分出十位数字
	    k=n%10;        //分出个位数字
		if(n==i*i*i+j*j*j+k*k*k)
		printf("%d  ",n); 
	}
}

对代码的说明:
将n整除以100,得出n在百位上的数字i。
将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字j。
将n对10取余,得出n在个位上的数字k。
求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。

对于每个位置上的数值将其拆分的算法有很多种,根据不同情况选择不同算法(对于同一问题不同算法的效率有时会相差很多)。

4 运行结果:

所有的水仙花数有:153  370  371  407
--------------------------------
Process exited after 0.05133 seconds with return value 2187
请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值