打印0~n之間的水仙花數。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
int i, j;
int n, tmp[10] = { 0 }, count = 0, sum = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (j = i; j ; j /= 10)
{
tmp[count] = j % 10;
count ++;
}
for (j = 0; j < count; j++)
{
sum += pow(tmp[j], count);
}
if (sum == i)
printf("%d\n", i);
count = 0;
sum = 0;
}
system("pause");
return 0;
}

思路:想要打印0~n之間的水仙花數,那就得先判斷某一個數 i 是否爲水仙花數。通過數位遍歷將 i 的每一位數字取出,再使用迭代算出每位數字的次方和並與原數字 i 進行對比,如果相等即爲水仙花數。再通過for循環將0~n直接的數挨次遍歷,打印出0~n之間的水仙花數。
注:由於0~n之間的數字繁多,所以在判斷某一個數 i 是否爲水仙花水時再定義一個count,再取出 i 的每位上數字的同時來計算出循環次數即 i 的數位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章