#include <stdio.h>
int main()
{
//定义三位数num,个位数sd,十位数td,百位数hd
int num, sd, td, hd;
//循环所有三位数
for(num=100;num<1000;num++)
{
//获取三位数字num百位上的数字
hd =num/100;
//获取三位数字num十位上的数字
td =num%100/10;
//获取三位数字num个位上的数字
sd =num%10;
//水仙花数的条件是什么?
if(num==hd*hd*hd+td*td*td+sd*sd*sd)
{
printf("水仙花数字:%d\n", num);
}
}
return 0;
}
for循环开始,因为num是三位数所以定义为100开始,然后再+1直到三位数结束;hd是整型所以可以直接除100;td是num取除100的余数再除10;sd是num除10取余数,可以用实际例子验算一下;而if就是判断是不是水仙花数,按要求来的;如果是就输出printf语句,不是不输出。
我理解哈,for相当于一个命令,有三条语句,考虑到时三位数,那就是从100≤num<1000,所以For的三个语句起始是100,终止是1000,最后一个是自加到1000,也就是语句中的num++,然后我们三位数有个、十、百,我们要让三者的立方等于这个数字,就需要对个、十、百分别进行定义,也就是sd(single digit)、td(tens digit)和hd(hundreds digit),那就如楼上所说hd是整型所以可以直接除100;td是num取除100的余数再除10;sd是num除10取余数。然后再是if语句,如果满足则输出,否则不输出