童鞋們進(jìn)來看看這里,或許你們能看懂,集合各位評論的答案,以及原本答案的講解,莫噴
1、有的童鞋說判斷條件可以是<=999,這點是沒有任何問題的。
<1000或者<=999都是沒有任何問題的。
2、hd=num / 100;
? ?打個比方,比如num=211。
? ?211 / 100=2.11
? ?因為你定義的是int類型,輸出的也是整數(shù)類型。
? ?所以計算機也不會給你四舍五入的計算,它只會
? ?獲得你的整數(shù)部分的數(shù)目。
3、td=(num%100) / 10;
? ?根據(jù)上面的結(jié)論可以得出。
? ?num=212;
? ?211%100他只得到了兩個數(shù)值:12;
? ?但是我們需要個位的數(shù)值,所以我們還要除以10;
? ?12/10=1.1;
? ?根據(jù)上面結(jié)論可以得出,計算機只會取你的整數(shù)部分。
? ?所以我們就輕松的獲得了十位數(shù)的1;
4、sd=num % 10;
? ?根據(jù)上面的結(jié)論可以得出一個怎么樣的結(jié)果呢?
? ?num=211;
? ?212%10 = = 2;根據(jù)上面的結(jié)論可以自己算算。這里就不
? ?多加解釋。
二、很多聰明的童鞋有另外幾種解釋方法。
? ? 我也看入迷了。
? ? 比如獲得個位數(shù)的數(shù)字可以用以下這種方法
? ? num / 10 % 10
? ? num=211;
? ? 211/10=11;
? ? 11%10=1;
? ? 這樣我們也可以得到個位數(shù);
三、有個童鞋的幾行數(shù)據(jù)也讓我耳目一新;
? ? 我也照葫蘆畫瓢的把數(shù)值帶入進(jìn)去算了一下;
? ? 以下是計算結(jié)果:
? ? #define num = 100;
? ? hd = (num-num%100)/100;
? ? //同學(xué)方法
? ? 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)
? ? 是不是少打了一個等于號結(jié)果就變了?我們來看看。
? ? 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)那種結(jié)果:
? ? sum=100;
? ? hd = 1;
? ? td = 0;
? ? sd = 0;
? ? ?因為if里面是賦值運算,并不是相等運算。
? ? 請看這兩個式子
? ? sum = 1;
? ? sum == 1;
第一個的解釋是把1這個數(shù)字賦值到sum里,并沒判斷他們相等
所以就會直接輸出一個1字。
第二個的解釋是sum是否等于1;100!=1的,所以不會輸出內(nèi)容,直到水仙花模式開啟!
sum == 153;
這樣就會輸出153;
? ? 小伙伴就會問,那第一個式子往下走呢?
? ? 這里我就給大家?guī)肟纯础?/p>
? ? 因為sum = 1;
? ? 輸出一個1之后,然后又進(jìn)入for模式:
? ? 因為我給sum賦值了一個1;
? ? 所以for里面定義的變量就起不了作用。
? ? 我循環(huán)照樣循環(huán);
? ? 自增也照樣自增。
? ? 然后 sum++就為2了。
? ? hd = num /100;
其結(jié)果是小數(shù),啪嘰結(jié)果就為0;
? ? td = (num%100)/10;
? ? td = 2 /10;
又是小數(shù)。啪嘰結(jié)果又為0;
? ? sd = num % 10;
? ? sd = 2 % 10
? ? sd = 2;
進(jìn)入if(num = 0+0+2*2*2)
? ? ?又是賦值運算 num = 8;
輸出一次是不是8呢?
因為是賦值運算,而不是判斷。所以又一次輸出num的結(jié)果。
小伙伴們可以繼續(xù)往下算算哦!
2015-11-30
贊贊贊~
2015-11-30
td=(num%100) / 10;
? ?根據(jù)上面的結(jié)論可以得出。
? ?num=212;
? ?211%100他只得到了兩個數(shù)值:12;
? ?但是我們需要個位的數(shù)值,所以我們還要除以10;
? ?12/10=1.1;
? ?根據(jù)上面結(jié)論可以得出,計算機只會取你的整數(shù)部分。
? ?所以我們就輕松的獲得了十位數(shù)的1;
個位就是2 了
2015-11-28
為啥用pow(sd,3).......不行呢?
2015-11-19
還真的是 if語句==寫成=了,調(diào)試了十多分鐘愣是沒看出來
2015-11-01
很厲害?? 解釋的挺好的
2015-10-27
td=num/10%10,是用來得十位數(shù)的。 ?例:321/10%10=2
但是當(dāng)td=(num/100)%10時,321/100%10=1,得到的是個位數(shù),而不是十位數(shù)。
2015-10-23
數(shù)學(xué)6666
2015-10-11
你們都不是用212%10來求得個位么,,,難道是這個有什么錯么
2015-10-09
#include <stdio.h>
int main()
{
? ? //定義三位數(shù)num,個位數(shù)sd,十位數(shù)td,百位數(shù)hd
? ? int num, sd, td, hd;
? ? //循環(huán)所有三位數(shù)
? ? for(num=100;num<1000;num++)
? ? {
? ? ? ? //獲取三位數(shù)字num百位上的數(shù)字
? ? ? ? hd =num%10;
? ? ? ? //獲取三位數(shù)字num十位上的數(shù)字
? ? ? ? td =num/10%10;
? ? ? ? //獲取三位數(shù)字num個位上的數(shù)字
? ? ? ? sd =num/100;
? ? ? ? //水仙花數(shù)的條件是什么?
? ? ? ? if(num==hd*hd*hd+td*td*td+sd*sd*sd )?
? ? ? ? {
? ? ? ? ? ? printf("水仙花數(shù)字:%d\n", num); ? ?
? ? ? ? }
? ? }
? ? return 0; ? ?
}
2015-10-09
思路很好,就是有些地方數(shù)字搞錯了
3、td=(num%100) / 10;
? ?根據(jù)上面的結(jié)論可以得出。
? ?num=212;應(yīng)該是211吧?,
? ?211%100他只得到了兩個數(shù)值:12;這里應(yīng)該是11吧?
? ?但是我們需要個位的數(shù)值,所以我們還要除以10;
? ?12/10=1.1;? 該是11.
? ?根據(jù)上面結(jié)論可以得出,計算機只會取你的整數(shù)部分。
? ?所以我們就輕松的獲得了十位數(shù)的1;