1. 程式人生 > 其它 >習題4-6 水仙花數 (20分)

習題4-6 水仙花數 (20分)

技術標籤:# 浙大版《C語言程式設計(第3版)》題目集c語言c++visual studio

水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。例如:153=1​3​​ +5​3​​ +3​3​​ 。 本題要求編寫程式,計算所有N位水仙花數。

輸入格式:
輸入在一行中給出一個正整數N(3≤N≤7)。

輸出格式:
按遞增順序輸出所有N位水仙花數,每個數字佔一行。

輸入樣例:

3

輸出樣例:

153
370
371
407

原始碼

#include<stdio.h>
#include<math.h>
#pragma warning(disable:4996)
//3:100~999 //4:1000~9999 //科學計數法: 3eN:錯誤 指數不能是變數,而且必須是整數,正負0均可 //如果是變數,可以用pow(,)函式啊 //本題如果用pow函式N=7時執行會超時,需要自己寫pow函式(目前還不知道為什麼) int p(int x, int y) { int ret = 1; for (int i = 0; i < y; i++) { ret *= x; } return ret; } int main() { int N; scanf("%d", &N); int arr[7], sum = 0, flag = 0; for
(int i = p(10, N - 1); i <= p(10, N) - 1; i++) { flag = i;//宣告一個flag,每次把本次的i賦值給flag,防止i改變 for (int j = 0; j < N; j++) { arr[j] = flag % 10; sum += p(arr[j], N); flag = flag / 10; } if (i == sum) { printf("%d\n", i); } sum = 0;//每個總的內層迴圈結束後,sum要初始化為0 } //測試一下p函式: //printf("%d\n", p(2, 3));//成功,然後就可以將pow全部換為p
getchar(); getchar(); return 0; }

***謝謝!!!