C語言水仙花數,阿姆斯特朗數
阿姆斯特朗數也就是俗稱的水仙花數,是指一個三位數,其各位數字的立方和等于該數本身。例如:153=13+53+33,所以 153 就是一個水仙花數。求出所有的水仙花數。
算法思想
對于阿姆斯特朗數問題,根據水仙花數的定義,需要分離出個位數、十位數和百位數。然后按其性質進行計算并判斷,滿足條件則打印輸出,否則不打印輸出。
因此,阿姆斯特朗數問題可以利用循環語句解決。設循環變量為 i,初值為 100,i 從 100 變化到 1000;依次判斷條件是否成立,如果成立則輸出,否則不輸出。
算法思想具體如下:
① 分離出個位數,算術表達式為:j=i%10。
② 分離出十位數,算術表達式為:k=i/10%10。
③ 分離出百位數,算術表達式為:n=i/100。
④ 判斷條件是否成立。若是,執行步驟 ⑤;若不是,執行步驟 ⑥。
⑤ 打印輸出結果。
⑥ i 自增 1。
⑦ 轉到 ① 執行,直到 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>
調試運行結果
所有的阿姆斯特朗數,如下所示:
153
370
371
407
總結
實訓中需注意的是在分離個位數、十位數和百位數時,算術運算符的選擇。要清楚每一種算術運算符的運算規則和結合性,再根據題意選擇合適的算術運算符進行運算。在本實例中使用了除法運算符“/”和求余運算符(模運算符)“%”。
在程序中由于循環體的語句不止一句,因此我們在使用時必須用“{}”括起來,組成復合語句進行使用。在程序中應把復合語句看成是單條語句而不是多條語句,復合語句內的各條語句都必須以分號“;”結尾;此外,在括號“}”外不能加分號。一般復合語句用于要執行某段特殊功能的程序如 for 語句、if 語句或 while 語句等。
- C語言分塊查找算法,索引順序查找算法
- 例如,采用分塊查找法在有序表 11、12、18、28、39、56、69、89、96、122、135、146、156、256、298 中查找關鍵字為 96 的元素。
- 03-05 關注:0
- C語言二分查找算法,折半查找算法
- 本實例采用二分查找法查找特定關鍵字的元素。要求用戶輸入數組長度,也就是有序表的數據長度,并輸入數組元素和査找的關鍵字。
- 03-05 關注:0
- C語言歸并排序算法
- 用歸并排序法對一組數據由小到大進行排序,數據分別為 695、458、362、789、12、 15、163、23、2、986。
- 03-05 關注:2
- C語言選擇排序算法
- 用選擇排序法對一組數據由小到大進行排序,數據分別為 526、36、2、369、56、45、78、92、125、52。
- 03-05 關注:2