C语言学习_北京大学宝钢教授课件_珍藏版_(5).pptxVIP

C语言学习_北京大学宝钢教授课件_珍藏版_(5).pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言学习_北京大学宝钢教授课件_珍藏版_(5)

Chapter 6程序结构与函数Program Organization Function 学习指导(Learning Guides)OverviewImportant partsObjectivesImportant e.g./ex.Difficulties 内容概述(Contents in Brief) 高效程序的编写方法函数的声明及调用 函数间数据传递的方法变量的作用域及存储类型多函数和多文件程序的编写  重要内容(Important Parts)6.2 函数的定义6.3 函数间数据的仁传递方法6.4 函数的调用 教学目标(Objectives)  掌握函数的定义和使用方法掌握变量作参数时数据传递的特点掌握数组名作参数时数据传递的特点理解静态局部变量和全局变量的概念*用递归函数求解递归问题*重要例题和习题 例题: 6.9 用递归法计算n!习题: 一、二、三 难点(Difficulties)函数间数据传递的方法 高效程序的编写方法函数机制(The Mechanism of Function) e.g. 求m中取n的组合数 组合数等于:m!/((m-n)!n!)  i.假设(Assumption) f1----m! f2----(m-n)! f3----n!ii. 程序(Source )for(f1=1,i=2;i=m;i++)f1*=i;for(f2=1,i=2;i=m-n;i++)f2*=i;for(f3=1,i=2;i=n;i++)f3*=i;printf(“%f\n”,f1/(f2*f3));iii. 分析(Analysis)存在若干类似程序段,程序效率不高。而使用函数机制可提高程序效率。iv. 重写程序(Rewrite the program ) 程序1#includestdio.hfloat fac(int k){ float f; int i; for(f=1,i=2;i=k;i++)f*=i; return f;}void main(){ int m,n; scanf(“%d%d”,m,n); printf(“%f\n”,fac(m)/(fac(m-n)*fac(n)));}Note: 程序段fac代替前面三个类似的程序段程序2 #includestdio.hvoid main() { int m,n; float fac(int k); (函数fac的引用性声明)  scanf(“%d%d”,m,n); printf(“%f\n”,fac(m)/(fac(m-n)*fac(n)));} float fac(int k) { float f; int i; for(f=1,i=2;i=k;i++)f*=i; return f;}Note: 对事先存在的东西的使用称引用编译指令编译指令概念: 指示编译器在对源代码进行翻译之前对源代码进行预处理。所有的编译指令均以#开始。编译指令不是C的一部分,但是它有助于编写高效的程序预处理包括的内容: a. 宏定义:用于带替字符串的字符串称为宏。 相当于”代词” b. 文件包含:将某个文件的内容作为所需要的声明包含进来 c. 条件编译:使编译器有选择的编译 使用宏(How to use the macro)关于宏:用于一较长内容的多次书写;还可用于相同内容的多处修改 #define pi 3.1415…pi…pi…pi…#define pi 3.1415926…pi…pi…pi………3.1415…3.1415…3.1415…好处:a. 只书写一次实现多处书写 b.只修改一处实现多处修改示例1:#define pi 3.1415 示例2:下面程序段的输出是什么?#define MA(x) x*(x-1)( 定义宏MA(x) )void main(){ int a=1,b=2; printf(”%d\n”,MA(1+a+b) [1] );} Ans. 8Note:[1]在预处理过程中,MA(1+a+b)被替换成:将x*(x-1)中的x用1+a+b替换所形成的式子。即:1+a+b*(1+a+b-1) 函数的声明及调用问题:对于数学中的函数: x xy z=f(x,y)= y x≤y设计实现它的C函数 f(x,y) max(int x, int y)  { 若干实现语句 return (运算结果);}(返回的运算结果的类型)int 数学中的函数C中的函数maxi.设计方法 ⅱ.函数max的使用示例void main( )/* 主函数*/{int max(int x,int y); /* 对被调用函数max的声明*/ int a, b, c;scanf(″%d,%d″,a,b); c=max(a,b); (调用所定义的max

文档评论(0)

137****8835 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档