- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch14 C语言第14节
C程序设计快速进阶大学教程 第14章 函数进阶 C程序设计快速进阶大学教程 第14章 函数进阶 本章要点 分解与抽象 递归 14.1 分解与抽象 知识点 功能分解与抽象 再认识递归 14.1 分解与抽象 给定日期由年、月、日(三个整数,年的取值在1970-2050之间)组成,完成以下功能: (1)判断给定日期的合法性; (2)计算两个日期相差的天数; (3)计算一个日期加上一个整数后对应的日期; (4)计算一个日期减去一个整数后对应的日期; (5)计算一个日期是星期几。 14.1 分解与抽象 14.1 分解与抽象 日期合法性 14.1 分解与抽象 日期合法性 14.1 分解与抽象 计算两个日期相差的天数 14.1 分解与抽象 计算一个日期加上一个整数天数后对应的日期 14.1 分解与抽象 计算一个日期减去一个整数天数后对应的日期 14.1 分解与抽象 计算一个日期是星期几 14.1 分解与抽象 综合分析 14.1 分解与抽象 综合分析 14.1 分解与抽象 开始抽象 14.1 分解与抽象 抽象结果 14.1 分解与抽象 新的解决方案 14.1 分解与抽象 抽象实现 dateToDays 14.1 分解与抽象 抽象实现 daysToDate 14.2 递归 14.2 递归 14.2 递归 例14.2 汉诺塔 #includestdio.h int main() { int h; void hannoi(int n,char x,char y,char z); printf(input number:\n); scanf(%d,h); printf(the step to moving %2d diskes:\n,h); /* 把n个圆盘从A杆借用B杆移动到C杆 */ hannoi(h,A,B,C); return 0; } void hannoi(int n,char x,char y,char z) { if(n==1) { /* 从x杆到z杆移动一个圆盘 */ printf(%c--%c\n,x,z); } else { /* 首先把n-1个圆盘从x杆借用z杆移动到y杆 */ hannoi(n-1,x,z,y); /* 从x杆到z杆移动一个圆盘 */ printf(%c--%c\n,x,z); /* 再把n-1个圆盘从y杆借用x杆移动到z杆 */ hannoi(n-1,y,x,z); }} 14.2 递归 * * 问题1: 日期运算 问题1: 日期运算 闰年判断上面的盒图中未给出, 因为功能较为独立,可单独做一个函数, 并且在后面的模块中还会使用 计算日期A(yearA、monthA、dayA)和日期B(yearB、monthB、dayB)相差天数,假定A小于B并且A和B不在同一年份,把天数分成3段: 1 A日期到A所在年份12月31日的天数; 2 A之后到B之前的整年的天数(A、B相邻年份这部分没有); 3 B日期所在年份1月1日到B日期的天数。 计算日期A(yearA、monthA、dayA)加上一个整数天数days对应的日期。 若days小于A日期到A所在年份12月31日的天数则 对应结果日期在本年中计算,yearA不变。 否则 若天数剩下的部分够整年(闰年问题)则循环 yearA加1;days去掉一年天数; 对days剩下的不够一年的天数,在该年计算日期。 计算日期A(yearA、monthA、dayA)减去一个整数天数days对应的日期。 若days小于A所在年份1月1日到A日期的天数,则 对应结果日期在本年中计算,yearA不变。 否则 若days剩下的部分够整年(闰年问题),则循环 yearA减1;days去掉一年天数; 对days剩下的不够一年的天数,在计算对应日期。 计算日期A(yearA、monthA、dayA)为星期几,需要找到一个参照的日期B,只需要知道日期B为星期几,然后计算出A和B相差的天数,就很容易计算出A为星期几。此处又需要用到计算两个日期的差。 几种功能都在计算一段日期天数,这种一段日期天数分为3种: 年内1月1日到某日期的天数(年内的前半段); 年内某日期到12月31日的天数(年内的后半段); 整年的天数。 只有整年天数容易计算,其他 两种较为复杂,能不能回避呢? 对于日期A和B的差: 可以选定日期C(1970年1月1日); 计算C到A
原创力文档


文档评论(0)