习题5-6 使用函数输出水仙花数

来源:互联网 发布:眼睛颜色 知乎 编辑:程序博客网 时间:2024/05/16 12:34

习题5-6 使用函数输出水仙花数   (20分)

水仙花数是指一个NN位正整数(N\ge 3N3),它的每个位上的数字的NN次幂之和等于它本身。例如:153 = 1^3 + 5^3+ 3^3153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)(m,n)内所有的水仙花数。

函数接口定义:

int narcissistic( int number );void PrintN( int m, int n );

函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。

函数PrintN则打印开区间(mn)内所有的水仙花数,每个数字占一行。题目保证100\lem\len10000。

裁判测试程序样例:

#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 number370371

#include <stdio.h>  #include <math.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;  }  int narcissistic( int number ){int i,n=0,sum=0,cnt=0;      n = number;      while(n){            cnt++;          n/=10;      }        n = number;      while(n){i=n%10;        sum += (int)pow(i, cnt);        n/=10;     }        if(sum == number)          return 1;      else          return 0;  }void PrintN( int m, int n ){        int i;        for(i=m+1;i<n;i++)          if(narcissistic(i))              printf("%d\n", i);  }