- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大学C语言程序课件-第八章
C程序设计 第8章 函数 8.1 概述 8.2 函数定义的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别 8.1 概述 一个C程序可以分为若干个函数。 每个程序有且只能有一个main函数,其它的函数都是“子函数”。 子函数可以互相调用,但主函数不能被调用。 一个C源程序由一个或多个文件构成,一个源程序文件是一个编译单位。 8.1 概述 C程序的执行从main函数开始,调用其它函数后仍回到main函数,程序在main函数结束时结束。 所有子函数都是平行的,任何子函数都不属于其他函数。 从用户的角度来看,函数可以分为: 标准函数,即库函数 自定义函数 从函数形式看,可分为: 无参数函数:如printstar() 有参数函数:如printf() 8.2 函数定义的一般形式 函数定义的一般形式: 类型说明 函数名([形式参数说明]) {函数体} 形式参数说明方法: 类型说明 变量名[,类型说明 变量名] 函数体的组成: {[局部变量说明] 语句 } 局部变量: 函数体内定义的变量。其范围仅限于所在的函数内部,离开函数体则无意义。 8.3 函数参数和函数的值 一个C程序由若干个函数组成,各函数调用时经常需要传递一些数据。即调用函数把数据传递给被调用函数,经被调用函数处理后,得到一个确定的结果,在返回调用函数时,把这个结果带回调用函数。 各函数间的信息的往来是由参数传递和返回语句实现的。 形式参数和实际参数 函数参数:用于函数间数据的传递。 形式参数:定义函数时使用的参数。 实际参数:调用函数时使用的参数。 例子 函数的返回值 函数的返回值也就是函数值,是一个确定的值。 如果一个函数有返回值,就必须使用return语句。 形式为:return(返回值); 返回值的类型要与函数的类型一致。 如果不一致,则以函数类型为准。 对数值型的数据,可以自动进行类型转换,即将返回值的类型转换为函数类型。 8.4 函数的调用 函数调用的一般形式: 函数名(实参表列); 说明: 如果调用无参函数,实参表列可以没有,但括号不能省。 实参的个数和形参一般相等。 实参与形参的类型应一一对应,必要时进行类型转换。 注意:在不同系统中,实参的计算顺序不同。微机上一般是从右到左。为避免由此引起的混乱,一般应在调用函数前计算出实参的值。 函数调用的方式 函数语句:不要求有返回值,函数仅用来完成一定的操作。 形式为:函数名(实参表列); 例如:print_message();或printf(“%d”,p); 函数表达式:函数的返回值参与运算。 例如:m=max(a,b);或m=3*max(a, b); 注意:不适用于void类型函数。 函数参数:一个函数作为另一个函数的实参。 例如:m=max(a, max(b, c)); 注意:不适用于void类型函数。 函数调用的执行过程 按从右到左的顺序,计算实参中各表达式的值 按照位置,将实参的值一一对应的传递给形参 执行被调用函数 当遇到return(表达式)语句时,计算表达式的值,并返回主调函数。 被调函数的声明和函数原型 被调用的函数必须是已经存在的函数。 如果使用库函数,则必须在程序开头部份用#include命令将定义该库函数的头文件包含到程序中。 如果使用的是同一个C程序中定义的函数,则: 先定义后使用 先声明,再使用,后定义 被调函数的声明和函数原型 例子1 输入两个正整数m和n,求最大公约数和最小公倍数。T8.1 例子2 求Cmn=n!/(m!(n-m)!)的值。 分析: 重复三次求阶乘运算,只是每次的值不同。 将求阶乘的过程编程一个函数fac,以不同的参数值k来调用函数。 例子3 给出年、月、日,计算该日是该年的第几天。 步骤: 定义每月的天数。 输入日期 根据输入的日期计算天数days,调用sum_days函数 判断是否是闰年并且输入的月份大于2,调用leap函数 如果是闰年,则天数加1。 输出天数。 8.7 数组作为函数参数 数组元素作为函数实参 与变量做实参一样,数组元素做实参是“值传递”。 例:求10个任意整数中的最大数。 一维数组名作为函数参数 注意:若函数的形参是数组,对应的实参必须是数组名。 说明: 实参数组与形参数组的类型必须一致。 用数组名做参数时,传递的是数组的首地址,因此形参数组也可以不指定大小。但需另设一个参数,传递数组元素的个数。 数组做函数参数时,形参数组和实参数组共享同一内存单元。 也就是说,如果形参数组的元素的值被修改,实参数组的元素的值也被修改了。 例子4 写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出
文档评论(0)