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

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

diffcolt

2015-03-04 20:14

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的结果。

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


写回答 关注

30回答

  • 雨1125
    2019-11-19 08:24:36

    111

  • qq_慕村0435642
    2019-09-17 20:09:11

    啦啦啦

  • 慕的地9412610
    2018-11-20 08:09:13

    额v过

  • 姜_生
    2018-10-24 17:01:42

    D项不是4列吗?[][3]怎么理解

  • 慕码人4433463
    2018-10-23 07:43:28

    里面任务题的答案在哪看

  • 慕瓜6454241
    2018-10-03 09:02:27

    我感觉我看懂了,但是去填写代码的时候我级的无从下手

  • 慕粉8116451
    2018-01-11 17:57:58

    ,,, 

  • 慕桂英2034615
    2017-12-20 21:29:52

    这个没问题

  • 慕桂英2034615
    2017-12-20 21:29:33

    #include <stdio.h>
    int main()
    {
        //定义三位数num,个位数sd,十位数td,百位数hd
        int num, sd, td, hd;
        //循环所有三位数
        for(num=100;num<=999;num++)
        {
            //获取三位数字num百位上的数字
            hd = num/100;
            //获取三位数字num十位上的数字
            td =(num/10)%10;
            //获取三位数字num个位上的数字
            sd =num%10;
            //水仙花数的条件是什么?
            if(hd*hd*hd+td*td*td+sd*sd*sd==num)
            {
                printf("水仙花数字:%d\n", num);   
            }
        }
        return 0;   
    }

  • qq_蓝色精灵_5
    2017-12-11 22:35:36

    #include <stdio.h>

    int main()

    {

        //定义三位数num,个位数sd,十位数td,百位数hd

        int num, sd, td, hd;

        //循环所有三位数

        for( sd=0,td=0,hd=0 ;sd<=9,td<=9,hd<=9 ;sd++,td++,hd++)

        {

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

            {

                if(num>=100)

                {

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

                }

            }

        }

        return 0;    

    }

    这么写行不

    小方lll

    当然不行啦,这个全部都是一样的数字相乘

    2018-04-03 10:37:14

    共 1 条回复 >

  • 拼上一切的赌徒
    2017-10-31 21:39:02

    hd =num/100      ;

    td =num%100/10         

    sd =num%10     ;


  • qq_KOBElook_0
    2017-06-28 13:54:24

    已通过

  • qq_KOBElook_0
    2017-06-28 13:53:34

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

    }


  • asdhjhg
    2017-05-09 17:34:23
    #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。。。让我拿什么来爱你。。。。

  • qq_陌桑花开_0
    2017-03-31 17:15:19

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

  • DemaciaKing
    2017-03-12 21:35:10

    我是这样的

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

            hd =        num/100         ;

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

            td =        num/10-hd*10         ;

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

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


  • tailubian
    2017-03-09 22:20:32

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

  • 慕粉0911154527
    2017-02-09 09:38:51

    /*水仙花数算法*/
    #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

    慕斯0274... 回复慕桂英034...

    C4droid,手机编程软件

    2017-07-03 18:24:40

    共 3 条回复 >

  • 季末孤单丶
    2017-02-07 12:10:42

    211%100=11

  • 季末孤单丶
    2017-02-07 12:10:13

    211%100

  • 慕粉09561410
    2017-01-11 14:03:01

    不会了怎么办

  • 张志辉1111
    2016-12-13 19:55:14

    #include<stdio.h>
    int main()
    {
         int td,sd,hd,num;
         printf("水仙花数是;”);
         for(num=100;num<1000;mum++)
              {
                td=num%10;//求个位
                hd=num/100;//求百位
                sd=num/10;//求十位
               if(td*10+hd*100+sd*10=td*td*td+hd*hd*hd+sd*sd*sd)//符合水仙花
                 {
                       printf(%d,num);
                  }
                 }
       return 0;
    }

  • 纸张
    2016-11-11 14:17:26

    如何用两个数组实现两个大整数的加法

  • 他眼角的痣0
    2016-11-07 16:14:28

    #include<stdio.h>
    int main()
    {
      int i,j,k,n;
      printf("parcissus numbers are");
      for(n=100;n<=999;n++)
      {
    i=n/100;
    j=n/10-i*10;
    k=n%10;
    if(n==i*i*i+j*j*j+k*k*k)
      printf("水仙花数:%d  ",n);
      }
      printf("\n");
      return 0;
    }

  • 张不智
    2016-10-30 13:12:53

    很好。

  • 慕粉1474254569
    2016-10-26 08:35:33

    无聊!!

  • 慕仙3402451
    2016-10-24 17:58:43

    211%10
    取余就是个位了

  • 斟酒独酢
    2016-09-02 21:04:32

    赞!赞!赞!赞!赞!赞!

  • 慕后端9788028
    2016-08-31 20:53:37

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

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

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

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

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

            {

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

            }

        }

        return 0;    

    }

    我也来说说我的方法   我也被=坑了

  • 慕后端9788028
    2016-08-31 20:52:31

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

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

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

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

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

            {

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

            }

        }

        return 0;    

    }

    提供一种方法

    雾里看花花不... 回复慕粉0044...

    但是层主这个也是对的吖 ~

    2017-08-06 13:36:01

    共 3 条回复 >

C语言入门

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

926894 学习 · 21464 问题

查看课程

相似问题