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

童鞋们进来看看这里,或许你们能看懂,集合各位评论的答案,以及原本答案的讲解,莫喷

1、有的童鞋说判断条件可以是<=999,这点是没有任何问题的。

<1000或者<=999都是没有任何问题的。

2、hd=num / 100;

   打个比方,比如num=211。

   211 / 100=2.11

   因为你定义的是int类型,输出的也是整数类型。

   所以计算机也不会给你四舍五入的计算,它只会

   获得你的整数部分的数目。

3、td=(num%100) / 10;

   根据上面的结论可以得出。

   num=212;

   211%100他只得到了两个数值:12;

   但是我们需要个位的数值,所以我们还要除以10;

   12/10=1.1;

   根据上面结论可以得出,计算机只会取你的整数部分。

   所以我们就轻松的获得了十位数的1;

4、sd=num % 10;

   根据上面的结论可以得出一个怎么样的结果呢?

   num=211;

   212%10 = = 2;根据上面的结论可以自己算算。这里就不

   多加解释。

二、很多聪明的童鞋有另外几种解释方法。

    我也看入迷了。

    比如获得个位数的数字可以用以下这种方法

    num / 10 % 10

    num=211;

    211/10=11;

    11%10=1;

    这样我们也可以得到个位数;

三、有个童鞋的几行数据也让我耳目一新;

    我也照葫芦画瓢的把数值带入进去算了一下;

    以下是计算结果:

    #define num = 100;

    hd = (num-num%100)/100;

    //同学方法

    hd = (100-0)/100;

    hd = 1;

    //带入法

    td = (num%100-num%10)/10;

    td = (0-0)/10;

    td = 0;

    sd = num%10;

    sd = 0;

    这样三位数就得出来了。

四、还有童鞋最后的if(sum == hd*hd*hd+td*td*td+sd*sd*sd)

    是不是少打了一个等于号结果就变了?我们来看看。

    for(sum=100;sum<1000;sum++)

{

hd = sum / 100;

td = (sum%100) / 10;

sd = sum % 10;

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

//少打了一个等于号。这代表的是赋值,而不是等于!!

}

    我们来一步一步带入数值看看为什么会出现那种结果:

    sum=100;

    hd = 1;

    td = 0;

    sd = 0;

     因为if里面是赋值运算,并不是相等运算。

    请看这两个式子

    sum = 1;

    sum == 1;

第一个的解释是把1这个数字赋值到sum里,并没判断他们相等

所以就会直接输出一个1字。

第二个的解释是sum是否等于1;100!=1的,所以不会输出内容,直到水仙花模式开启!

sum == 153;

这样就会输出153;

    小伙伴就会问,那第一个式子往下走呢?

    这里我就给大家带入看看。

    因为sum = 1;

    输出一个1之后,然后又进入for模式:

    因为我给sum赋值了一个1;

    所以for里面定义的变量就起不了作用。

    我循环照样循环;

    自增也照样自增。

    然后 sum++就为2了。

    hd = num /100;

其结果是小数,啪叽结果就为0;

    td = (num%100)/10;

    td = 2 /10;

又是小数。啪叽结果又为0;

    sd = num % 10;

    sd = 2 % 10

    sd = 2;

进入if(num = 0+0+2*2*2)

     又是赋值运算 num = 8;

输出一次是不是8呢?

因为是赋值运算,而不是判断。所以又一次输出num的结果。

小伙伴们可以继续往下算算哦!


正在回答

60 回答

hd =num/100      ;

td =num%100/10         

sd =num%10     ;


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

已通过

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

#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^3+td^3+sd^3) 

        {

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

        }

    }

    return 0;    

}


1 回复 有任何疑惑可以回复我~
#include <stdio.h>
int main()
{
    //Define a three digit named num,and his single digits named sd,ten digits named td,hundrend digits named hd
    int num, sd, td, hd;
    //Loop all three digits
    for(num = 100; num < 1000; num++)
    {
        //give me the hundrend digits
        hd = (int) num / 100;
        //give me the ten digits
        td = ((int) num % 100) / 10;
        //give me the Single digits
        sd = (int) num % 10;
        //what is thr Narcissistic number ?
    if(hd * hd * hd + td * td * td + sd * sd * sd == num) 
        {
            printf("Narcissistic number : %d\n", num);    
        }
    }
    return 0;    
}

Python

def Narcissistic_number():
    return [i for i in xrange(100,1000) \
    if (i/100)**3 + (i%100/10)**3 + (i%10)**3 == i]

我还能说些什么。。。。。。C。。。让我拿什么来爱你。。。。

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

哥哥,你第二种是求十位数的

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

我是这样的

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

        hd =        num/100         ;

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

        td =        num/10-hd*10         ;

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

        sd =        num-hd*100-td*10         ;


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

我感觉智商有点不够用啊!!!

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

/*水仙花数算法*/
#include <stdio.h>
int main()
{
    //定义三位数num,个位数sd,十位数td,百位数hd
    int num, sd, td, hd;
    printf("水仙花数有:\n");
    //循环所有三位数
    for(num=100;num<1000;num++)
    {
        //获取三位数字num百位上的数字
        hd =num/100;
        //获取三位数字num十位上的数字
        td =num/10%10;
        //获取三位数字num个位上的数字
        sd =num%10;
        //判断是否为水仙花数
     if(num==hd*hd*hd+td*td*td+sd*sd*sd )
        {
            printf("%d\n", num);   
        }
    }
    return 0;   
}
589bc7e300016dbf05040817.jpg

589bc7ee0001512505990525.jpg

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

慕粉0911154527

求知孜
2017-02-09 回复 有任何疑惑可以回复我~
#2

慕桂英0341057

你用的什么软件啊
2017-06-25 回复 有任何疑惑可以回复我~
#3

慕斯0274016 回复 慕桂英0341057

C4droid,手机编程软件
2017-07-03 回复 有任何疑惑可以回复我~

211%100=11

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

211%100

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

举报

0/150
提交
取消

童鞋们进来看看这里,或许你们能看懂,集合各位评论的答案,以及原本答案的讲解,莫喷

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