童鞋們進來看看這里,或許你們能看懂,集合各位評論的答案,以及原本答案的講解,莫噴
1、有的童鞋說判斷條件可以是<=999,這點是沒有任何問題的。
<1000或者<=999都是沒有任何問題的。
2、hd=num / 100;
? ?打個比方,比如num=211。
? ?211 / 100=2.11
? ?因為你定義的是int類型,輸出的也是整數(shù)類型。
? ?所以計算機也不會給你四舍五入的計算,它只會
? ?獲得你的整數(shù)部分的數(shù)目。
3、td=(num%100) / 10;
? ?根據(jù)上面的結論可以得出。
? ?num=212;
? ?211%100他只得到了兩個數(shù)值:12;
? ?但是我們需要個位的數(shù)值,所以我們還要除以10;
? ?12/10=1.1;
? ?根據(jù)上面結論可以得出,計算機只會取你的整數(shù)部分。
? ?所以我們就輕松的獲得了十位數(shù)的1;
4、sd=num % 10;
? ?根據(jù)上面的結論可以得出一個怎么樣的結果呢?
? ?num=211;
? ?212%10 = = 2;根據(jù)上面的結論可以自己算算。這里就不
? ?多加解釋。
二、很多聰明的童鞋有另外幾種解釋方法。
? ? 我也看入迷了。
? ? 比如獲得個位數(shù)的數(shù)字可以用以下這種方法
? ? num / 10 % 10
? ? num=211;
? ? 211/10=11;
? ? 11%10=1;
? ? 這樣我們也可以得到個位數(shù);
三、有個童鞋的幾行數(shù)據(jù)也讓我耳目一新;
? ? 我也照葫蘆畫瓢的把數(shù)值帶入進去算了一下;
? ? 以下是計算結果:
? ? #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;
? ? 這樣三位數(shù)就得出來了。
四、還有童鞋最后的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)
//少打了一個等于號。這代表的是賦值,而不是等于??!
}
? ? 我們來一步一步帶入數(shù)值看看為什么會出現(xiàn)那種結果:
? ? sum=100;
? ? hd = 1;
? ? td = 0;
? ? sd = 0;
? ? ?因為if里面是賦值運算,并不是相等運算。
? ? 請看這兩個式子
? ? sum = 1;
? ? sum == 1;
第一個的解釋是把1這個數(shù)字賦值到sum里,并沒判斷他們相等
所以就會直接輸出一個1字。
第二個的解釋是sum是否等于1;100!=1的,所以不會輸出內容,直到水仙花模式開啟!
sum == 153;
這樣就會輸出153;
? ? 小伙伴就會問,那第一個式子往下走呢?
? ? 這里我就給大家?guī)肟纯础?/p>
? ? 因為sum = 1;
? ? 輸出一個1之后,然后又進入for模式:
? ? 因為我給sum賦值了一個1;
? ? 所以for里面定義的變量就起不了作用。
? ? 我循環(huán)照樣循環(huán);
? ? 自增也照樣自增。
? ? 然后 sum++就為2了。
? ? hd = num /100;
其結果是小數(shù),啪嘰結果就為0;
? ? td = (num%100)/10;
? ? td = 2 /10;
又是小數(shù)。啪嘰結果又為0;
? ? sd = num % 10;
? ? sd = 2 % 10
? ? sd = 2;
進入if(num = 0+0+2*2*2)
? ? ?又是賦值運算 num = 8;
輸出一次是不是8呢?
因為是賦值運算,而不是判斷。所以又一次輸出num的結果。
小伙伴們可以繼續(xù)往下算算哦!
2015-09-20
角度值得學習,但是童鞋可以再嚴謹一點檢查完再發(fā)布么?
2015-09-20
這位童鞋很厲害,多角度思考。
2015-09-17
哎呀,看不懂啊
2015-08-12
? ? ?...
2015-08-11
贊!贊!贊!贊!贊!贊!
2015-07-15
好贊啊
2015-07-13
二、很多聰明的童鞋有另外幾種解釋方法。
? ? 我也看入迷了。
? ? 比如獲得個位數(shù)的數(shù)字可以用以下這種方法
? ? num / 10 % 10
? ? num=211;
? ? 211/10=11;
? ? 11%10=1;
? ? 這樣我們也可以得到個位數(shù);
這里應該是錯誤的吧?211/10 是得整數(shù)部分,應該是得21,而21%10得1剛好碰巧與個位數(shù)相同,若是換成212那就不對了,212/10 得整數(shù)部分21,21%10得余數(shù)部分1,顯然與個位數(shù)2是不一樣的。
2015-06-07
bumingjueli
2015-03-16
一會211一會212的
2015-03-05
這位童鞋分析的挺不錯的,可以參考哦~