为了账号安全,请及时绑定邮箱和手机立即绑定

有没有大神 教我读懂这组代码。。

#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;    
}

正在回答

2 回答

for循环开始,因为num是三位数所以定义为100开始,然后再+1直到三位数结束;hd是整型所以可以直接除100;td是num取除100的余数再除10;sd是num除10取余数,可以用实际例子验算一下;而if就是判断是不是水仙花数,按要求来的;如果是就输出printf语句,不是不输出。

2 回复 有任何疑惑可以回复我~
#1

weixin_慕姐5417392 提问者

还是没有读懂
2019-11-17 回复 有任何疑惑可以回复我~

我理解哈,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语句,如果满足则输出,否则不输出

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有没有大神 教我读懂这组代码。。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信