五猴分桃c语言课程设计,c语言程序设计五猴分桃问题实验报告.doc

41528d3028836879cd698677c3999917.gifc语言程序设计五猴分桃问题实验报告.doc

课程设计报告学院、系:吉林大学珠海学院计算机科学与技术系专业名称:软件工程课程设计科目C语言程序课程设计所在班级:10班学生学号:04121010学生姓名:赵学文指导教师:郭晓燕完成时间:2013年3月-5月五猴分桃问题一、设计任务与目标关于五猴分桃问题,已经有很多人思考和尝试建立了一些程序解决。五猴分桃,五只猴子合作摘了很多桃子,感到累了,决定先去睡觉,醒后再分。不知过了多久,第一只猴子醒了,看见其它猴子都没有醒,就把所有桃子分为五堆,发现多一个,就吃了一个,拿走一堆,把剩下的又堆在一起走了。第2只猴子醒来,以为自己是第一个,也是把桃子分为五堆,也是多一个,就吃了一个,拿走一堆,剩下的又堆在一起走了。第3,4,5只猴子都是这样归根究底是一个数学上的问题,但在程序员眼中,解决一个问题,不仅要得出答案,还要以最简便的方法,在最短的时间内得出答案。所以,即使这是一个耳熟能详的问题,不同程序员眼里,也有不同的方法。在复杂之中提取捷径便是我的目的,完成这个设计,能提高自我能动性,并联系数学实际。我希望通过这次设计,增强自我独立能力,并进一步激发我对编程这一方面的兴趣。二、方案设计与论证对于这一个问题,难就难在每次分时都多出1个桃子。这又关系到数学问题,每次少1个,数据不确定,如果从大方面去考虑的话,计算过程确实比较复杂。既然如此,何不从另一个角度入手?我们没必要先去猜这堆桃子到底总共有多少个,大概范围为多少。实际上可以理解桃子里少了4个;于是,我们可借给它们4个再分。为什么?因为尽管多了四个,但每个猴子分得的桃子不会多,也不会少,且每次都可以被5整除。怎样借?方法其实很简单,就是数学的假设问题。我们不妨先设借到4个桃子后的总数为X,原来桃子的总数为Y。则有Y=X-4。第一只猴子分完后的总数为:A=X/5*4;第二只猴子分完后的总数为:B=A/5*4=X/25*16;第三只猴子分完后的总数为:C=B/5*4=X/125*64;第四只猴子分完后的总数为:D=C/5*4=X/625*256;第五只猴子分完后的总数为:E=D/5*4=X/3125*1024;事实上每次分前,猴子的数量都不变。分后,桃子的堆数也不变。于是,各猴子分桃便有上式这样的一种关系。通过分析,很明显,借到4个桃子后,每次分完时总数都是整数。X从第五只猴子分完后至少能被3125整除,所以X至少为3125。猴子至少摘了桃子Y=3125-4=3121;第一只猴子至少分得:3125/5=625;第二只猴子至少分得:2500/5=500;第三只猴子至少分得:2000/5=400;第四只猴子至少分得:1600/5=320;第五只猴子至少分得:1280/5=256;所以最后还剩桃子为1280-256-4=1020个桃子。整个过程看似繁琐复杂,但事实上在添加法后,程序变得更加简明易懂。三、程序框图或流程图,程序清单与调用关系图1Main函数:程序的主函数定义整型变量i,x,y,num1,num2,num3,num4,num5,zi代表程序循环的次数x代表加上5个桃子后摘下桃子的总数y代表摘下桃子的总数num1,num2,num3,num4,num5分别代表连续五个猴子分到的桃子数z代表最后一只猴子拿走桃子后剩下的数量四、全部源程序清单#includevoidmain()/*主函数*/{inti,x,y;intnum1,num2,num3,num4,num5,z;for(i=1;ivoidjisuan(floata,floatb,floatc,floatd)//进行运算符和括号的排列及计算{if(a+b+c+d==24){printf(“%1.0f+%1.0f+%1.0f+%1.0f=24\n“,a,b,c,d);}if(a+b+c-d==24){printf(“%1.0f+%1.0f+%1.0f-%1.0f=24\n“,a,b,c,d);}if(a+b+c*d==24){printf(“%1.0f+%1.0f+%1.0f*%1.0f=24\n“,a,b,c,d);}if(a+(b+c)*d==24){printf(“%1.0f+(%1.0f+%1.0f)*%1.0f=24\n“,a,b,c,d);}if((a+b+c)*d==24){printf(“(%1.0f+%1.0f+%1.0f)*%1.0f=24\n“,a,b,c,d);}if(a+b+c/d==24){printf(“%1.0f+%1.0f+%1.0f/%1.0f=24\n“,a,b,c,d);}if(a+(b+c)/d==24){printf(“%1.0f+(%1.0f+%1.0f)/%1.0f=24\n“,a,b,c,d);}if((a+b+c)/d==24){printf(“(%1.0f+%1.0f+%1.0f)/%1.0f=24\n“,a,b,c,d);}if(a+b-c+d==24){printf(“%1.0f+%1.0f-%1.0f+%1.0f=24\n“,a,b,c,d);}if(a+b-c-d==24){printf(“%1.0f+%1.0f-%1.0f-%1.0f=24\n“,a,b,c,d);}if(a+b-c*d==24){printf(“%1.0f+%1.0f-%1.0f*%1.0f=24\n“,a,b,c,d);}if(a+(b-c)*d==24){printf(“%1.0f+(%1.0f-%1.0f)*%1.0f=24\n“,a,b,c,d);}if((a+b-c)*d==24){printf(“(%1.0f+%1.0f-%1.0f)*%1.0f=24\n“,a,b,c,d);}if(a+b-c/d==24){printf(“%1.0f+%1.0f-%1.0f/%1.0f=24\n“,a,b,c,d);}if(a+(b-c)/d==24){printf(“%1.0f+(%1.0f-%1.0f)/%1.0f=24\n“,a,b,c,d);}if((a+b-c)/d==24){printf(“(%1.0f+%1.0f-%1.0f)/%1.0f=24\n“,a,b,c,d);}if(a+b*c+d==24){printf(“%1.0f+%1.0f*%1.0f+%1.0f=24\n“,a,b,c,d);}if((a+b)*c+d==24){printf(“(%1.0f+%1.0f)*%1.0f+%1.0f=24\n“,a,b,c,d);}if(a+b*(c+d)==24){printf(“%1.0f+%1.0f*(%1.0f+%1.0f)=24\n“,a,b,c,d);}if((a+b)*(c+d)==24){printf(“(%1.0f+%1.0f)*(%1.0f+%1.0f)=24\n“,a,b,c,d);}if(a+b*c-d==24){printf(“%1.0f+%1.0f*%1.0f-%1.0f=24\n“,a,b,c,d);}if((a+b)*c-d==24){printf(“(%1.0f+%1.0f)*%1.0f-%1.0f=24\n“,a,b,c,d);}if(a+b*(c-d)==24){printf(“%1.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

