C語言水仙花數(shù),阿姆斯特朗數(shù)
阿姆斯特朗數(shù)也就是俗稱的水仙花數(shù),是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153=13+53+33,所以 153 就是一個(gè)水仙花數(shù)。求出所有的水仙花數(shù)。
算法思想
對(duì)于阿姆斯特朗數(shù)問題,根據(jù)水仙花數(shù)的定義,需要分離出個(gè)位數(shù)、十位數(shù)和百位數(shù)。然后按其性質(zhì)進(jìn)行計(jì)算并判斷,滿足條件則打印輸出,否則不打印輸出。
因此,阿姆斯特朗數(shù)問題可以利用循環(huán)語句解決。設(shè)循環(huán)變量為 i,初值為 100,i 從 100 變化到 1000;依次判斷條件是否成立,如果成立則輸出,否則不輸出。
算法思想具體如下:
① 分離出個(gè)位數(shù),算術(shù)表達(dá)式為:j=i%10。
② 分離出十位數(shù),算術(shù)表達(dá)式為:k=i/10%10。
③ 分離出百位數(shù),算術(shù)表達(dá)式為:n=i/100。
④ 判斷條件是否成立。若是,執(zhí)行步驟 ⑤;若不是,執(zhí)行步驟 ⑥。
⑤ 打印輸出結(jié)果。
⑥ i 自增 1。
⑦ 轉(zhuǎn)到 ① 執(zhí)行,直到 i 等于 1000。
其判斷的條件為:j*j*j+k*k*k+n*n*n==i。
程序代碼
#include <stdio.h>
int main()
{
int i,j,k,n;
for(i=100;i<1000;i++)
{
j=i%10;
k=i/10%10;
n=i/100;
if(j*j*j+k*k*k+n*n*n==i)
printf("%5d\n",i);
}
return 0;
}</stdio.h>
調(diào)試運(yùn)行結(jié)果
所有的阿姆斯特朗數(shù),如下所示:
153
370
371
407
總結(jié)
實(shí)訓(xùn)中需注意的是在分離個(gè)位數(shù)、十位數(shù)和百位數(shù)時(shí),算術(shù)運(yùn)算符的選擇。要清楚每一種算術(shù)運(yùn)算符的運(yùn)算規(guī)則和結(jié)合性,再根據(jù)題意選擇合適的算術(shù)運(yùn)算符進(jìn)行運(yùn)算。在本實(shí)例中使用了除法運(yùn)算符“/”和求余運(yùn)算符(模運(yùn)算符)“%”。
在程序中由于循環(huán)體的語句不止一句,因此我們?cè)谑褂脮r(shí)必須用“{}”括起來,組成復(fù)合語句進(jìn)行使用。在程序中應(yīng)把復(fù)合語句看成是單條語句而不是多條語句,復(fù)合語句內(nèi)的各條語句都必須以分號(hào)“;”結(jié)尾;此外,在括號(hào)“}”外不能加分號(hào)。一般復(fù)合語句用于要執(zhí)行某段特殊功能的程序如 for 語句、if 語句或 while 語句等。
作者:大學(xué)生新聞網(wǎng) 來源:大學(xué)生新聞網(wǎng)
發(fā)布時(shí)間:2025-03-05 閱讀:
- C語言判斷三角形的類型
- 根據(jù)輸入的三角形的三條邊判斷三角形的類型,并輸出其面積和類型。
- 03-05 關(guān)注:0
- C語言求n的階乘(n!)
- 從鍵盤輸入一個(gè)數(shù),求出這個(gè)數(shù)的階乘,即 n!。
- 03-05 關(guān)注:0
- C語言分塊查找算法,索引順序查找算法
- 例如,采用分塊查找法在有序表 11、12、18、28、39、56、69、89、96、122、135、146、156、256、298 中查找關(guān)鍵字為 96 的元素。
- 03-05 關(guān)注:0
- C語言二分查找算法,折半查找算法
- 本實(shí)例采用二分查找法查找特定關(guān)鍵字的元素。要求用戶輸入數(shù)組長(zhǎng)度,也就是有序表的數(shù)據(jù)長(zhǎng)度,并輸入數(shù)組元素和査找的關(guān)鍵字。
- 03-05 關(guān)注:0
- C語言歸并排序算法
- 用歸并排序法對(duì)一組數(shù)據(jù)由小到大進(jìn)行排序,數(shù)據(jù)分別為 695、458、362、789、12、 15、163、23、2、986。
- 03-05 關(guān)注:2
- C語言選擇排序算法
- 用選擇排序法對(duì)一組數(shù)據(jù)由小到大進(jìn)行排序,數(shù)據(jù)分別為 526、36、2、369、56、45、78、92、125、52。
- 03-05 關(guān)注:2