龙空技术网

C语言入门经典例题:求100~999的水仙花数

C语言编程学习 612

前言:

现时各位老铁们对“c语言求幂次”大约比较看重,看官们都想要学习一些“c语言求幂次”的相关文章。那么小编同时在网上搜集了一些关于“c语言求幂次””的相关知识,希望小伙伴们能喜欢,看官们快快来了解一下吧!

​C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。

所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“

设计这个概念已经被融入到C++之中

”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

​例如:

153=1*1*1+5*5*5+3*3*3 153为三位数,它的每个数字的三次方之和等于153。

要求:用C语言实现求出100~999之间的所有水仙花数。

要验证一个三位数是不是水仙花数很简单,只要把它的三个数字的三次幂加起来,看看是否等于它本身即可。所以问题的关键是如何用C语言得到一个三位数的三个数字。

我们知道任意一个三位数,都等于它的百位数乘以100,加上它的十位数乘以10,再加上它的个位数乘以1 。比如:567=5*100+6*10+7*1 。

根据这一特性,我们可以得出,一个三位数的百位数就等于该数除以100的整数部分(567除以100的整数部分为5,即它的百位数是5),而十位数等于该数减去百位数乘以100再除以10的整数部分((567-5*100)再除以10的整数部分等于6,即该数十位数是6),而个位数就等于该数减去百位数乘以100,再减去十位数乘以10(567-5*100-6*10=7,个位数为7)。

代码中关键部分做了详细的注释,代码中的i++等价于i=i+1。编写在visualstudio中的运行结果如下:

我们可以得知,100~999之间的水仙花数为:153,370,371,407

如果要求1000~9999之间的水仙花数呢?原理是一样的,依次得到四位数的千位数、百位数、十位数和个位数即可。自己动手试一试吧!

标签: #c语言求幂次