習題5-6 使用函式輸出水仙花數 (20 point(s))
阿新 • • 發佈:2018-11-25
習題5-6 使用函式輸出水仙花數 (20 point(s))
水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。例如:153=13+53+33。 本題要求編寫兩個函式,一個判斷給定整數是否水仙花數,另一個按從小到大的順序打印出給定區間(m,n)內所有的水仙花數。
函式介面定義:
int narcissistic( int number );
void PrintN( int m, int n );
函式narcissistic
判斷number
是否為水仙花數,是則返回1,否則返回0。
函式PrintN
則列印開區間(m
, n
)內所有的水仙花數,每個數字佔一行。題目保證100≤m
n
≤10000。
裁判測試程式樣例:
#include <stdio.h> int narcissistic( int number ); void PrintN( int m, int n ); int main() { int m, n; scanf("%d %d", &m, &n); if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m); PrintN(m, n); if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n); return 0; } /* 你的程式碼將被嵌在這裡 */
輸入樣例:
153 400
輸出樣例:
153 is a narcissistic number
370
371
int narcissistic( int number ){ int c,count=0,sum=0,integer=number,digit,flag; while(integer>0){ integer=integer/10; count++; } integer=number; for(int i=1;i<=count;i++){ digit=integer%10; integer=integer/10; c=1; for(int j=1;j<=count;j++) c=c*digit; sum=sum+c; } if(sum==number) flag=1; else flag=0; return flag; } void PrintN( int m, int n ){ for(int i=m+1;i<n;i++){ if(narcissistic(i)==1) printf("%d\n",i); } }