C语言第10章课件.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言第10章课件,c语言课件,c语言ppt课件,c语言程序设计课件,c语言课件谭浩强,c语言课件下载,c语言课件非常详细,数据结构c语言版课件,c语言ppt课件下载,苏小红c语言课件

10.1 文件包含 程序文件模块 为了避免一个文件过长,可以把程序分别保存为几个文件。 一个大程序会由几个文件组成,每一个文件又可能包含若干个函数。 保存有一部分程序的文件称为程序文件模块。 程序-文件-函数 大程序-若干程序文件模块 各程序文件模块分别编译,再连接 整个程序只允许有一个main()函数 文件包含 格式 # include 需包含的文件名 # include “需包含的文件名” 作用 把指定的文件模块内容插入到 #include 所在的位置,当程序编译连接时,系统会把所有 #include 指定的文件拼接生成可执行代码。 注意 编译预处理命令,以#开头。 在程序编译时起作用,不是真正的C语句,行尾没有分号。 例10-2 将例10-1的5个函数分别存储在2个.C文件上,要求通过文件包含把它们联结起来。 常用标准头文件 ctype.h 字符处理 math.h 与数学处理函数有关的说明与定义 stdio.h 输入输出函数中使用的有关说明和定义 string.h 字符串函数的有关说明和定义 stddef.h 定义某些常用内容 stdlib.h 杂项说明 time.h 支持系统时间函数 10.2 递归函数 10.2.1 程序解析 10.2.2 递归函数基本概念 10.2.3 递归程序设计 10.2.1 程序解析 例10-3 用递归函数求n!。 #include stdio.h double fact(int n); int main(void) { int n; scanf (%d, n); printf (%f, fact (n) ); return 0; } double fact(int n) /* 函数定义 */ { double result; if (n==1 || n == 0) /* 递归出口 */ result = 1; else result = n * fact(n-1); return result; } 10.2.2 递归函数基本概念 递推法与递归法求阶乘 递推法 n!=1*2*3*....*n for (result = 1, i = 1; i = n; i++) result = result * i; 递归法 递归定义 n! = n * (n-1)! (n 1) n! = 1 (n = 0,1) 递归函数 fact(n) 例9-3分析 求n! 递归定义 n! = n * (n-1)! (n 1) n! = 1 (n = 0,1) 递归函数 fact( n )的实现过程 fact(3)= 3*fact(2)= 2*fact(1)= fact(1)=1 例10-4 写输出结果 # include stdio.h long fib(int g) { switch(g){ case 0: return(0); case 1: case 2: return(2); } printf(g=%d,, g); return ( fib(g-1) + fib(g-2) ); } void main() { long k; k = fib(4); printf(k=%ld\n, k); } 10.2.3 递归程序设计 用递归实现的问题,满足两个条件: 问题可以逐步简化成自身较简单的形式(递归式) n! = n * (n-1)! n n-1 Σi = n +Σ i i=1 i=1 递归最终能结束(递归出口) 两个条件缺一不可 解决递归问题的两个着眼点 例10-5 汉诺(Hanoi)塔 将64 个盘从座A搬到座B (1) 一次只能搬一个盘子 (2) 盘子只能插在A、B、C三个杆中 (3) 大盘不能压在小盘上 分析 分析 分析 算法 hanio(n个盘,A→B) // C为过渡 { if (n == 1) 直接把盘子A→B else{ hanio(n-1个

您可能关注的文档

文档评论(0)

xiaolan118 + 关注
实名认证
内容提供者

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档