题目要求:
如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如:407=43 03 73,因此407就是一个水仙花数。编写一个程序,找出全部的水仙花数。
题目分析:
水仙花数是三位数,只要应用穷举法穷举出100~999闭区间中的每一个数字(正整数),然后对每一个正整数进行判断,看它是不是水仙花数,如果是水仙花数,则将该数输出,如果不是水仙花数,则不输出该数。
int IsNarcissus(int a);
void Narcissus();
void main()
{
printf("The Narcissus numbers below are\n");
Narcissus();
getche();
}
void Narcissus()
{ /*寻找100-999之间的水仙花数*/
int i;
for(i=100;i<=999;i )
if(IsNarcissus(i))
printf("%d ",i);
}
int IsNarcissus(int a)
{ /*判断是否是水仙花数,是则返回1,不是返回0*/
int sum=0,tmp;
tmp=a;
while(tmp>0)
{
sum=sum (tmp)* (tmp)*(tmp);
tmp=tmp/10;
}
if(sum==a)
return 1; /*a 是水仙花数*/
else
return 0; /* a 不是水仙花数*/
}
运行结果:
运行结果
,