理论教育 C语言程序设计|标准库函数的功能与编程效率

C语言程序设计|标准库函数的功能与编程效率

时间:2023-10-20 理论教育 版权反馈
【摘要】:有了这些C语言的标准库函数编程人员既加强了所编程序的功能,又提高了编程效率。但在实际编程中,仅有C语言的标准库函数往往是不够的。图5-1函数调用对应关系图总的程序框架化整为零,将一个大的计算任务划分为若干个小任务。

C语言程序设计|标准库函数的功能与编程效率

【案例导读】斐波那契,黄金比例

历史上有一个有名的关于兔子的问题:假设有一对兔子,长两个月它们就算长大成年了。然后每个月都会生出1对兔子,生下来的兔子也都是长两个月就算成年,然后每个月也都会生出1对兔子了。这里假设兔子不会死,每次都是只生1对兔子。

第一个月:只有1对小兔子;

第二个月:小兔子还没长成年,还是只有1对兔子;

第三个月:兔子长成年了,同时生了1对小兔子,因此有两对兔子;

第四个月:成年兔子又生了1对兔子,加上自己及上月生的小兔子,共有3对兔子;

第五个月:成年兔子又生了1对兔子,第三月生的小兔子现在已经长成年了且生了1对兔子,加上本身两只成年兔子及上月生的小兔子,共5对兔子。

这样过了一年之后,会有多少对兔子了呢?

【案例分析】

我们可以把这些兔子的数量以对为单位列出数字就能得到一组数字:1,1,2,3,5,8,13,21,34,55,89,144,233。所以,过了一年之后,总共会有233对兔子了。那么继续往下呢?

(www.daowen.com)

其实这组数字可以形成一个有规律的数列,我们把这个数列称为“斐波那契数列”。在这个数列中的数字,就被称为“斐波那契数”。这个数列是由意大利数学家斐波那契于1228年首先提出的。这个数列的规律是这样的:它的第一项、第二项是1,而从第三项起每一项都等于它的前两项之和。所以,如果不考虑兔子的死亡问题,我们还可以继续往下算出n年后兔子繁殖的数量。

斐波那契数列不但有趣,还与许多其他的数学概念有关,比如循环小数。但是它最神奇的地方应该是在大自然中的出现。

这个数列与大自然的植物有着极为密切的关系。几乎所有花朵的花瓣数都是来自这个数列中的一项数字;菠萝表皮方块形鳞苞形成两组旋向相反的螺线,它们的条数也必须是这个级数中紧邻的两个数字;还有向日葵花盘……这是为什么呢?答案有点匪夷所思。在1993年,人们对这个古老而重要的数列中的数字进行了研究,给出了一个让人惊讶却无比满意的解释:斐波那契数列中任何相邻的两个数,次第相除,其比率都最为接近0.618这个值,这个数值大家一定都很熟悉,没错,它就是让事物变得美丽的“黄金比例”。所以说,斐波那契数列的神奇是让人惊叹的。

在数学上,斐波那契数列以如下被递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n≥3,n∈N*)在现代物理、准晶体结构化学领域,斐波那契数列都有直接的应用。

前几章内容已涉及函数的概念,例如标准输入函数scanf、标准输出函数printf及其他数学函数。这一类函数称为C语言的标准库函数,是由C语言开发环境事先提供给编程人员的。编程人员实际编程时只需调用这些函数即可,至于这些函数是如何实现功能的编程人员不必知晓。有了这些C语言的标准库函数编程人员既加强了所编程序的功能,又提高了编程效率。但在实际编程中,仅有C语言的标准库函数往往是不够的。例如之前章节讲解过如何编程求解一元二次方程的根,但是如果此时要求10个一元二次方程的根,用之前所学知识来解决则显得比较烦琐,而C语言的标准库函数中也没有对应的函数。那么该如何解决这些问题呢。

在此可以使用自定义函数,将一元二次方程的三个系数,作为函数的三个参数,在函数内部求出相应的根并将结果输出,这样就可以在程序中多次调用此自定义函数,从而依次求出多个一元二次方程的根。事实上,具备一定规模的C语言程序往往由多个函数构成(图5-1),其中必有一个称为main函数的主函数,由main函数来调用其他函数,必要时其他函数还可以再调用另外的函数,同一个函数可以被一个或多个函数调用一次或多次。

图5-1 函数调用对应关系图

总的程序框架化整为零,将一个大的计算任务划分为若干个小任务。这些小任务由函数来完成,这些函数既可以是C的标准库函数,也可以是用户自定义函数。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