#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i,j,k,s;
for(i=100;i<=999;i++)
{
s=0;
j=i;
do{
k=j%10;
s+=pow(k,3);
j=j/10;
}while(j>0);
if(s==i) printf("%d\n",i);
}
return 0;
}
s+=pow(k,3);
这个代码不可靠,因为pow是浮点计算,存在误差,而转换成int以后可能有精度误差,造成误判。
s+=(int)(pow(k,3)+0.5);
四舍五入下