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

来源:4-9 循环结构之for循环(二)

weixin_慕姐5417392

2019-11-16 19:54

#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回答

  • Legendary521
    2019-11-16 20:11:37
    已采纳

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

    weixin...

    还是没有读懂

    2019-11-17 19:34:11

    共 1 条回复 >

  • 宝慕林4448533
    2019-11-26 15:19:38

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

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题