C语言刷题系列——4.使用函数输出水仙花数

简介: C语言刷题系列——4.使用函数输出水仙花数

一)题目要求


0,水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:


1,函数接口定义:

本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。

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


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


函数PrintN:打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。


2,裁判测试程序样例:

#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;
}
/* 你的代码将被嵌在这里 */


二)解题步骤


🍈函数1:int narcissistic( int number )

🍇step1:计算位数

int narcissistic( int number )
{
    int num = number;
    int count = 0;
    while(num)//等同于num!=0
    {
        num/=10;
        count++;//计算number一共有几位
    }
    //step2
}


🍇step2:计算每个位上的数字的N次幂之和

//接着上面的 "//step2"
int sum = 0;
num = number;//在上一个while循环中num最终为0,这里重新令num = number
    while(num)
    {  
        int tem = 0;
        tem = num%10;
        sum += pow(tem,count);//pow函数→求每一位的N次方
        num /= 10;
    }
    //step3


🍇step3:return

if(number == sum)
        return 1;
    else
        return 0;


🍇函数的实现

int narcissistic( int number )
{
    int num = number;
    int count = 0,sum = 0;
    while(num)
    {
        num/=10;
        count++;
    }
    num = number;
    while(num)
    {  
        int tem = 0;
        tem = num%10;
        sum += pow(tem,count);
        num /= 10;
    }
     if(number == sum)
        return 1;
    else
        return 0;
}


🍈函数2:void PrintN( int m, int n )

🍊函数的实现

打印开区间(m, n)内所有的水仙花数:循环从m+1到n-1


注意:要求每个数字占一行

void PrintN( int m, int n )
{
    for(int i = m+1; i<n; i++)
    {
        int fl = narcissistic( i );
        if(fl == 1)
            printf("%d\n",i);//记得换行 
    }
}
相关文章
|
9小时前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
9小时前
|
存储 编译器 C语言
C语言:字符函数 & 字符串函数 & 内存函数
C语言:字符函数 & 字符串函数 & 内存函数
15 2
|
9小时前
|
存储 算法 C语言
C语言刷题~Leetcode与牛客网简单题
C语言刷题~Leetcode与牛客网简单题
|
9小时前
|
缓存 安全 编译器
【C 言专栏】C 语言函数的高效编程技巧
【5月更文挑战第1天】本文探讨了C语言中函数的高效编程技巧,包括函数的定义与作用(如代码复用和提高可读性)、设计原则(单一职责和接口简洁)、参数传递方式(值传递、指针传递和引用传递)、返回值管理、调用约定、嵌套与递归调用,以及函数优化技巧和常见错误避免。掌握这些技巧能提升C语言代码的质量和效率。
【C 言专栏】C 语言函数的高效编程技巧
|
9小时前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
9小时前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
9小时前
|
C语言
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
|
9小时前
|
C语言
【C语言必刷题】6. 水仙花数
【C语言必刷题】6. 水仙花数
|
9小时前
|
安全 C语言
【C语言】strcpy与strncpy函数的使用和模拟实现
【C语言】strcpy与strncpy函数的使用和模拟实现
5 0
|
9小时前
|
C语言
【C语言】字符分类函数与字符转换函数
【C语言】字符分类函数与字符转换函数
11 1