【必懂】C语言水仙花数题解
注意:學(xué)生黨如果存在付費(fèi)問題可以加我好友,我可以開單篇短時(shí)間的免費(fèi)喲~ 私聊我就好~
前言
本專欄內(nèi)容將會(huì)以輕松、簡單的方式完成習(xí)題的解答,用情景再現(xiàn)的文章風(fēng)格使讀者能夠在輕松愉悅的閱讀氛圍中完成知識(shí)的吸收,本專欄考慮讀者的吸收能力,不講解過多高效的計(jì)算方法,降低閱讀門檻,希望各位多多支持~
作者簡介
作者名:1_bit
簡介:CSDN博客專家,2020年博客之星TOP5,藍(lán)橋簽約作者。15-16年曾在網(wǎng)上直播,帶領(lǐng)一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關(guān)信息,迷茫的你會(huì)找到答案。
博客地址:https://i1bit.blog.csdn.net
情景再現(xiàn)
🐰小C:Hi~小媛,怎么今天垂頭喪氣的?
👸小媛:小C,你可要救救我。今天在一個(gè)學(xué)習(xí)群里,他們在討論一個(gè)叫做求水仙花數(shù)的內(nèi)容,我不懂水仙花數(shù),我感覺我被打擊了。 😭
🐰小C:哈哈哈,水仙花數(shù)呀,水仙花數(shù)其實(shí)就是指一個(gè)三位數(shù),他們的個(gè)位、十位、百位的立方和等于這個(gè)三位數(shù)本身。
👸小媛:他們也是這樣解釋的,但我還是不懂呀。
🐰小C:那你看一個(gè)例子,有一個(gè)數(shù) 153,個(gè)位是 3、十位是 5、百位是 1,然后個(gè)位的立方也就是 333 等于 27,十位的立方 555 等于 125,百位的立方 111 等于 1,而這些立方 27、125 以及 1 相加起來是不是等于 153?
👸小媛:是呀,那又怎么樣? 😂
🐰小C:這 153 不就是這個(gè)三位數(shù)本身嗎?這個(gè)三位數(shù)本書也是等于 153 呢。
👸小媛:唔,你意思就是說符合這種規(guī)律的數(shù)就叫做水仙花數(shù)吧?
🐰小C:是的,理解了嗎?
👸小媛:懂是懂了,那怎么寫呢? 😨
🐰小C:其實(shí)這道題不難,有簡單的解法;我們知道,一個(gè)三位數(shù)的范圍是大于 99 以及小于 1000,那么我們只需要取模在 99 到 1000 之間數(shù)的個(gè)位、十位、百位,隨后使用這些書進(jìn)行立方計(jì)算,最后進(jìn)行求和,將最后的結(jié)果與原有的數(shù)進(jìn)行對比,這時(shí)就可以得知當(dāng)前的數(shù)是否是水仙花數(shù)了。
👸小媛:你的意思就是說使用一個(gè)循環(huán),然后這個(gè)循環(huán)從變量直接從 100 開始往 1000 循環(huán),隨后對這個(gè)循環(huán)變量進(jìn)行取模,取到個(gè)位、十位、百位就可以進(jìn)行計(jì)算了?
🐰小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:那你來解釋一下循環(huán)里面你是怎么獲取個(gè)位、十位、百位的吧。
👸小媛:其實(shí)很簡單呀,循環(huán)是從 100 到 1000的循環(huán),那么循環(huán)變量 i 也會(huì)逐漸進(jìn)行增加,那么想要獲取個(gè)位,那么直接直接這個(gè)循環(huán)變量取模10就可以得到個(gè)位的數(shù)了。
🐰小C:具體怎樣可以詳細(xì)說說嗎?
👸小媛:那我給你舉個(gè)例子吧,例如 153%10 也就是 153 取模 10,取模就是除這個(gè) 10 后得到一個(gè)余數(shù)就是結(jié)果,那么此時(shí)除 10 就會(huì)得到數(shù)字 3,這個(gè) 3 就是得數(shù),那么就得到了個(gè)位,代碼就可以寫成 ones=i%10;;百位的獲取也簡單,首先給 153 除 10,由于除 10 后是15.3 但是整型并不保留小數(shù)位,那么就可以得到 15,此時(shí)再對 15 進(jìn)行取模即可得到 5 這個(gè)結(jié)果,代碼寫成 tens=i/10%10;;最后的百位即同理,直接除 100 就得到了 hundreds=i/100;。
🐰小C:行,不錯(cuò)。那你去進(jìn)行檢驗(yàn)過了嗎?檢驗(yàn)可是最直接的驗(yàn)證方式。
👸小媛:當(dāng)然,下面就是結(jié)果。
🐰小C:那么你就還剩一步,判斷個(gè)位、十位、百位上的數(shù)字的立方相加是否等于循環(huán)變量 i,也就是他們原本的數(shù),你知道怎么做嗎?
👸小媛:當(dāng)然知道,那么簡單的需求,你看下面的完整代碼。
#include<stdio.h> int main(){int ones,tens,hundreds,i;printf("水仙花數(shù)有:\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);}} }👸小媛:結(jié)果在下面。
🐰小C:解釋一下吧。
👸小媛:其實(shí)也就是在 for 循環(huán)中添加了一個(gè) if 語句,判斷當(dāng)前的循環(huán)變量 i 是否等于個(gè)位立方、十位立方、百位立方的相加和,如果等于就直接輸出就好了,在輸出內(nèi)容的時(shí)候我也沒有換行,為了并排顯示,所以就沒加換行 \n。
🐰小C:哈哈哈,考慮的挺周到的,那你懂水仙花數(shù)了吧?不難吧?
👸小媛:之前只是沒想過來,都是小東西。
本專欄已參加 CSDN 蓄力計(jì)劃,感謝讀者支持。
總結(jié)
以上是生活随笔為你收集整理的【必懂】C语言水仙花数题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《看聊天记录都学不会C#?太菜了吧》(6
- 下一篇: 【小白必懂】C语言最大、最小公约数题解