- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                chap10_函数与程序结构讲解
                    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 长度单位转换  10.3.1  程序解析  10.3.2  宏基本定义  10.3.3  带参数的宏定义  10.3.4  文件包含  10.3.5  编译预处理  10.3.1 程序解析  例10-5 欧美国家长度使用英制单位,1英里=1609米,1英尺=30.48厘米,1英寸=2.54厘米。请编写程序转换。 #includestdio.h  #define Mile_to_meter 1609		/* 1英里=1609米 */ #define Foot_to_centimeter 30.48  /*  1英尺=30.48厘米  */ #define Inch_to_centimeter  2.54    /*  1英寸=2.54厘米  */ int main(void)  { 	   float foot, inch, mile;	/* 定义英里,英尺,英寸变量 */ 	   printf(Input mile,foot and inch:); 	   scanf(%f%f%f, mile, foot, inch);  	   printf(%f miles=%f meters\n, mile, mile * Mile_to_meter);		/* 计算英里的米数 */ 	   printf(%f feet=%f centimeters\n, foot, foot *  				Foot_to_centimeter);	/* 计算英尺的厘米数 */ 	   printf(%f inches=%f centimeters\n, inch, inch *  				Inch_to_centimeter);	/* 计算英寸的厘米数 */ 	   return 0; } Input mile,foot and inc
                
原创力文档
                        

文档评论(0)