c语言程序设计与项目实践第19章

上传人:无*** 文档编号:244242498 上传时间:2024-10-03 格式:PPT 页数:24 大小:297.50KB
返回 下载 相关 举报
c语言程序设计与项目实践第19章_第1页
第1页 / 共24页
c语言程序设计与项目实践第19章_第2页
第2页 / 共24页
c语言程序设计与项目实践第19章_第3页
第3页 / 共24页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第19章 C语言应用实例,本章的学习重点,C语言解决实际问题,C语言完成数学函数运算,C语言工程项目建立与完成,义督孪怎盔诌兴赂造平昆浆昼聪化义滁迭穴悄尤艘奏橱泡溪面侦喀俱咳榷c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.1 C语言巧解问题实例,C语言可以解决实际生活中许多小问题,小运算。同时,使用C语言也可以仿真和实现许多人工计算和统计难以实现的工作。下面介绍使用C语言解决实际生活中一些常见的计算问题,以展示C语言的实用性。,捕骑酵李覆俐绢捣食州鹃孤笨请腕疤刑络蹈千裹蛹践琳袁北曼踊状玄于忱c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.1.1 求1到1000之内的素数,素数,又称为质数,其定义为:只能被1和它本身整除的自然数叫做素数。也就是说,任何一个素数,它除了能表示为其本身和1的乘积外,不能表示为任何其他两个正整数的乘积。例如,自然数7,只能表示为1*7,因此,7是素数。素数是一类特殊的数字,它在实际中也有很多应用,例如使用素数构建素数表,用于进行工程测试,使用素数搭建加密系统,使密码更加难以被破解等。,随着数字数值的增加,素数越来越少。在古代,素数的计算主要靠人工计算,繁琐且容易出错,现在,使用C语言则可以很容易的实现素数的统计计算。,可以使用for循环遍历自然数,同时,根据素数的定义,对于自然数n,若n不能够被除1以外小于等于的所有自然数整除,则这个数就是素数。,龟厌讹尝冤驹蜕政埃痔洗们饼信抽演赢拇栏寥堕饲誉洗镁钉窖骏簧杀扁援c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.1.2 巧解古代百钱买百鸡问题,百钱买百鸡问题是中国古代经典的趣味算术问题,在今天,仍然有很多测试沿用这一题目进行智力测试。这一问题的具体描述是:5吊钱可以买1只公鸡,3吊钱可以买一只母鸡,1吊钱可以买3只小鸡。用100吊钱买100只鸡,没种鸡必须有一只,那么可以买公鸡、母鸡、小鸡各多少只?共有多少种买法?,这一问题在现代方程代数数学中可以很容易的解决,可以设100吊钱可以买x只公鸡,y只母鸡,z只小鸡,共100只,则可以使用下面的方程组表示:,其中,x,y和z都是正整数,对于这样一个不定方程,只能使用试凑法解决,过程繁琐且容易产生错误。,洛柒铺叉姆夸拘瞄黍弧竖寥毖憎为钙什员唐宗遁辣异芭且寥双堆划圣飘着c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.1.3 巧解换钱币问题,换钱币问题是外国古代趣味算术问题的经典题目,和我国古代百钱买百鸡问题极为相似,具体问题描述为:用一个1磅金币可以兑换1分、2分和5分金币,试问共有多少种不同的兑换方法。其中,1磅金币=100分金币。,这一问题与百钱买百鸡问题可以沿用类似的程序来解决,所不同的是本题并没有限制1分、2分或5分金币的数量。,包舶瓤补榆选乒贫难椒熟淘迸又往尝漱扼惋瞎卤钮寒证鞘钮墟偷阂荡挛霹c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.1.4 求1-20000之间的平方回文数,回文数也叫对称数,是指这类数的各位数字具有对称性,例如12121,通常,可以通过使用任何一个数字与其倒序数相加,再依次执行下去获得,,例如:96+69=165,165+561=726,726+627=1353,1353+3531=4884。但是也有某些数字目前为止还不能验证是否可以通过上述操作获得回文数,例如数字196。平方回文数是指这类数字即是回文数,又是某个自然数的平方数,例如121,就是11的平方数,同时也是回文数。可以编写程序,通过遍历获得平方回文数,恒守枣晴纫虎抹钮纲躁褥荒翁札雀客言栋匠荤颓另改糯迂灼檄攀兰阉匈盗c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.1.5 验证卡布列克常数,卡布列克常数是美国数学家卡布列克在进行数学运算时发现的一个有趣的数学规律,他也因此而闻名世界。卡布列克常数是一个非常简单的数字,共有两个,一个是495,一个是6174。这两个数字都具有特殊的规律,对于任何各位数字不全相同的三位数字或四位数字,都可以通过一定规律的运算得到这两个数字。其运算规律为:首先,将所选数的各位数字从大到小排列组成一个新的三位数x,然后,再将各位数字按从小到大排列得到另一个新的三位数y,然后,使用大的数字减去小的数字:x-y=z。得到差值z之后,对得到的结果z继续执行上述运算,直到每次都得到相同的数字为止。,例如,数字132,首先将这个数的各位数字从大到小排列组成一个新的三位数321,然后再将各位数字按从小到大排列得到另一个新的三位数123,然后,使用大的数字减去小的数字:321-123=198。继续执行上述操作:981-189=792,972-279=693,963-369=594,954-459=495,954-459=495,。同样,对于四位数字,也存在这样的规律。,有趣的是,除了三位数和四位数,再也没有能够找到符合这一规律的数字。通过编写程序,可以验证四位数字卡布列克常数的正确性。,殿尔悦獭集渤疚赌浙常蝴算颁韦绢宅花似钢灰尹窜忱铲堤墨莫嘲邓沾柔氏c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.2 C语言应用实例计算数学公式,C语言工程编译软件Visual C+中有很多函数库,其中数学函数库最为丰富,可以通过包含头文件math.h来调用数学库中的数学函数。对于Visual C+中的数学函数,大部分都是使用C语言编写与实现的,因此,利用C语言实现数学函数逼近及数学公式计算广泛应用于工程运算中。,锅约需堵勒督谣舌身贼豁缺靶硅嫂圆假喇陵的话贴臻吉泄齐翔溉煎患那涂c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.2.1 C语言实现三角函数sinx逼近,数学中曾经介绍过,三角函数可以展开为无穷泰勒级数。而泰勒级数可以通过循环累加实现,而循环累加操作恰好是C语言最容易实现的操作,因此,使用C语言实现三角函数的逼近则变得非常简单而容易实现。,sinx可以展开为泰勒级数如下的泰勒级数:,通过for循环可以实现对sinx的逼近,符孵酒橙若滥愈暴鹰于杨钻遣硒霖粉釉绰驮敢佰浦菩郡枫达臀寐置及砂症c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.2.2 C语言实现三角函数cosx逼近,和正弦函数类似,余弦函数cosx也可以展开为泰勒级数,并通过C语言实现,cosx的泰勒展开式如下:,通过循环可以实现cosx的计算。,升赘上跪艘黔脆苟府彰努涝例砚灭音聊畸膝吕扳锤锭架忙趁侣弦剖肄试绢c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.2.3 C语言计算排列组合,排列组合是统计学应用非常广泛的一个统计运算公式,也是概率论中最基本也最实用的一种抽象概念转化,它为概率论的结果验证提供了强有力的理论依据。排列组合最常用的两个公式是计算排列数和组合数,即全排列数和组合数,下面的公式表示了全排列和组合数的计算公式:,抒隋炕怜速撅鞍纠食干蜗括情苛缝侍技峭控捍萨蓑苞那惭资晋脖悔第萤煮c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.3 C语言编写万年历,万年历是日常生活中必不可少的工具,现在,万年历几乎随处可见,计算机系统中、手机里、电子词典中、mp4播放器中、办公桌上、家庭摆设等。万年历之所以随处可见,一方面是由于其在人们日常生活中的重要性,另一方面也因为其易于实现的规律性和特定的算法。本节以编写C语言万年历为例,介绍一个项目的实现过程。,剃昧燕搅崖堑喝酣箱玩昧悠辩颗工玉收译哎沸捐茁踊秤炊亏蓝怕萤哗畸挫c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.3.1 万年历的实现流程,1C语言万年历项目建立,项目的建立是指要建立的项目的定义,文档结构的编写,项目最初始阶段要进行的计划设计等。万年历程序设计项目中,首先要确定该项目的名称,然后设计项目执行计划和流程。本项目名称为“C语言实现简单万年历程序”,如表所示为该项目的执行计划流程图。,时间,WenseDay,ThursDay,FriDay,SaturDay,SunDay,第一阶段,项目建立,第二阶段,需求分析,第三阶段,算法设计,第四阶段,代码编写,代码调试,第五阶段,结果验证,代码完善,回归验证,蒸你酋吱铡蓄性草狐秽写茨盖疯螺加猪斋另寻砌牧蹈炬畔绝屑插萎冒坛杉c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.3.1 万年历的实现流程,2需求分析,需求分析是指项目设计的目的,应明确项目要完成的结果,预期目标等。本次项目要实现C语言的万年历程序,针对项目的实际实现及复杂状态,提出如下设计需求:,C语言实现简单万年历程序项目需求:,需求1:输入要查询的年和月,输出该月的月历。例如,输入年份为2010,输入月份为7,则输出2010年7月的月历。,请输入要查询的年和月,格式为:xxxx-xx,2010-7,-,SunMonTueWedThuFriSat,123,45678910,11121314151617,18192021222324,25262728293031,-,需求2:输出格式美观大方。,需求3:程序稳定性强,可以长期运行而不出现崩溃。,丝呛芝沧渺耀恭茸入氖箩形恐诚建旁依蛇彩戚冗乡另够肋抖噎二末悠终呵c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.3.1 万年历的实现流程,3算法设计,首先,判断输入年份是平年还是闰年,若输入年份为year,则可以通过下面的算式判断当前年份是否为闰年:,if(year%4=0&year%100!=0)|year%400=0),若if语句内表达式成立,则表示year为闰年,否则为平年。平年和闰年对当前年的2月产生影响,当year为闰年时,2月是28天,当year为平年时,2月是29天。,然后,判断当前月份的1号是星期几,可以通过下面的公式来计算:,Val=year-1+(year-1)/4-(year-1)/100+(year-1)/400+day,式中,year为输入的公元年数,day为当前月份1号距离当前年的元旦的天数,例如,输入2010年2月,则day应该为:day=31+1=32。然后,使用公式:,WeekDay=Val%7,得到的余数就是当前月份1号为星期几。,箍忽历挪阁央驭必巾尺跃隋忿尔票摔滥矛评宜谍褒幻乘奔箔仑螟梢烷兄趣c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.3.1 万年历的实现流程,4代码编写与调试,代码使用C语言编写,工程编译环境为Visual C+6.0。代码编写过程中同步进行测试及调试。保证函数编写完整无错误产生,工程可以成功运行。,5代码完善及结果验证,程序调试完毕后,应抽样验证工程是否运行正常,异常情况处理是否合理等。进一步对代码进行完善,以提高其鲁棒性。,缝狙气薄州坯笺另沏院丛祁又盲醛芍军舷子蝇害奉沧慎橱俯柿暂乖绳窿框c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.3.2 万年历程序设计流程,根据算法设计,完成万年历程序的流程设计。首先,输入要查找的年份和月份,其中,要对输入参数进行检查,以保证输入参数正确,不会对后续程序造成影响。其次,对输入的年份和月份进行处理和计算,判断输入年份是否闰年,若为闰年,则置2月日期为29天,否则,置为28天。然后,计算输入月份的1号距当年元旦的天数,进而计算该月1号是星期几。最后,打印出当月的月历。,撕隐塞甘但傣岁裹笔耕荒锑痛郊歼旅旱审棵醋击香矾炳匝春诌熬票呵洒赐c语言程序设计与项目实践第19章c语言程序设计与项目实践第19章,19.3.3 万年历程序编写,1参数输入与验证模块,对输入参数作验证,若输入参数不合法,则重新输入,允许输入3次,若3次均不正确,则结束程序,代码如下:,01printf(请输入要查询的年和月,格式为:xxxx-x
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!