求高手给一下提示

来源:百度知道 编辑:UC知道 时间:2024/06/13 22:22:34
这题想不通,请高手帮下小弟...

3、编程输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方之和等于该数本身。例如,153是一“水仙花数”,以为153等于它的百位数1的立方加上十位数5的立方再加上其个位数3的立方的和,即153=1*1*1 + 5*5*5 + 3*3*3 。

结果如下:153=1*1*1 + 5*5*5 + 3*3*3
370=3*3*3 + 7*7*7 + 0*0*0
371=3*3*3 + 7*7*7 + 1*1*1
407=4*4*4 + 0*0*0 + 7*7*7

#include<stdio.h>

int main ()
{int i,j,k,n;
printf("水仙花数:\n");
for (n=100;n<1000;n++)
{i=n/100; /*百位上的数*/
j=n/10-i*10;/*十位上的数*/
k=n%10; /*个位上的数*/
if (n == i*i*i + j*j*j + k*k*k)
printf("%d*%d*%d+ %d*%d*%d+%d*%d*%d=%d\n",i,i,i,j,j,j,k,k,k,n);
}
printf("\n");
return 0;
}

for(i=0;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",i*100+j*10+k);
}

数为x, 则x/100为百位,x/10%10为十位,x%10为个位
for(x=100;x<1000;x++)
if(x==百位*百位*百位+十位*十位*十位+个位*个位*个位)
printf('%4d ",x);

c语言最简单的源程序如下:
main()
{
int i,g,s,b;
for (i=100;i<=999;i++)
{
g=i%10;
s=i/10%10;
b=i/100;
if (g*g*g+s*s*s+b*b*b=i)
printf("%d是水仙花数\n",i);
}
}