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

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

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

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

​C和C++的区别:

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

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

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

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语言经典算法:打印“水仙花”数,你知道什么是水仙花数吗?

题目题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位

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

数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方

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

+5的三次方+3的三次方。

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

水仙花:和水仙花数并没有什么关系

小知识水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。

其他位数的自幂数名字:

一位自幂数:独身数

两位自幂数:没有

三位自幂数:水仙花数

四位自幂数:四叶玫瑰数

五位自幂数:五角星数

六位自幂数:六合数

七位自幂数:北斗七星数

八位自幂数:八仙数

九位自幂数:九九重阳数

十位自幂数:十全十美数

常见水仙花数

三位的水仙花数共有4个:153,370,371,407;

四位的四叶玫瑰数共有3个:1634,8208,9474;

五位的五角星数共有3个:54748,92727,93084;

六位的六合数只有1个:548834;

七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;

八位的八仙花数共有3个:24678050,24678051,88593477

……

题目分析因为我们只求三位数的水仙花数,所以关键点就是求出一个三位数的个位、十位、百位。利用for循环控制100-999个数,每个数分解出个位,十位,百位。

比如一个数153,个位可以用取模:153%10=3得到;

十位可以先除10再对10取模:153/10%10=5;

百位直接除100即可:153/100=1。

代码如下:

好了,欢迎大家提供更好的方法~~~

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6594.html

C语言中什么是变量?如何定义变量?

程序员选择编程语言的3大建议,选择C语言还是Python?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部