C程序设计:百钱百鸡问题.doc

上传人:PIYPING 文档编号:10894053 上传时间:2021-06-11 格式:DOC 页数:2 大小:22KB
返回 下载 相关 举报
C程序设计:百钱百鸡问题.doc_第1页
第1页 / 共2页
C程序设计:百钱百鸡问题.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《C程序设计:百钱百鸡问题.doc》由会员分享,可在线阅读,更多相关《C程序设计:百钱百鸡问题.doc(2页珍藏版)》请在三一文库上搜索。

1、百钱百鸡问题中国古代数学家张丘建在他的算经中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?*题目分析与算法设计设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在020之间;同理,y的取值范围在033之间,可得到下面的不定方程:5x+3y+z/3=100x+y+z=100所以此问题可归结为求这个不定方程的整数解。由程序设计实现不定方程的求解与手工计算不同。在分析确定方程中未知数变化范围的前提下,可通过对未知数可变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。*程序说

2、明与注释#includevoid main()int x,y,z,j=0;printf(Folleing are possible plans to buy 100 fowls with 100 Yuan.n);for(x=0;x=20;x+) /*外层循环控制鸡翁数*/for(y=0;y=33;y+) /*内层循环控制鸡母数y在033变化*/z=100-x-y; /*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/if(z%3=0&5*x+3*y+z/3=100)/*验证取z值的合理性及得到一组解的合理性*/printf(%2d:cock=%2d hen=%2d chicken=%2dn

3、,+j,x,y,z);*运行结果Follwing are possible plans to buy 100 fowls with 100 Yuan.1:cock=0 hen=25 chicken=752:cock=4 hen=18 chicken=783:cock=8 hen=11 chicken=814:cock=12 hen=4 chicken=84*总是的进一步讨论这类求解不定方程总理的实现,各层循环的控制变量直接与方程未知数有关,且采用对未知数的取值范上穷举和组合的方法来复盖可能得到的全部各组解。能否根据题意更合理的设置循环控制条件来减少这种穷举和组合的次数,提高程序的执行效率,请读

4、者考虑。百钱买百鸡中国古代数学家著有一本古典数学问题的算经,其中记载的问题在当时都是一些有趣的难题。其中最著名的“百钱百鸡”问题叙述如下: “鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?” 这个问题翻译成白话文就是:“一只公鸡值五文钱;一只母鸡值三文钱;三只小鸡值一文钱;请问用一百文钱买一百只鸡,公鸡、母鸡和小鸡各有多少只?” 我们假设公鸡、母鸡和小鸡的个数分别为x,y,z,那么买公鸡的钱数为5x,买母鸡的钱数为3y,买小鸡的钱数为z/3;再由题意,x,y和z的和为100,因此我们可以得到该问题的数学模型如下:5x+3y+z/3=100x+y+z=100因为

5、鸡的个数只能是整数,所以问题可以归结为求这个不定方程的整数解。不定方程的求解途径一般是打出各变量的数值汇聚围,再用穷举法找到所有可能的解,在本题中,如果100文钱全部买公鸡,最多买20只,因此x的取值在020之间;同理y的取值在033之间。得到了变量x和y的取值汇聚围后,昝用C语言的二重for循环,让x和y 分别作为外层和内层循环的循环变量,我们可以让计算机穷举所有可能的情况,从而找到正确的解。 代码如下: #includemain() int x,y,z,j=0; printf(Possible solutions to buy 100 fowls whith 100 yuann); for

6、(x=0;x=20;x+) /*公鸡的数目作为外层循环的循环变量*/ for(y=0;y=33;y+) /*母鸡的数目作为内层循环的循环变量*/ z=100-x-y; /*用总鸡数方程计算小鸡的数目*/ if(z%3=0&5*x+3*y+z/3=100) /*如果满足总钱数,找到合理的解*/ printf(2d:cock=%-2d hen=%-2d chicken=%-2dn,+j,x,y,z); 运行结果:1:cock=0 hen=25 chicken=752:cock=4 hen=18 chicken=783:cock=8 hen=11 chicken=814:cock=12 hen=4 chicken=84

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1