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

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

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

角度值得学习,但是童鞋可以再严谨一点检查完再发布么?

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

这位童鞋很厉害,多角度思考。

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

哎呀,看不懂啊

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

http://img1.sycdn.imooc.com//55caff1300019d8319201080.jpg

     ...

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

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

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

好赞啊

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

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

    我也看入迷了。

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

    num / 10 % 10

    num=211;

    211/10=11;

    11%10=1;

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

这里应该是错误的吧?211/10 是得整数部分,应该是得21,而21%10得1刚好碰巧与个位数相同,若是换成212那就不对了,212/10 得整数部分21,21%10得余数部分1,显然与个位数2是不一样的。

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

weibo_李大龙不是李大仁_0

他只是少打了个2,意思是211%10=1。同理你的212%10=2.
2016-01-19 回复 有任何疑惑可以回复我~
#2

qq_許妳D温柔_0

获得个位数 num / 10 % 10 式子就不对了,这应该得到的是十位上的数字吧!元芳你怎么看???
2016-03-21 回复 有任何疑惑可以回复我~
#3

没有色彩的土土土 回复 qq_許妳D温柔_0

dui
2016-09-04 回复 有任何疑惑可以回复我~
#4

慕粉004404296

我觉得直接num%10 可以得个位数字
2016-12-16 回复 有任何疑惑可以回复我~
#5

慕粉1000325776

num-100乘以百位数-10乘以十位数=个位数
2017-02-06 回复 有任何疑惑可以回复我~
查看2条回复

bumingjueli

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

一会211一会212的

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

这位童鞋分析的挺不错的,可以参考哦~

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

慕粉3276984

123
2016-04-27 回复 有任何疑惑可以回复我~
#2

慕粉3276984 回复 慕粉3276984

123456
2016-04-27 回复 有任何疑惑可以回复我~
首页上一页123456下一页尾页

举报

0/150
提交
取消

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

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