- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chap10函数和程序结构
10.4 大程序构成 ——多文件模块的学生信息库系统 10.4.1 分模块设计学生信息库系统 10.4.2 C程序文件模块 10.4.3 文件模块间的通信 10.4.1 分模块设计学生信息库系统 10.4.1 分模块设计学生信息库系统 10.4.1 分模块设计学生信息库系统 10.4.2 C程序文件模块 结构化程序设计是编写出具有良好结构程序的有效方法 一个大程序最好由一组小函数构成 如果程序规模很大,需要几个人合作完成的话,每个人所编写的程序会保存在自己的.c文件中 为了避免一个文件过长,也会把程序分别保存为几个文件。 一个大程序会由几个文件组成,每一个文件又可能包含若干个函数。 10.4.2 C程序文件模块 一个大程序可由几个程序文件模块组成,每一个程序文件模块又可能包含若干个函数。程序文件模块只是函数书写的载体。 当大程序分成若干文件模块后,可以对各文件模块分别编译,然后通过连接,把编译好的文件模块再合起来,连接生成可执行程序。 问题:如何把若干程序文件模块连接成一个完整的可执行程序? 文件包含 工程文件(由具体语言系统提供) 10.4.3 文件模块间的通信 文件模块与变量 外部变量 静态全局变量 文件模块与函数 外部函数 静态的函数 10.4.3 文件模块间的通信 外部变量 全局变量只能在某个模块中定义一次,如果其他模块要使用该全局变量,需要通过外部变量的声明 外部变量声明格式为: extern 变量名表; 如果在每一个文件模块中都定义一次全局变量,模块单独编译时不会发生错误,一旦把各模块连接在一起时,就会产生对同一个全局变量名多次定义的错误 反之,不经声明而直接使用全局变量,程序编译时会出现“变量未定义”的错误。 10.4.3 文件模块间的通信 静态全局变量 当一个大的程序由多人合作完成时,每个程序员可能都会定义一些自己使用的全局变量 为避免自己定义的全局变量影响其他人编写的模块,即所谓的全局变量副作用,静态全局变量可以把变量的作用范围仅局限于当前的文件模块中 即使其他文件模块使用外部变量声明,也不能使用该变量。 10.4.3 文件模块间的通信 文件模块与函数 外部函数 如果要实现在一个模块中调用另一模块中的函数时,就需要对函数进行外部声明。声明格式为: extern 函数类型 函数名(参数表说明); 静态的函数 把函数的使用范围限制在文件模块内,不使某程序员编写的自用函数影响其他程序员的程序,即使其他文件模块有同名的函数定义,相互间也没有任何关联, 增加模块的独立性。 本章小结 多函数程序的组织结构 函数调用的层次结构 多文件模块实现:文件包含 合理运用变量在多文件模块、多函数间的关联 程序文件模块:变量与文件模块、 函数与文件模块的关系 递归函数 构成要素:递归式子(重点)与递归出口 运用递归函数解决特殊问题(如汉诺塔) 编译预处理 文件包含 宏实质:编译预处理的替代 带参的宏——不是函数 源程序 /* 搬动n个盘,从a到b,c为中间过渡 */ void hanio(int n, char a, char b, char c) { if (n == 1) printf(%c--%c\n, a, b); else{ hanio(n-1, a, c, b); printf(%c--%c\n, a, b); hanio(n-1, c, b, a); } } int main(void) { int n; printf(input the number of disk: ); scanf(%d, n); printf(the steps for %d disk are:\n,n); hanio(n, a, ‘b, ‘c) ; return 0; } input the number of disk: 3 the steps for 3 disk are: a--b a--c b--c a--b c--a c--b a--b A B C input the number of disk: 3 the steps for 3 disk are: a--b a--c b--c a--b c--a c--b a--b 课堂练习:利用递归函数计算x的n次幂 int mi(int x, int n) { if (n==1) return x; else return x*mi(x,n-1); } 10.3 长度单位
文档评论(0)