什么是水仙花数:

指一个n位数,其各位数字的n次方之和确好等于该数本身

例如:   1         1^1=1;

           153      3^3+5^3+1^3=153;

问题:求0~100000之间的水仙花数,并打印出来

看题目,找突破口:

1)0~100000  我可以想到用循环来判断0~10000间的数字

2)由栗子可知:我们需要求数字是几位

3)要用到次方,则我们需要引用math函数库里的pow函数

4)求和,依旧要使用循环


那么开始写代码,走一步思考一步:

#include <stdio.h>
#include <math.h>int main()
{int i = 0;for (i = 0; i <= 100000; i++){int n = 1;                // n 为位数int z = i;                //经过while后i改变,i未变前赋值给z,代替原值i进行后面的计算while (z / 10 != 0)          //这里刚开始直接用i进行运算  死循环{n++;z=z / 10;                //用i运算的话,当i=10时 i=i/10 直接等于1 ,死循环,所以用变量z代替i}if (i == Sum(i, n))        //判断和是否等于原值printf("%d ",i);}return 0;
}

看代码一定要看后面的注释,这里要注意的点:

用了n代表位数,求n时while循环会改变i值,不利于后面的计算,所以用z代替

设置函数Sum来计算和,函数代码如下:

int Sum(int x, int y)               //x接收i,y接收n
{int k = 0;int num = 0;int sum = 0;for (k=0;k<y;k++)             //循环求和{num = pow(x % 10, y);      //取出每一位的数字,求次方sum += num;                    //累加求和x/=10;                  //去掉最低位的数字}return sum;               //返回和
}

完整代码如下:

#include <stdio.h>
#include <math.h>int Sum(int x, int y)
{int k = 0;int num = 0;int sum = 0;for (k=0;k<y;k++){num = pow(x % 10, y);sum += num;x/=10;}return sum;
}int main()
{int i = 0;for (i = 0; i <= 100000; i++){int n = 1;int z = i;while (z / 10 != 0){n++;z=z / 10; }if (i == Sum(i, n))printf("%d ",i);}return 0;
}

运行结果:


这样找水仙花数就完成了,有更好方法的伙伴可以评论区交流噢

C语言——笨方法找“水仙花数”,步步分析相关推荐

  1. 找出m到n水仙花数c语言程序设计,《C语言课程设计输出水仙花数》.doc

    <C语言课程设计输出水仙花数> C语言程序设计课程设计 评语: 考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100) 专 业: 班 级: 姓 名: 学 号: 指 ...

  2. C++中如何读取一个数的位数_C语言编写程序求水仙花数

    C语言编写程序求水仙花数 水仙花数是一个数学问题,其实质是一个三位数,个位数的立方加十位数的立方加百位数的立方之和等于这个三位数本身.例如153=1*1*1+5*5*5+3*3*3,即153=1+12 ...

  3. c语言上机报告之水仙花数,C语言上机报告之水仙花数..doc

    C语言上机报告之水仙花数. C语言程序设计 上机报告 课题名称:水仙花数的算法 院 (系):工程学院 专业班 级: 052126 学生姓名: 喻培 学 号: 20121004040 指导教师: 熊慕舟 ...

  4. c语言编程3个数的立方和,用C语言编写:输出所有水仙花数.所谓水仙花数是指一个3位数.其各位数字立方和等于该数本身....

    用C语言编写:输出所有水仙花数.所谓水仙花数是指一个3位数.其各位数字立方和等于该数本身. 來源:互聯網  2010-05-07 17:33:03  評論 分類: 電腦/網絡 >> 程序設 ...

  5. C语言经典题目 水仙花数,C语言经典练习题:水仙花数

    废话不说直接进入正题:传说中的水仙花数就是一个三位数的各个位数的三次方之和就是这个数本身例如153=1*1*1+5*5*5+3*3*3. 好,开始解题:首先,题中已经说了水仙花数是一个三位数,也就是说 ...

  6. python找水仙花数_Python一句代码实现找出所有水仙花数的方法

    水仙花数是指一个 3位正整数,它的每个位上的数字的 3 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 下面用一句代码实现找出所有的水仙花数: 方法一: >>> ...

  7. 「题目讲解」C语言 使用函数判断水仙花数 求范围内的所有水仙花数

    题目内容 写两个函数 函数narcissistic,传入一个值,用于判断输入的数是不是水仙花数,是水仙花数返回1,否则返回0 函数PrintN,传入两个值,求开区间范围内所有水仙花数 注1:题目中保证 ...

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

    文章目录 题目描述 思路 结果 题目描述 水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身.例如:153 = 13+53+ 33.本题要求编写程序,计算所有N位水 ...

  9. C语言编程练习之水仙花数

    题目:    输出所有的"水仙花数","水仙花数"是指一个三位数,它的各位数字立方和等于该数 本身.例如:153是一个"水仙花数",153= ...

最新文章

  1. ICLR 2020 九篇满分论文!!!
  2. 虚幻4的关卡动态加载机制
  3. CreateEvent创建事件对象
  4. java中的取模_Java 中的取模和取余
  5. 还在对Matplotlib繁琐的图层设置感到烦恼!?快来看看这个Python绘图工具包吧
  6. spring+log4j
  7. java目录实用工具_JAVA 创建文件和文件夹,删除文件和文件夹的实用工具
  8. shell处理curl返回数据_linux shell中curl 发送post请求json格式问题的处理方法
  9. my sql 触发器_My SQLServer 触发器
  10. 抢火车票,出行必备程序(12306bypass)--可以抛掉同程什么的抢票软件了
  11. 几本开关电源书籍 pdf格式 (来源中国电子开发网)
  12. VUE微信开放平台实现网站微信登陆
  13. miniftp服务器技术文档,ftp服务器 mini
  14. MCAL系列介绍04-GPT
  15. C语言输入三角形三条边边长 算三角形面积
  16. 分布积分详解(lnx积分)
  17. Serverless 架构的 N 种可能,你 Pick 谁?
  18. ManjaroLinux扩展显示器,连接显示器。
  19. 白话——海明校验码及编码过程
  20. 北美电影票房Top10-2019年12月20日:《星战9》1.77亿不及预期

热门文章

  1. 《视频解密》中文版(第四版) 第七章 数字视频处理(第一部分)
  2. 华为关闭telnet命令_华为s5720配置telnet命令详解
  3. 生活片段(1)-短暂的深圳实习时光
  4. 基于springboot的学生管理系统
  5. 信用社pb通用记账_2018年农村信用社高频考点:会计账户
  6. 老司机都懂的x件事,一般人我不告诉他
  7. 微信突发闪退 BUG,罪魁祸首竟是一张神奇的二维码图片
  8. OSPF中双ASBR重发布5类LSA问题
  9. only女装2011春款 only2011新款春装 only女装官网专卖
  10. 计算机win7如何连接wifi网络,win7怎么连wifi,win7电脑连不上网