寫在前面的話
1 思路:理解題目,擬定方案,執行,回顧
2 實現:兩種實現方法;
3 回顧:求同存異;比較優缺點;
零、題目
輸出100-999之間,所有的“水仙花數”。所謂的“水仙花數”是指一個三位數其各位數字的立方和等於該數本身,例如153是“水仙花數”,因爲:153 = 13 + 53 + 33
一、理解題目
1.1 無輸入值;
1.2 輸出值:水仙花數x, x=[100,999];
1.3 條件:ABC; A100 + B10 +C = A3 + B3 + C3;
二、擬定方法
2.1 遍歷水仙花數可能範圍內的所有數
i=[1,9]; j=[0,9]; k=[0,9];
2.2 當符合條件的時候,進行輸出;
三、code
#include<stdio.h>
int main()
{
int sum;
int i, j, k;
sum = 0;
for(i = 1; i <= 9; i++)
{
for(j = 0; j <= 9; j++)
{
for(k = 0; k <= 9; k++)
{
if(i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k)
{
sum = sum + 1;
printf("a=%d, b=%d, c=%d.\n", i, j, k);
}
}
}
}
return 0;
}
四、回顧
4.1 優點
1 本題比較中規中矩,只要認真讀題目,就可以實現;
4.2 改進
1 但是有地方可以改善,如果是求解總的水仙花的個數,本種方法可以實現;
2 也可以考慮通過最外層,從100-999進行篩選,然後通過取餘的方式來會獲取每一個值;
參考文獻
http://c.biancheng.net/view/504.html 使用取餘方式運算