专栏首页IT技术圈(CSDN)浙大版《C语言程序设计(第3版)》题目集 习题4-6 水仙花数

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浙大版《C语言程序设计(第3版)》题目集 习题5-4 使用函数求素数和

    其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数m≤n。

    C you again 的博客
  • 浙大版《C语言程序设计(第3版)》题目集 习题6-2 使用函数求特殊a串数列和

    给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。

    C you again 的博客
  • 2017年天梯赛全国总决赛题集 L1-8 矩阵A乘以B

    给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra行、C​a列,B有R​b行、Cb ​​ 列,则只有C...

    C you again 的博客
  • C++ 函数指针的定义方法及使用

    第一种,c语言通用。定义一个process_job函数指针类型,返回值为 int ,函数参数为int a,int b。使用用两种方法。

    forxtz
  • ICPC Asia Shenyang 2019 Dudu's maze

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    用户2965768
  • 学生时代所学的一些 C 语言知识点回顾(1)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    耕耘实录
  • Educational Codeforces Round 67 (Rated for Div. 2) A~E 贪心,构造,线段树,树的子树

    Educational Codeforces Round 67 (Rated for Div. 2)

    用户2965768
  • LeetCode 164. Maximum Gap (排序)

    题解:首先,当然我们可以用快排,排完序之后,遍历一遍数组,就能得到答案了。但是快速排序的效率是O(n* logn),不是题目要求的线性效率,也就是O(n)的效率...

    ShenduCC
  • 位操作运算有什么奇技淫巧?(附源码)

    比如说16位二进制数A:1001 1001 1001 1000,如果来你想获A的哪一位的值,就把数字B:0000 0000 0000 0000的那一位设置为1.

    刘盼
  • 浙大版《C语言程序设计(第3版)》题目集 习题6-2 使用函数求特殊a串数列和

    给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。

    C you again 的博客

扫码关注云+社区

领取腾讯云代金券