c语言--使用函数输出水仙花数

这篇具有很好参考价值的文章主要介绍了c语言--使用函数输出水仙花数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

函数接口定义 

1、int narcissistic( int number );

2、void PrintN( int m, int n );

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

函数  PrintN 则打印开区间  (mn)  内所有的水仙花数,每个数字占一行。 

题目保证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\n", m);
    PrintN(m, n);
    if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

153 400

 输出样例:

153 is a narcissistic number

370

371

文章目录

  • 1、怎样得出    “每个数的位数”

  • 2、怎样得到    “各个位数的数字”

    PTA 显示如下:

c语言--使用函数输出水仙花数

方法一、(易理解)

#include <stdio.h>
#include <math.h>
int narcissistic(int number );
void PrintN(int m,int n);
int judge(int i);
int sum(int number);
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;
}
int sum(int number)
{
	int sum = 0;
	int n = judge(number);
	int cnt = n;
	while(n--){
        int temp;
        temp = number % 10;//计算最后一位的数字;
        number/=10;//去掉最后一位的数字;
        sum += pow(temp,cnt);
        }
        return sum;
}
int narcissistic(int number){
	int m;
    if(sum(number) == number){
        m = 1;
    }else if(sum(number)!=number){
        m = 0;
    }
    return m;
}
void PrintN(int m,int n)
{
//改进:去掉i作为循环
    for(m=m+1;m<n;m++){
            if(sum(m) == m){
            printf("%d\n",m);
            }
        }
}

int judge(int i)//判断每个数的位数
{
    int count = 0;
    while(i!=0){
        count++;
        i=i/10;
    }
    return count;
}

方法二、(代码优化)

#include <stdio.h>
#include <math.h>
int narcissistic(int number );
void PrintN(int m,int n);
int sum(int number);
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;
}

int sum(int number)
{
    int n = 0;//判断每个数的位数
    int a = number;
	int sum = 0;
	while(a){
        n++;
        a/=10;
	}
	int cnt = n;
	    while(n--){
        sum+=pow(number%10,cnt);
        number /=10;
        }
        return sum;
}
int narcissistic(int number)
{
    int y;
        if(sum(number) == number){
        	y = 1;
		}else
		{
			y = 0;
		}
        return y;
}
void PrintN(int m,int n)
{
    for(m=m+1;m<n;m++){
            if(sum(m)==m){
            printf("%d\n",m);
            }
        }
}

主要突破的知识:

1、每个数的位数

代码如下:

#include <stdio.h>
int main()
{
    int number;
    int count = 0;//计数器
    scanf("%d",&number);
    while(number!=0)
    {
        count++;
        number/=10;//除去数的最后一位数
    }
    printf("%d",count);
    return 0;
}

c语言--使用函数输出水仙花数

二、输出各个位的数字!

代码如下:

#include <stdio.h>
#include <math.h>
int main()
{
    int number;
    int count = 0;
    scanf("%d",&number);
    int a = number;
    while(a!=0)
    {
        count++;
        a/=10;
    }
    while(count--)
    {
	  int temp = number%10;
        number/=10;
        printf("%d\n",temp);//输出每位的数字
    }                
    return 0;
}

总结

求水仙花数需要用到函数、求位数和位数的数字,还考虑到函数之间的灵活变动,需要自己去慢慢理解。慢慢实践,一切都会顺利的!文章来源地址https://www.toymoban.com/news/detail-467588.html

到了这里,关于c语言--使用函数输出水仙花数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言 打印0~100000之内的水仙花数

    已知: //求出0~100000之间的所有“水仙花数”并输出。 //水仙花数”是指一个n位数,其各位数字的n次方之和确好 // 等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。

    2024年01月25日
    浏览(43)
  • C语言详解-关于水仙花数的算法

    所谓\\\"水仙花数\\\"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个\\\"水仙花数\\\",因为153=1的三次方+5的三次方+3的三次方。 程序分析: 利用for循环控制100-999个数,每个数分解出个位,十位,百位。         x=i%10;        //X表示个位,如153%10的余数是3.  

    2024年02月08日
    浏览(42)
  • 用python制作水仙花

    “水仙花数”是指一个三位正整数,其各位数字立方的和等于该数本身。 例如:153是一个“水仙花数”,因为1+5+3等于153。 编程实现: 给定一个正整数N,判断100到N之间有多少个“水仙花数”。 输入描述:输入一个正整数N(100N1000) 输出描述;输出100到N之间(包含100和N)有多少个“水

    2024年02月16日
    浏览(36)
  • 水仙花数(Java解法)

            水仙花数是指一个 3 位数,它每位上的数字的 3 次幂之和等于它本身(例如: 1³ + 5³+ 3³ = 153 ),水仙花数的取值范围在 100~1000 之间。         这个题需要把所以的数字都拿到,然后与 每位上的数字的 3 次幂之和它本身做判断后进行输出。首先,需要使用取余

    2024年02月02日
    浏览(40)
  • Python实现 — —水仙花数(一问多解)

    在这次实例分享之前先祝自己生日快乐\\٩( ‘ω’ )و //// 水仙花数(Narcissistic number)是指一个三位整数,其各位数字的3次方和等于该数本身。例如:abc是一个\\\"水仙花数\\\",则:a的3次方+b的3次方+c的3次方 = abc。 for循环 在Python中通过range函数可以生成指定范围的整数

    2024年02月15日
    浏览(40)
  • Python每日一练——第1天:水仙花数

    前言 📢📢 Python每日一练来啦,本文已收录于: 《Python每日一练》专栏 此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,每周持续更新中,欢迎免费订阅!!! 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花

    2024年02月03日
    浏览(39)
  • Python小案例1:水仙花数及其自幂数

    用Python实现,水仙花数 水仙花 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身。 ​ 自幂数 是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。 例如:1 3 + 5 3 + 3 3 = 153。

    2024年02月01日
    浏览(59)
  • 「题解」关于sizeof陷阱,无符号整形,变种水仙花数

    🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 让我们看一下这段代码: ​​​​​​​ 大家会认为结果是多少呢?结果会是\\\"y is greater\\\"?让我们看一下运行结果吧  为什么会出现这种结果呢,由于x是有符号数-1,内存中是全1,当有符号的

    2024年02月02日
    浏览(42)
  • 【华为OD机试】水仙花数Ⅰ【2023 B卷|100分】

    【 华为OD机试】-真题 !!点这里!! 【 华为OD机试】真题考点分类 !!点这里  !! 题目描述 所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。 例如153是水仙花数,153是一个3位数,并且153 = 1^3 + 5^3 + 3^3。 输入描述 第一行输入一个整数n,表示一个n位的

    2024年02月07日
    浏览(39)
  • C/C++每日一练(20230512) 成绩打印、补齐数组、水仙花数

    目录 1. 成绩打印  ※ 2. 按要求补齐数组  🌟🌟🌟 3. 水仙花数  ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 一个班有10个同学,通过键盘输入成绩, 并打印输出,每行输出5个同学的成绩。并求出平均成绩,最

    2024年02月04日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包