1个回答
展开全部
你的想法是可行的,但是算法不好,按你的思路形成的完整代码如下:
#include <stdio.h>
void main()
{
int a,b,c,d;
for(a=0;a<10;a++)
{
for(b=0;b<10;b++)
{
for(c=0;c<10;c++)
{
d = 100*a+10*b+c;
if(d==a*a*a+b*b*b+c*c*c)
{
if(d>=100)
printf("%d\n",a*100+b*10+c);
}
}
}
}
}
运行结果是
153
370
371
407
希望能帮到你i
#include <stdio.h>
void main()
{
int a,b,c,d;
for(a=0;a<10;a++)
{
for(b=0;b<10;b++)
{
for(c=0;c<10;c++)
{
d = 100*a+10*b+c;
if(d==a*a*a+b*b*b+c*c*c)
{
if(d>=100)
printf("%d\n",a*100+b*10+c);
}
}
}
}
}
运行结果是
153
370
371
407
希望能帮到你i
追问
这个我也知道,老师说让弄另外一个算法,而且还说不只是三位数,所以很纠结,不过还是要谢谢你
追答
这个可以计算5位数以内的的水仙花数,通过修改MAX的值还可以计算6位、7位、8位。。。
#include
#include
#define MAX 100000
void main()
{
int i,j,counter=0,sum=0;
int buffer[20];
for(i=100;i0;j/=10)
{
buffer[counter++] = j%10;
}
for(j=0;j<counter;j++)
{
sum+=pow(buffer[j],counter);
}
if(i==sum)
{
printf("水仙花数为:%d\n",i);
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询