菜根谭#161

道是一重公众物事,当随人而接引; 学是一个寻常家饭,当随事而警惕。转载于:https://www.cnblogs.com/star4knight/p/3862140.html

c语言100以内奇数的和为多少,编写C#程序,计算100以内所有奇数的和。谢谢了,大神帮忙啊...

编写C#程序,计算100以内所有奇数的和。谢谢了,大神帮忙啊以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!编写C#程序,计算100以内所有奇数的和。谢谢了&am…

监控系统的多协议直播(RTSP RTMP HTTP Live Streaming)

监控系统的多协议直播(RTSP RTMP HTTP Live Streaming) 转载于:https://www.cnblogs.com/cl1024cl/p/6204791.html

阿里媒体转码公共参数_Xuggler教程:转码和媒体修改

阿里媒体转码公共参数注意:这是我们的“ Xuggler开发教程 ”系列的一部分。 在上一教程中,我对视频处理Xuggler进行了简短介绍 。 在这一部分中,我们将看到Xuggler和FFmpeg提供的一些更令人兴奋的功能,例如视频转码和媒体修改。 别…

52单片机iic读写c语言,如何52单片机的I2C读写24C08程序问题排查修改

------波形在一楼isoimg2130老师提供在单片机正常运行的程序:#include "reg52.h"#include "intrins.h"typedef unsigned char u8;sbit SCLP2^1; //I2C 时钟sbit SDAP2^2; …

怎么用c语言写一个贪吃蛇,刚学C语言,想写一个贪吃蛇的代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#includetypedef struct snake{int a;int b;struct snake *u;struct snake *n;}snake,*snake1;typedef struct food{int a;int b;}food;void main(){char c,c0 d;int i,j,k,n1,t,at;snake p,q;snake *dd,…

题目1065:输出梯形 (直接用循环控制输出)+题目1432:叠筐 (数组控制形状,最后输出数组)...

题目1065:输出梯形 (直接用循环控制输出) 样例输入: 4 样例输出: ****************** ********** 题目1432:叠筐 样例输入: …

毕业设计C语言网吧管理系统,毕业设计网吧管理系统.doc

