博客
关于我
c语言自定义输出小数点位数_C语言编程经典案例,三种方法求水仙花数(附完整代码)...
阅读量:495 次
发布时间:2019-03-07

本文共 1855 字,大约阅读时间需要 6 分钟。

C语言是面向过程的,而C++是面向对象的

C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

bb062b5feb572068edc07a8fce0ff753.png

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

1a22ebe98a25fe29c28c1d35a0880af4.png

原题

解题思路
初始化i=100。
①取i的各位数,百位a,十位b,个位c。
②判断i==a∧3+b∧3+c∧3 是否成立
③如果成立则输出,否则不输出。
④i=i+1,当i小于1000重复①,否则结束。关键算法:取任意三位数的各位数

c37c9f7914e0c1bd9b1acb79195894f2.png

算法一:除减法

①将数除以100,由整型数据特点,小数点后被忽略,取得百位a。
②该数减去a * 100,除以10,得到十位b。
③该数减去a * 100和b * 10即得个位c。
代码实现
a = i / 100;b = (i - 100 * a) / 10;c = i - 100 * a - 10 * b;
完整代码:
void NarcissusNumber(int m) { int a; //三位数的百位 int b; //三位数的十位 int c; //三位数的个位 int d; //各位数字立方和与数的差值 a = m / 100; b = (m - 100 * a) / 10; c = m - 100 * a - 10 * b; d = a*a*a + b*b*b + c*c*c - m; if (d==0) //各位数字立方和与数相等,输出 { printf("%d ", m); }}
好处:易理解,菜鸟基本都会这算法。
不足:当数字位数较大时,减法操作需要进行多次,比较代码比较冗长。

72af5486906f4321c7783a85b9619302.png

算法二:除余法

①将数除以10取余数得个位c
②将数除以10后再与10取余得到十位b
③将该数除以100再与10取余得到百位a
代码实现
int c = n % 10; //个位int b = n / 10 % 10; //十位int a = n / 100 % 10; //百位,或者写int c = n / 100;
这种算法对我们菜鸟来说很新奇,难以想到。
即使这样,该算法也不比算法一简洁,所以需要改进。算法二改进
①将数除以10取余数得个位c,将该数除以10
②重复①得到十位b
③继续重复①得到百位a
代码实现
int sum = 0; //求和变量int temp=i; //存放数值i,防被覆盖而丢失int rem; //余数for (int j = 0; j < 3; j++)//第一次循环得到个位立方和,第二次循环得到个位与十位立方和...{ rem = temp % 10; temp /= 10; sum += rem * rem*rem;}
这算法简便,效率较高
有点难懂
完整代码
//输出水仙花void NarcissusNumber(){ for (int i = 100; i < 1000; i++) { int sum = 0; int temp=i; int rem; for (int j = 0; j < 3; j++) { rem = temp % 10; temp /= 10; sum += rem * rem*rem; } if (sum == i) { printf("%d ", i); } }}

微信公众号:程序员巴卫

创一个小群,供大家学习交流聊天

如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀。

我偶尔也会直播给大家手把手编程

也希望大家对学C++能够持之以恒

如果你想要学好C++最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:大牛小白C++组织 可以点击编程二字,可以直达

转载地址:http://xqvcz.baihongyu.com/

你可能感兴趣的文章
Nginx配置负载均衡到后台网关集群
查看>>
Nginx配置限流,技能拉满!
查看>>
Nginx配置静态代理/静态资源映射时root与alias的区别,带前缀映射用alias
查看>>
Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
查看>>
Nginx:NginxConfig可视化配置工具安装
查看>>
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>