童鞋們進(jìn)來看看這里,或許你們能看懂,集合各位評(píng)論的答案,以及原本答案的講解,莫噴
1、有的童鞋說判斷條件可以是<=999,這點(diǎn)是沒有任何問題的。
<1000或者<=999都是沒有任何問題的。
2、hd=num / 100;
? ?打個(gè)比方,比如num=211。
? ?211 / 100=2.11
? ?因?yàn)槟愣x的是int類型,輸出的也是整數(shù)類型。
? ?所以計(jì)算機(jī)也不會(huì)給你四舍五入的計(jì)算,它只會(huì)
? ?獲得你的整數(shù)部分的數(shù)目。
3、td=(num%100) / 10;
? ?根據(jù)上面的結(jié)論可以得出。
? ?num=212;
? ?211%100他只得到了兩個(gè)數(shù)值:12;
? ?但是我們需要個(gè)位的數(shù)值,所以我們還要除以10;
? ?12/10=1.1;
? ?根據(jù)上面結(jié)論可以得出,計(jì)算機(jī)只會(huì)取你的整數(shù)部分。
? ?所以我們就輕松的獲得了十位數(shù)的1;
4、sd=num % 10;
? ?根據(jù)上面的結(jié)論可以得出一個(gè)怎么樣的結(jié)果呢?
? ?num=211;
? ?212%10 = = 2;根據(jù)上面的結(jié)論可以自己算算。這里就不
? ?多加解釋。
二、很多聰明的童鞋有另外幾種解釋方法。
? ? 我也看入迷了。
? ? 比如獲得個(gè)位數(shù)的數(shù)字可以用以下這種方法
? ? num / 10 % 10
? ? num=211;
? ? 211/10=11;
? ? 11%10=1;
? ? 這樣我們也可以得到個(gè)位數(shù);
三、有個(gè)童鞋的幾行數(shù)據(jù)也讓我耳目一新;
? ? 我也照葫蘆畫瓢的把數(shù)值帶入進(jìn)去算了一下;
? ? 以下是計(jì)算結(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)
? ? 是不是少打了一個(gè)等于號(hào)結(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)
//少打了一個(gè)等于號(hào)。這代表的是賦值,而不是等于??!
}
? ? 我們來一步一步帶入數(shù)值看看為什么會(huì)出現(xiàn)那種結(jié)果:
? ? sum=100;
? ? hd = 1;
? ? td = 0;
? ? sd = 0;
? ? ?因?yàn)閕f里面是賦值運(yùn)算,并不是相等運(yùn)算。
? ? 請(qǐng)看這兩個(gè)式子
? ? sum = 1;
? ? sum == 1;
第一個(gè)的解釋是把1這個(gè)數(shù)字賦值到sum里,并沒判斷他們相等
所以就會(huì)直接輸出一個(gè)1字。
第二個(gè)的解釋是sum是否等于1;100!=1的,所以不會(huì)輸出內(nèi)容,直到水仙花模式開啟!
sum == 153;
這樣就會(huì)輸出153;
? ? 小伙伴就會(huì)問,那第一個(gè)式子往下走呢?
? ? 這里我就給大家?guī)肟纯础?/p>
? ? 因?yàn)閟um = 1;
? ? 輸出一個(gè)1之后,然后又進(jìn)入for模式:
? ? 因?yàn)槲医osum賦值了一個(gè)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)
? ? ?又是賦值運(yùn)算 num = 8;
輸出一次是不是8呢?
因?yàn)槭琴x值運(yùn)算,而不是判斷。所以又一次輸出num的結(jié)果。
小伙伴們可以繼續(xù)往下算算哦!
2019-11-19
111
2019-09-17
啦啦啦
2018-11-20
額v過
2018-10-24
D項(xiàng)不是4列嗎?[][3]怎么理解
2018-10-23
里面任務(wù)題的答案在哪看
2018-10-03
我感覺我看懂了,但是去填寫代碼的時(shí)候我級(jí)的無從下手
2018-01-11
,,,?
2017-12-20
這個(gè)沒問題
2017-12-20
#include <stdio.h>
int main()
{
??? //定義三位數(shù)num,個(gè)位數(shù)sd,十位數(shù)td,百位數(shù)hd
??? int num, sd, td, hd;
??? //循環(huán)所有三位數(shù)
??? for(num=100;num<=999;num++)
??? {
??????? //獲取三位數(shù)字num百位上的數(shù)字
??????? hd = num/100;
??????? //獲取三位數(shù)字num十位上的數(shù)字
??????? td =(num/10)%10;
??????? //獲取三位數(shù)字num個(gè)位上的數(shù)字
??????? sd =num%10;
??????? //水仙花數(shù)的條件是什么?
??????? if(hd*hd*hd+td*td*td+sd*sd*sd==num)
??????? {
??????????? printf("水仙花數(shù)字:%d\n", num);???
??????? }
??? }
??? return 0;???
}
2017-12-11
#include <stdio.h>
int main()
{
? ? //定義三位數(shù)num,個(gè)位數(shù)sd,十位數(shù)td,百位數(shù)hd
? ? int num, sd, td, hd;
? ? //循環(huán)所有三位數(shù)
? ? 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("水仙花數(shù)字:%d\n", num); ??
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? return 0; ? ?
}
這么寫行不