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


    题目出处

    水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:
    ​​ 。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。

    函数接口定义:

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

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

    函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤mn≤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
    ", m);
        PrintN(m, n);
        if ( narcissistic(n) ) printf("%d is a narcissistic number
    ", n);
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    153 400
    

    输出样例:

    153 is a narcissistic number
    370
    371
    

    代码如下

    int narcissistic( int number )
    {
        int num=0,sum=0,prenumber=number;
        //num:记录数字位数 sum:记录等式的和 prenumber:记录原先输入的number
        int s[10];//存放每位数字
        while(number)
        {
            num++;
            s[num]=number%10;
            number/=10;
        }
        int temp;//临时变量,用于求和(sum)
        for(int j=1;j<=num;j++)
        {
            temp=s[j];
            for(int k=2;k<=num;k++)
            {
                temp*=s[j];
            }
            sum+=temp;
        }
        if(sum==prenumber) return 1;
        else return 0;
    }
    void PrintN( int m, int n )
    {
        for(int i=m+1;i<n;i++)
        {
            if(narcissistic(i))
                printf("%d
    ",i);
        }
    }
    
  • 相关阅读:
    战国时期主张合众联横的两位游士
    解读蓝帆“取势,明道,优术”
    云起龙骧
    取势明道优术_百度百科
    曾鸣[长江商学院教授]_互动百科
    E=MC2
    罗斯福6号_百度百科
    时尚大帝_百度视频
    群星云集 BOSS上海时装秀—情沪魅影- 在线观看
    林志玲“情沪魅影”时装片展情缘-中新网
  • 原文地址:https://www.cnblogs.com/NIT-yale/p/13257509.html
Copyright © 2020-2023  润新知