7.编程打印出100~999间所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。

例如:153是一个“水仙花数”,因为153=1³+5³+3³。

第一种方式分离每位数字:

#include<stdio.h>

int main()

{

int a,b,c;

int i;

for(i=100;i<1000;i++)

{

a=i%10;

b=i/10%10;

c=i/100;

if(i==a*a*a+b*b*b+c*c*c)

{

printf("%d\n",i);

}

}

return 0 ;

}

第二种方式:三重for循环

#include<stdio.h>

int main()

{

int a,b,c;

int i,j,k;

for(i=1;i<=9;i++)

{

for(j=0;j<=9;j++)

{

for(k=0;k<=9;k++)

{

if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)

{

printf("%d%d%d\n",i,j,k);

}

}

}

}

printf("\n");

return 0 ;

}

扩展资料:

水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。

附:其他位数的自幂数名字

一位自幂数:独身数

两位自幂数:没有

三位自幂数:水仙花数

四位自幂数:四叶玫瑰数

五位自幂数:五角星数

六位自幂数:六合数

七位自幂数:北斗七星数

八位自幂数:八仙数

九位自幂数:九九重阳数

十位自幂数:十全十美数

常见水仙花数

水仙花数又称阿姆斯特朗数。

三位的水仙花数共有4个:153,370,371,407;

四位的四叶玫瑰数共有3个:1634,8208,9474;

五位的五角星数共有3个:54748,92727,93084;

六位的六合数只有1个:548834;

七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;

八位的八仙数共有3个:24678050,24678051,88593477

……

使用高精度计算,可以得到超过int类型上限的水仙花数:

5: 93084

5: 92727

5: 54748

6: 548834

7: 9800817

7: 4210818

7: 1741725

7: 9926315

8: 24678050

8: 24678051

8: 88593477

9: 146511208

9: 912985153

9: 472335975

9: 534494836

10: 4679307774

11: 32164049650

11:40028394225

11: 42678290603

11: 49388550606

11: 32164049651

11: 94204591914

11: 44708635679

11: 82693916578

14: 28116440335967

16: 4338281769391370

16: 4338281769391371

17: 21897142587612075

17: 35641594208964132

17: 35875699062250035

19: 1517841543307505039

19: 3289582984443187032

19: 4929273885928088826

19: 4498128791164624869

20: 63105425988599693916

21: 449177399146038697307

21: 128468643043731391252

23: 27907865009977052567814

23: 35452590104031691935943

23: 27879694893054074471405

23: 21887696841122916288858

24: 174088005938065293023722

24: 188451485447897896036875

(为环保起见,24位以上的水仙花数略)

最大的水仙花数有39位。十进制自然数中的所有水仙花数共有88个。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-27
#include "stdio.h"
int main()
{
int a,b,c,n,i=0;
for(n=100;n<=999;n++)
{
a=n/100;
b=(n-a*100)/10;
c=(n-a*100-b*10);
if(n==a*a*a+b*b*b+c*c*c)
printf("%d ",n);
else continue;
i=i+1;
if(i%5==0)printf("\n");
}
printf("\n");
getchar();
return 0;
}本回答被网友采纳
第2个回答  2012-05-25
#include<stdio.h>
void main()
{
int i,j,k,n;

for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
n=i*100+j*10+k;
if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
printf("水仙花数为:%d\n",n);
}
}
相似回答