毕业设计网吧管理系统.doc本科生毕业论文(设计)题目: 网吧管理系统――服务器子系统学 院 数学与计算机学院学科门类 理 科专 业 信息与计算科学学 号 024092553姓 名 陈绍指导教师 白云2007年5月25日网吧管理系统——服务器子系统摘 要随着上个世纪九十年代计算机网…

sql注入查找注入点_基本的EJB参考,注入和查找

sql注入查找注入点在本系列的第一部分中 ,我们介绍了Enterprise JavaBeans v。3.0规范提供的机制,用于定义EJB组件,声明对EJB的引用并通过依赖项注入或程序化JNDI查找将它们连接起来。 在此博客文章中,我们将研究一些基本示例以了…

安徽省c语言选择题题库,C语言选择题题库.doc

C语言程序设计题库说明一 本题库适用对象计算机应用技术计算机软件软件技术计算机网络技术与计算机控制技术等专业二 本题库包含有175道选择题三 本题库所有题目均附有答案一、选择题下列各题ABCD四个选项中,只有一个选项是正确的,请将正确选项涂在答题卡…

求二叉树的最小深度

思路:用递归的方法求解。 输入:二叉树的根节点; 输出:二叉树的最小深度。 最小深度的定义:从根节点到叶子节点的最短路径上的节点数。 算法如下: 将二叉树分为这么几种情况: 传入的根节点为空&a…

qfp封装能够linux,QFP、PQFP、LQFP、TQFP封装形式及PCB详解

问题:画PCB时,会发现很多的集成电路都是QFP封装,比如很多的单片机都有这种封装。各个器件商会在自己的数据手册中说明他的器件是QFP,LQFP或TQFP,然后,有的给出封装尺寸图,有的则不给。那么&…

编写下载服务器。 第三部分:标头:内容长度和范围

这次,我们将探索更多的HTTP请求和响应标头,以改善下载服务器的实现: Content-length和Range 。 前者表示下载量很大,后者允许部分下载文件或在我们开始时失败后继续下载。 Content-length响应标头对于跟踪下载进度的客户端非常有…

dede文章列表加上序号效果

dede文章列表加上序号效果 css代码部分 <style type"text/css"> <!-- .downtop { FLOAT: left; OVERFLOW: hidden; WIDTH: 218px; HEIGHT: 278px } .downtop UL.text { MARGIN: 0px 10px; WIDTH: 198px; PADDING-TOP: 5px } .downtop UL.text LI { WIDTH: 1…

解答互联网创业中,你肯定会遇到的问题!

作为创过业&#xff0c;并且失败了的人&#xff0c;还是有那么一点点经验来回答这些问题的。1.我现在有个idea&#xff0c;上线之前如何在保证不被泄露的情况下又能了解这个idea对用户有多大吸引力&#xff1f;答&#xff1a;短时间内快速做出原型&#xff0c;找到10个左右的目…

android 垂直自动滚动条,Android实现Activity水平和垂直滚动条的方法

本文实例讲述了Android实现Activity水平和垂直滚动条的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;android:layout_width"match_parent"android:layout_height"match_parent"android:scrollbars"vertical" >android:layout_…

javadoc定义异常_Doclava:来自Google的自定义Javadoc Doclet

javadoc定义异常Doclava是Google的自定义Javadoc Doclet&#xff0c;由Google Guice使用&#xff08;请参见稍冷一些的Javadocs &#xff09;。 Doclava使用JSilver作为其模板引擎&#xff0c;这是Clearsilver的纯Java实现。 我个人喜欢联合文档的想法&#xff0c;该概念允许文…

HDU 2845 Beans

本来是很简单的一道题&#xff0c;却想了好长时间 由于数据量比较大&#xff0c;所以逐行读入&#xff0c;逐行处理 先处理每一行的不相邻元素和的最大值&#xff0c;记录在数组b中 最后计算不相邻行的和的最大值 二者的状态转移方程都类似&#xff1a;dp[j] max(dp[j - 1], d…

计算机由什么组成

对于一个不是计算机专业的编程人员&#xff0c;有很多东西要去学习&#xff0c;一直不理解计算机的组成和原理&#xff0c;今天查看百科&#xff0c;稍微了解一下写出来&#xff0c;让以后巩固&#xff1a; 1&#xff0c;计算机是由硬件系统和软件系统组成的 硬件系统&#xff…

android 重新启动应用程序,通过单击应用程序图标打开Android应用程序时重新启动...

我是Android开发世界的新手,我已经建立了一个简单的“Hello World”应用程序.首先,活动请求一个文本.当单击“Go”按钮时,应用程序将启动显示输入文本的第二个活动.如果我单击HOME按钮,然后单击应用程序图标,该应用程序将再次启动第一个活动,但是如果我按住主屏幕按钮并单击“最…