用计算机C语言编程解古代数学题
2015-11-11刘顺清
刘顺清
(唐山工业职业技术学院,河北 唐山 063020)
C语言广泛的应用于基础软件、桌面系统、网络通信、音频视频、游戏娱乐等诸多领域。是世界上使用最广泛的编程语言之一。随着物联网技术的发展,C/C++技术在3G网络通信 (移动网络、互联网、Zigbee等专用网络)、多媒体处理、智能识别等领域得到了进一步的推动和发展。显然学好C语言是十分必要的,但是C语言编程部分在教学中是一个难点,学习起来很枯燥,知识综合应用性强,如何让学生充份应用好C语言的特点和各种命令的使用方法,科学合理的编写出最佳程序,是每一位C语言教师的一个教学难点。我本人在教学中在教学过程中选择了一些古代有趣的数学题目,通过编程来解题,把枯燥的教学内容变得生致动有趣,这样即培养了学生们的学习兴趣,又让学生们能够感受到古人的聪明智慧,即调动了学生的学习积极性、主动性,又提高了教学效果。
1 百鸡百钱
“百鸡问题”出自我国古代数学家张丘建在《算经》一书,原题是:“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”下面先看用数学方法解答如下:
解:鸡翁一值钱五:公鸡五文一只,而现在百钱买百鸡(100文钱买鸡),所以公鸡数量要最多为20。
设母鸡X只,公鸡Y只,小鸡100-X-Y只,所以 5Y+3X+(100-X-Y)/3=100
且X,Y为整数,所以可以得出正确答案,有三种情况:
(1)公鸡 4只,母鸡 18只,小鸡 78只
(2)公鸡 8只,母鸡 11只,小鸡 81只
(3)公鸡 12只,母鸡 4只,小鸡 84只
大家都知道这种算法难度较大,如果我们利用C语言编程来解这个问题,我们只需编写好程序,在计算的上运行一下,结果就出来了。而且不管运行多少次,多么复杂,计算机都会很快地给出答案。
此问题可归结为求不定方程的整数解。在分析确定方程中的未知数变化范围,可通过对未知数可变范围的查找,验证方程在什么情况下成立,从而来求得到相应的解。
2 百马百瓦
题目是“一百马,一百瓦,大马一拖三,中马一驮二,小马二拖一。”最后不剩马和瓦,各有多少大马、中马、小马
解:设大马、中马、小马各 X、Y、Z 匹,可得
X+Y+Z=100
3X+2Y+1/2Z=100
把第二个方程代入第一个方程可得 5X+3Y=100
进一步通过分析求解
用C语言编程如下:
中国古代数学著作中有些数学题目非常好,充份体现了中国古人的聪明智慧。以上只是其中的两个典型例子,我们借助现代的计算机C语言编程求解,其中的数学题中的手工运算变成了计算机自动完成,时间节省了,正确率又得到了保证。通过上面的C语言编程在计算机上求解,起到了事半功倍的作用。如果将程序中数值重新设定后在计算机上运行,马上还可以得到一个新的结果,从而对分析题目,推定可能的多种结果或扩大范围搜索时就显得十分方便。这样我们将古人智慧和现代计算机编程巧妙地融和,用之于课堂教学,可以大大激发学生们对计算机编程的兴趣,同时也可以让学生们在学习过程中感发学生的学习主动性、积极性,使枯燥的计算机编程变得生动有趣。
[1]王新.“Visual FoxPro程序设计”案例教学实践之功效分析[J].长春理工大学学报,2011(6).
[2]潭浩强.C语言程序设计 [M].3版.北京:清华大学出版社,2014,9.