#include
void
main()
{
int
a,b,c,number;
for(number=2;number<=999;number++)
{
a=number/100;
b=number/10-10*a;
c=number-100*a-10*b;
if(number==a*a*a+b*b*b+c*c*c)
printf("%d\t",number);
}
}
里面的a=number/100;
b=number/10-10*a;
c=number-100*a-10*b;
的不是很明白?
程序解释:
a=number/100;这句用来取number的百位数,既a为百位数字;
b=number/10-10*a;这句指中的number/10指取三位数的前两位(百位和十位),比如一个数123,取前两位得到一个十位数12;后面的"-10*a"指扣去乘以十的百位数位,就是说12-10=2,因此的到的是十位数位;
c的做法也是一样的:用总数扣去(十位数位)*10+(百位数位)*100,得到的是个位数位,于是完成了提取三位数各位数的工作.
不过这个做法的确让人看了不是很明白,我建议用这个方法:
a=number/100%10;
b=number/10%10;
c=number/1%10;