1. 程式人生 > >習題5-6 使用函式輸出水仙花數 (20 point(s))

習題5-6 使用函式輸出水仙花數 (20 point(s))

習題5-6 使用函式輸出水仙花數 (20 point(s))

水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。例如:153=1​3​​+5​3​​+3​3​​。 本題要求編寫兩個函式,一個判斷給定整數是否水仙花數,另一個按從小到大的順序打印出給定區間(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);
}

}