- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 函数与程序结构 5.1 C程序的一般结构 数学函数 数学函数 程序设计中的函数 程序设计中的函数不局限于计算 计算类,如打印阶乘表的程序…… 判断推理类,如排序、查找…… E5-1.c 5.1.1 模块化程序设计 模块化的解决方法:把大问题分成几个部分,每部分又分解成更细的若干小部分,直至分解成功能单一的小问题,我们把求解较小问题的算法称做“功能模块”。各功能模块可单独设计,然后求解所有子问题,最后把所有的模块组合起来就是解决原问题的方案,这就是“自顶向下”的模块化程序设计方法。 C语言中,模块使用函数实现的。 5.1.2 C程序的一般结构 函数是构成C语言程序的基本功能模块,是一段程序,它完成一项相对独立的任务。 一个C程序由一个主函数和若干个函数组成,由主函数调用其他函数,其他函数之间也可以相互调用。同一个函数可以被一个或多个函数调用任意多次。 从用户使用的角度看,函数有两种: (1)标准函数,即库函数 例如scanf() , printf() , fabs() , sqrt() ,exp(),sin(),cos()等都是C语言中常用的库函数 (2)用户自己定义的函数 用以解决用户的专门问题,一般由用户自己编写 5.2 函数的定义与调用 5.2.1 函数的定义 5.2.2 函数的调用 5.2.3 函数的参数传递 5.2.1 函数的定义 函数应该先定义后使用。 任何函数(包括主函数main())都是由函数头和函数体两部分组成。函数头给出函数相关信息,而函数体具体实现函数的功能。 E5-1-1 函数定义的一般形式 在定义C函数时要注意以下几点。(1)函数类型标识符,它表示返回的函数值类型。 (2)如果省略函数的类型标识符,则默认为是int型。 (3)C语言允许定义空函数。如 dummy(){ }(4)如果“形参表列”中有多个形式参数,则它们之间要用“,”分隔。 (5) C函数不能嵌套定义。 函数的返回值是通过return语句带回到主调函数。 return 语句格式: 功能:终止函数的运行,返回主调函数,若有返回值,将返回值带回主调函数。 说明: 若函数没有返回值,return语句可以省略。 5.2.2 函数的调用 函数调用的一般形式为: 函数名(实参表列); 说明: (1)调用函数时,函数名称必须与具有该功能的自定义函数名称完全一致。如果是调用无参函数则实参表列可以没有,但括弧不能省略。 (2)实际参数表中的参数(简称实参),可以是常数、变量或表达式。如果实参不止1个,则相邻实参之间用逗号分隔。 (3)实参的个数、类型和顺序,应该与被调用函数所要求的参数个数、类型和顺序一致 被调用函数的说明和函数原型 在调用自定义函数之前,应对该函数(称为被调用函数)进行说明,一般格式如下: 函数类型 函数名(数据类型1[ 参数名1] [, 数据类型2[ 参数名2]…); E5-1-2 e5-2-1.c sum=1!+2!+3!+…+6! C语言规定,在以下两种情况下,可以省去对被调用函数的说明。 e5_2.c (1)函数的返回值是整型或字符型,可以不必进行说明,系统对它们自动按整型说明。 (2)被调用函数的函数定义出现在调用函数之前时。 (3)如果在所有函数定义之前,在函数外部(如文件开始处)预先对各个函数进行了说明,则在调用函数中可缺省对被调用函数的说明。 对库函数的调用不需要再作说明,但必须把该函数的头文件用#include命令包含在源文件前部。 5.2.3 函数的参数传递 在定义函数时函数名后面括弧中的变量名称为(“形参”),在调用函数时,函数名后面括弧中的表达式称为“实际参数”(简称“实参”)。 形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 在c语言中,实参向形参传送数据的方式是“值传递”。 函数参数: 【例】调用函数时的数据传递。 #include stdio.h void main() { int max(int,int); /*函数说明*/ int a,b,c; printf(input integer a,b:); scanf(%d,%d,a,b); c=max(a,b); /*函数调用max,实参为a和b*/ printf(max is %d\n,c); } in
您可能关注的文档
最近下载
- EXC9000励磁系统简介.ppt VIP
- 状语从句时间状语从句.pptx VIP
- 2024山东城市建设职业学院招聘笔试真题及参考答案详解.docx VIP
- 13685光与色彩自考课程.docx VIP
- 2024年山东城市建设职业学院招聘笔试真题附答案详解.docx VIP
- 重症自身免疫性脑炎监测与治疗中国专家共识(2024版).pptx
- 2024山东城市建设职业学院招聘笔试真题附答案详解.docx VIP
- 商用车推力杆多自由度动态载荷耐久试验方法201106.pdf VIP
- “体文旅”融合发展:概念重构、内涵解析与演进历程.docx VIP
- 《检验检测机构资质认定评审准则》试题及标准答案.docx VIP
文档评论(0)