- 1、本文档共75页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 函数与编译预处理
4.1模块化程序设计与函数 在设计较复杂的程序时,我们一般采用的方法是:把问题分成几个部分,每部分又可分成更细的若干小部分,逐步细化,直至分解成很容易求解的小问题。这样的话,原来问题的解就可以用这些小问题来表示。 把复杂任务细分成多个问题的过程,就叫程序的模块化。模块化程序设计是靠设计函数和调用函数实现的。 模块与函数 C语言程序由基本语句和函数组成,每个函数可完成相对独立的任务,依一定的规则调用这些函数,就组成了解决某个特定问题的程序。 任务、模块与函数的关系: 4.2 函数的定义与调用 在C语言中,函数(Function)是一个处理过程,可以进行数值运算、信息处理、控制决策,即一段程序的工作放在函数中进行,函数结束时可以携带或不带处理结果。 库函数(标准函数):系统提供自定义函数:用户自己写 C语言程序处理过程全部都是以函数形式出现,最简单的程序至少也有一个main函数。函数必须先定义和声明后才能调用。 标准库函数 C语言有丰富的库函数,这些函数的说明在不同的头文件(*.h)中。 自定义函数 “函数”的主要知识点 函数的定义 函数的参数和返回值 函数的调用 嵌套和递归 变量的作用域 函数举例 #include conio.hmain(){ int a,b,m; ???????????? ? /*说明变量*/? int max(int a,int b);?? /*函数声明*/? scanf(%d,%d,a,b);?? /*调用库函数scanf*/? m=max(a,b); ?????????? ?? /*调用字定义函数max*/? printf(max=%d\n,m));? /*调用库函数printf*/? getch(); ????????????? ?? /*调用库函数getch*/} 函数举例 int max(int a,int b)????? /*定义函数max*/{? int y;? y=(ab)? a:b; /*条件表达式 */ return y;} 自定义函数的声明 求1!+2!+3!+…+10! 算法 i =1; s=0; 当 i = 10 s=s+ i! 定义求 i! 的函数 求1!+2!+3!+…+10! 程序 void main() { long mm( int ); /*自定义求阶乘函数应先声明 */ int i; long s=0; for (i =1; i =10; i ++) s+= mm(i ); /*调用求阶乘函数,求I的阶乘 */ printf(“\n%ld”,s); } 定义求 n! 的函数 long mm( int n) { long t=1; int i; for (i =1; i =n; i ++) t *= i ; return t ; } 函数的参数 int max(int a,int b) {? int y;? y=(ab)? a:b;? return y; ??????????????} 形式参数与实际参数的关系 形式参数在函数中是变量名,?在函数调用时,形参被分配相应的内存 实际参数是表达式??负责向对应的形参标识的内存单元传递数据 实参与形参必须个数相同 对应的形参和实参的类型必须一致 实参与形参 例:主调函数中有如下语句: ? scanf(%d,%d,a,b);? m=max(a,b+3); 如果输入 6,2 函数 int max(int a,int b) 形参 a 得到第一个实际参数a的值 6 形参 b 得到第二个实际参数b+3的值 5 函数返回值 函数返回值通过return语句获得 函数返回值的类型就是函数的类型 ? return y;? ? 将变量y的值返回给调用者? return y+3;? ? 将表达式的值返回给调用者 return 的数据类型与函数的类型矛盾时,自动将数据转换成函数的类型 int funct1() { char ch;? ? while?? ((ch=getch( ))a||(ch z)??? ;?? return ch; } 调用: i=funct1(); /* 返回的是int类型 */ 函数没有返回值, 函数定义成空类型 void putline()?? { int i;???? for (i=0;i35;i++)
文档评论(0)