题解:
#include<stdio.h>
int main()
{
for(int i=100;i<=999;i++)
{
if(i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10))
{
printf("%d\n",i);
}
}
return 0;
}
分析:
其实只需要将一个三位数分解出来然后乘以立方。
因为 int 是整形;所以( i /100 )也是整形,c语言的除是直接取整的,不是四舍五入;
首先分离百位出来:( i / 100 )然后立方;
分离十位:先( i % 100)取余,取余后会得到一个两位数,然后再 / 10 ,即可得到两位数的 十单位上的数,然后立方;
同理再分离个位数出来:各位数就直接是一个三位数( i %10 )即可取余得到个位数,然后立方
最后加起来即可,也就是上面的
i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10)
再配合一个累加的 for 语句和 if 即可实现。
本题来自C语言网的 题号1016