问答详情
源自:4-9 循环结构之for循环(二)

这个代码有问题吗

#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%100)%10;

        //水仙花数的条件是什么?

        if(num==hd*hd*hd+td*td*td+sd*sd*sd) 

        {

            printf("水仙花数字:%d\n", num);    

        }

    }

    return 0;    

}


提问者:MES孟 2018-08-01 19:06

个回答

  • 至尊宝vs二爷
    2018-08-03 21:34:36

    hd,td,sd只是一个数,例如:hd=1,2,3,4,5,6,7,8,9;sd=0,1,2,3,4,5,6,7,8,9;td=0,1,2,3,4,5,6,7,8,9; sd=num-hd-td这个表达式应该还是一个两位数或三位数,这个表达式应该不对。

  • 慕尼黑4073835
    2018-08-03 21:15:24

    %是取余运算,应该用/,比如153%100=1....53 取的是53不是1,所以错了

  • 慕九州5552665
    2018-08-02 13:00:16

    #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-hd)%10;

            //获取三位数字num个位上的数字

            sd =num-hd-td;

            //水仙花数的条件是什么?

            if(num == hd*hd*hd+td*td*td+sd*sd*sd); 

            {

                printf("水仙花数字:%d\n", num);    

            }

        }

        return 0;    

    }

    参考参考。

  • 修裾欲溯空
    2018-08-01 20:28:33

    num0是什么