首页
学习
活动
专区
圈层
工具
发布

浙大版《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

代码:

代码语言:javascript
代码运行次数:0
复制
#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 %d\n",m,n);
    int i;
    for(i=m;i<=n;i++)
    {
        int temp=fun2(i,N);
        if(temp==1) printf("%d\n",i);
    }
    return 0;
}
下一篇
举报
领券