在某网页看到一题目为:求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
#include <stdio.h>
#include <math.h>
int main()
{
int i=0;
//int sum = 0;如果sum定义在了For循环外面,那么sum的值就会一直累加
for(i=0;i<1000;i++)
{
int temp =0;
int a = 0 ;
temp = i ;
//求数字的位数
while (temp)
{
a++;
temp=temp/10;
}
//求各位数的a次方的和
temp=i;
int sum = 0;
//sum只有定义在for循环里面才可以随着For循环语句的每次变化而清零
while (temp)
{
int b = temp%10;
int b = 0;
//sum =sum + pow(b, a);
//因为有:pow(double,double) pow(float,float) 所以匹配错了。
sum =sum + pow((double)b,(double) a);
//强制转换类型
temp=temp/10;
}
if(sum==i)
{
printf("%d ",i);
}
}
return 0;
}