若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我,若你是真心學習可以送你書籍,指導你學習,給予你目標方向的學習路線,無套路,博客為證。
前言
本專欄內容將會以輕松、簡單的方式完成習題的解答,用情景再現的文章風格使讀者能夠在輕松愉悅的閱讀氛圍中完成知識的吸收,本專欄考慮讀者的吸收能力,不講解過多高效的計算方法,降低閱讀門檻,希望各位多多支持~
作者簡介
作者名:1_bit
簡介:CSDN博客專家,2020年博客之星TOP5,藍橋簽約作者。15-16年曾在網上直播,帶領一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關信息,迷茫的你會找到答案。
博客地址:https://i1bit.blog.csdn.net
情景再現
🐰小C:Hi~小媛,怎么今天垂頭喪氣的?
👸小媛:小C,你可要救救我。今天在一個學習群里,他們在討論一個叫做求水仙花數的內容,我不懂水仙花數,我感覺我被打擊了。 😭
🐰小C:哈哈哈,水仙花數呀,水仙花數其實就是指一個三位數,他們的個位、十位、百位的立方和等于這個三位數本身。
👸小媛:他們也是這樣解釋的,但我還是不懂呀。
🐰小C:那你看一個例子,有一個數 153,個位是 3、十位是 5、百位是 1,然后個位的立方也就是 333 等于 27,十位的立方 555 等于 125,百位的立方 111 等于 1,而這些立方 27、125 以及 1 相加起來是不是等于 153?
👸小媛:是呀,那又怎么樣? 😂
🐰小C:這 153 不就是這個三位數本身嗎?這個三位數本書也是等于 153 呢。
👸小媛:唔,你意思就是說符合這種規律的數就叫做水仙花數吧?
🐰小C:是的,理解了嗎?
👸小媛:懂是懂了,那怎么寫呢? 😨
🐰小C:其實這道題不難,有簡單的解法;我們知道,一個三位數的范圍是大于 99 以及小于 1000,那么我們只需要取模在 99 到 1000 之間數的個位、十位、百位,隨后使用這些書進行立方計算,最后進行求和,將最后的結果與原有的數進行對比,這時就可以得知當前的數是否是水仙花數了。
👸小媛:你的意思就是說使用一個循環,然后這個循環從變量直接從 100 開始往 1000 循環,隨后對這個循環變量進行取模,取到個位、十位、百位就可以進行計算了?
🐰小C:是的,你先試試這一步你能不能完成。
👸小媛:你在小看我,那么簡單,你看下面的代碼。 😡
#include<stdio.h>
int main(){int ones,tens,hundreds,i;for(i=100;i<1000;i++){ones=i%10;tens=i/10%10;hundreds=i/100;printf("%d : ones=%d , tens=%d , hundreds=%d \n",i,ones,tens,hundreds);}
}
🐰小C:那你來解釋一下循環里面你是怎么獲取個位、十位、百位的吧。
👸小媛:其實很簡單呀,循環是從 100 到 1000的循環,那么循環變量 i 也會逐漸進行增加,那么想要獲取個位,那么直接直接這個循環變量取模10就可以得到個位的數了。
🐰小C:具體怎樣可以詳細說說嗎?
👸小媛:那我給你舉個例子吧,例如 153%10
也就是 153 取模 10,取模就是除這個 10 后得到一個余數就是結果,那么此時除 10 就會得到數字 3,這個 3 就是得數,那么就得到了個位,代碼就可以寫成 ones=i%10;
;百位的獲取也簡單,首先給 153 除 10,由于除 10 后是15.3 但是整型并不保留小數位,那么就可以得到 15,此時再對 15 進行取模即可得到 5 這個結果,代碼寫成 tens=i/10%10;
;最后的百位即同理,直接除 100 就得到了 hundreds=i/100;
。
🐰小C:行,不錯。那你去進行檢驗過了嗎?檢驗可是最直接的驗證方式。
👸小媛:當然,下面就是結果。
🐰小C:那么你就還剩一步,判斷個位、十位、百位上的數字的立方相加是否等于循環變量 i,也就是他們原本的數,你知道怎么做嗎?
👸小媛:當然知道,那么簡單的需求,你看下面的完整代碼。
#include<stdio.h>
int main(){int ones,tens,hundreds,i;printf("水仙花數有:\n");for(i=100;i<1000;i++){ones=i%10;tens=i/10%10;hundreds=i/100;if(i==ones*ones*ones+tens*tens*tens+hundreds*hundreds*hundreds){printf("%d 、",i);}}
}
👸小媛:結果在下面。
🐰小C:解釋一下吧。
👸小媛:其實也就是在 for 循環中添加了一個 if 語句,判斷當前的循環變量 i 是否等于個位立方、十位立方、百位立方的相加和,如果等于就直接輸出就好了,在輸出內容的時候我也沒有換行,為了并排顯示,所以就沒加換行 \n
。
🐰小C:哈哈哈,考慮的挺周到的,那你懂水仙花數了吧?不難吧?
👸小媛:之前只是沒想過來,都是小東西。
本專欄已參加 CSDN 蓄力計劃,感謝讀者支持。