浙大版《C语言程序设计(第3版)》题目集 习题4-6 水仙花数

时间:2022-07-24
本文章向大家介绍浙大版《C语言程序设计(第3版)》题目集 习题4-6 水仙花数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

习题4-6 水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3≤N≤7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

3

输出样例:

153 370 371 407

代码:

#include<stdio.h>

void fun1(int *m,int *n,int N)
{
    int i;
    int t1,t2;
    t1=t2=1;
    for(i=1;i<=N-1;i++)
        t1*=10;
    for(i=1;i<=N;i++)
        t2*=10;
    *m=t1;*n=t2-1;
}

int fun2(int n,int N)
{
    int i;
    int t;
    int sum=0;
    int tt=n;
    while(n)
    {
        t=1;
        int temp=n%10;
        for(i=1;i<=N;i++)
        {
            t*=temp;
        }
        sum+=t;
        n/=10;
    }
    if(tt==sum) return 1;
    else return 0;
}
int main()
{
    int N;
    scanf("%d",&N);
    int m,n;
    fun1(&m,&n,N);  //找出最小N位数和最大N位数
    //printf("%d %dn",m,n);
    int i;
    for(i=m;i<=n;i++)
    {
        int temp=fun2(i,N);
        if(temp==1) printf("%dn",i);
    }
    return 0;
}