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

article/2025/7/2 19:02:09

函数接口定义 

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 显示如下:

方法一、(易理解)

#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;
}

二、输出各个位的数字!

代码如下:

#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;
}

总结

求水仙花数需要用到函数、求位数和位数的数字,还考虑到函数之间的灵活变动,需要自己去慢慢理解。慢慢实践,一切都会顺利的!


http://chatgpt.dhexx.cn/article/pqwaBqaK.shtml

相关文章

【C语言程序设计】C语言水仙花数,阿姆斯特朗数!

阿姆斯特朗数也就是俗称的水仙花数&#xff0c;是指一个三位数&#xff0c;其各位数字的立方和等于该数本身。 例如&#xff1a;153135333&#xff0c;所以 153 就是一个水仙花数。 求出所有的水仙花数。 算法思想 对于阿姆斯特朗数问题&#xff0c;根据水仙花数的定义&#x…

C语言编程练习:水仙花数

文章目录 题目描述思路结果 题目描述 水仙花数是指一个N位正整数(N>3)&#xff0c;它的每个位上的数字的N次幂之和等于它本身。例如:153 1353 33。本题要求编写程序&#xff0c;计算所有N位水仙花数。 输入格式: 输入在一行中给出一个正整数N(3<N<7 )。 输出格式: …

C语言:水仙花数(daffodil),求出三位数中所有水仙花数

水仙花数&#xff08;C语言&#xff09; 文章目录 水仙花数&#xff08;C语言&#xff09;前言一、题目二、解题思路代码运行结果 总结***根据水仙花数满足的条件找出需要求的对象&#xff0c;这里是各位上的位数。*** 前言 刘汝佳算法书《算法竞赛入门经典》第二章上机练习第…

C语言输出三位数的水仙花数

从100-999中找出符合条件的水仙花数 文章目录 从100-999中找出符合条件的水仙花数前言一、水仙花数是什么&#xff1f;二、C语言实现输出水仙花数1.解题思路2.实现过程 总结 前言 提示&#xff1a;找出符合条件的水仙花数&#xff0c;我们需要弄明白什么叫水仙花数&#xff0c…

c语言设计程序计算水仙花数,C语言水仙花数算法

打印出所有的“水仙花数”&#xff0c; 所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方5的三次方3的三次方。 1.程序分析&#xff1a;利用for循环控制100-999个数&#xff0c;每…

水仙花数的实现(C语言)

问题描述&#xff1a;一个三位数&#xff0c;百位的立方加上十位的立方加个位的立方对于这个数本身。 即&#xff1a;abc a^3b^3c^3; 例如&#xff1a;153 1^35^33^3 求出所有的水仙花数&#xff1a; 这是一个将一个三位数的百位&#xff0c;十位&#xff0c;个位提出来&…

C语言输出所有的水仙花数

输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数&#xff0c;其各位数字立方之和等于该数本身。 例如&#xff0c;153是一个水仙花数&#xff0c;因为15315&#xff0b;3 解题思路&#xff1a;水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别拆分&#…

C语言实现求水仙花数

水仙花数是指一个数各位数字的立方和等于该数本身。 例如&#xff1a;153 13 53 33 求100–1000内的水仙花数。 代码如下&#xff1a; #include <stdio.h> #include <math.h>int main () {int i,j,k,n;printf("100-1000中的水仙花数字有:\n");for…

【必懂】C语言水仙花数题解

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 前言 本专栏内容将会以轻松、简单的方式完成习题的解答&#xff0c;用…

C语言 水仙花数两种算法

两种方法&#xff1a;普通解法和巧妙解法 题目&#xff1a;打印出所有的“水仙花数”&#xff0c;所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。 例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方&#xff0b;5的三次方&#…

C语言编写水仙花数

C语言输出100~1000之间的水仙花数 水仙花数是什么&#xff1a; 水仙花数是指一个 3 位数&#xff0c;它的每个位上的数字的 3次幂之和等于它本身&#xff08;例如&#xff1a;1^3 5^3 3^3 153&#xff09;。 代码如下&#xff1a; #include<stdio.h> void main() { …

C语言求“水仙花”数(详细)

问题分析 “水仙花数”是指一个三位数&#xff0c;其每位数字的立方和等于该数本身。例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方。 基于此&#xff0c;利用for循环控制100-999个数&#xff0c;每个数分…

C语言之水仙花数

题目要求&#xff1a; 水仙花数是指一个N位正整数(N>3)&#xff0c;它的每一位上的数字的N次幂之和等于它本身。例如&#xff1a;153 135333。本题要求编写程序&#xff0c;计算所有N位水仙花数。 输入格式&#xff1a; 输入在一行中给出一个正整数N(3<N<7)。 输出格…

C语言计算水仙花数的两种方法

水仙花数指的是一个n位数&#xff08;n>3&#xff09;,他的每一个位上的数字的n次幂之和等于他的本身&#xff0c;求出所有的三位数的水仙花数。 方法一&#xff1a; 先遍历100~999然后拆出每一个数的个位、十位、百位&#xff0c;最后求三次幂之和是否为此数 #include<…

大数据中台

数据中台的由来 数据中台最早是阿里提出的&#xff0c;但真正火起来是2018 年&#xff0c;我们能感受到行业文章谈论数据中台的越来越多。大量的互联网、非互联网公司都开始建设数据中台。为什么很多公司开始建设数据中台&#xff1f;尽管数据中台的文章很多&#xff0c;但是一…

浅谈大型互联网企业入侵检测及防护策略

前言 如何知道自己所在的企业是否被入侵了&#xff1f;是没人来“黑”&#xff0c;还是因自身感知能力不足&#xff0c;暂时还无法发现&#xff1f;其实&#xff0c;入侵检测是每一个大型互联网企业都要面对的严峻挑战。价值越高的公司&#xff0c;面临入侵的威胁也越大&#…

国家级专精特新小巨人企业是什么?

什么是国家级专精特新小巨人企业 首先需要了解什么是专精特新&#xff0c; 专-是指专业化&#xff0c;采用专项技术或工艺通过专业化生产制造的专用性强、专业特点明显、市场专业性强的产品。 精-是指精细化&#xff0c;采用先进适用技术或工艺&#xff0c;按照精益求精的理念…

什么是小规模纳税人、小型微利企业、小微企业

什么是小规模纳税人、小型微利企业、小微企业?这下终于搞明白了.自今年不断的发布减税降费的优惠政策以来&#xff0c;很多财务人员都将小微企业、小型微利企业、小规模纳税人的概念混淆&#xff0c;以至于无法合理享受相应的优惠政策。 一、首先&#xff0c;我们从概念上区分…

中小企业 数量 e-mail_【深圳】市中小企业服务局关于发布2021年深圳市工业设计发展扶持计划工业设计走进中小微制造企业扶持项目申请指南的通知...

点击上方蓝字关注我哦 申请指南 一、支持方向重点支持中小微制造企业为 提升产品差异化、增强品牌个性化&#xff0c; 向专业工业设计企业购买工业设计服务的项目。 二、支持数量、方式及标准方式 (一)支持数量&#xff1a;有数量限制&#xff0c;受年度工业设计业发展专项资金…