函数及其应用资料

上传人:我** 文档编号:116960532 上传时间:2019-11-17 格式:PPTX 页数:66 大小:749.55KB
返回 下载 相关 举报
函数及其应用资料_第1页
第1页 / 共66页
函数及其应用资料_第2页
第2页 / 共66页
函数及其应用资料_第3页
第3页 / 共66页
函数及其应用资料_第4页
第4页 / 共66页
函数及其应用资料_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《函数及其应用资料》由会员分享,可在线阅读,更多相关《函数及其应用资料(66页珍藏版)》请在金锄头文库上搜索。

1、Cprogram design 语言程序设计基础 21世纪高等院校计算机技术系列规划教材 2015年5月18日 第9讲 函数 l内容导读 在C语言程序中,基本的结构是函数,函数化结构可以把一个大的问 题分解成若干个独立的小部分,分别编写具有独立处理能力的函数,然后 通过函数调用将这些函数联系起来,以解决大的问题。 2015年5月18日 函数概述 函数定义和调用 函数的参数传递 函数的嵌套调用和递归函数 函数应用举例 9.1 9.5 2015年5月18日 第9讲 函数 9.2 9.3 9.4 9.6变量的作用域和存储类型 引题: 假如系统提供的函数printf()用10行代码替换,那么我们编过的

2、程序 会成什么样子? 实际上一个printf()有上千行代码 设计学生信息管理系统 如果所有代码都在main()中,怎么团队合作? 如果代码都在一个文件中,怎么团队合作? 管理学的观点认为工作必须分工,各司其职。其中的思想,在程序设 计里也适用。 2015年5月18日 9.1函数概述 8.1.1 C语言程序结构 1.C语言程序的构成 一个C程序由一个或多个源程序文件组成 一个源程序文件由一个或多个函数组成 2015年5月18日 2.模块化程序设计 基本思想 将大的问题分解为若干个小问题,小问题再分解为更小的问题,降低开 发大规模软件的复杂度。 2015年5月18日 函数是C语言中模块化编程的最

3、小单位 可以把每个函数看作一个模块 如把编程比做制造一台机器,函数就好比其零部件 可将这些“零部件”单独设计、调试、测试好,用时拿出来装配,再总体 调试。 这些“零部件”可以是自己设计制造/别人设计制造/现成的标准产品 9.1.2 函数分类 2015年5月18日 标准库函数 C语言编译系统提供这些函数 自定义函数 自己定义的函数 包装后,也可成为函数库,供别人使用 课堂编程小练习 在屏幕上打印五行“”字符,每行分别是2个,7个,15个,18个,20个 “”。 9.2 函数定义和调用 9.2.1 函数定义 函数定义的一般形式: 类型标识符 函数名(类型 形参变量, 类型 形参变量,) 定义部分

4、语句序列 return (表达式); 2015年5月18日 返回值 类型 为函数取 的名字 相当于运算的 操作数 返回运算的 结果 结束函数运行, 返回到调用点 【例9-1】定义连续输出20个“*”字符的函数。 void pstar (int n) /* 函数定义 */ int i; for (i=1; ib)的最大公约数,欧几里德辗转相除法。 其算法描述如下: (1)输入a,b; (2)求a%b的余数r; (3)如果r0,则将ba,rb,转至(2)再次求a%b的余数r; (4)如果r为0,则输出b。 2015年5月18日 2015年5月18日 【例9-18】从键盘输入一个班学生某门课程的成绩

5、(全班最多不超过50人, 具体人数由键盘输入),试编程按成绩由高到低排出名次,要求用函数的方 式实现。 程序设计分析: (1)排序算法有冒泡法、选择法等。 int i,j,t; for(i=0;in1;i+) for(j=0;jni1;j+) if(ajaj+1) t=aj; aj=aj+1; aj+1=t; 2015年5月18日 (2)sort()函数的函数原型如下: void sort(int a,int n); sort()函数用两个形参对一维数组进行说明,第一个形参表示待排序的数组 名,第二个形参表示参加排序的元素个数。 sort()函数的功能可以理解为对一维数组a进行排序。 (3)设

6、计数组输入函数input()实现数组输入,设计数组输出函数output()实现 数组输出。 函数原型如下: void input(int a,int n); void output(int a,int n); 2015年5月18日 (4)设计主函数main(),在其中定义数组score。 调用input()函数建立数组score。 调用output()函数输出数组score。 调用sort()函数对数组score排序。 调用output()函数输出排序后的数组score。 2015年5月18日 程序说明: (1)由于数组名代表数组第一个元素的地址,因此用数组名作函数实参实际上 是将数组的首地址

7、传给被调函数。 (2)程序执行后,main()函数中的sort(score,n)调用将score数组的首地址传 给sort()函数的形参数组a,使sort()函数执行时直接对score数组进行排序。因 此,sort()函数返回之后,score数组已成为有序数组。 2015年5月18日 9.6 变量的作用域和存储类型 9.6.1 变量的作用域 2015年5月18日 指在源程序中定义变量的位置及其能被读写访问的范围(作用范围,生存期) 分为 局部变量 全局变量 局部变量 在语句块内定义的变量 作用范围是所定义的语句块内 全局变量 不在任何语句块内定义的变量 全局变量的作用域从定义位置起到整个程序结

8、束 全局变量被定义后,未被初始化的全局变量系统赋初值0 2015年5月18日 在同一个函数中不能定义具有相同名字的局部变量, 在同一个程序中全局变量名和函数中的局部变量名可以同名。 当全局变量名与函数内的局部变量同名时,则局部变量会“屏蔽” 全局变量。 2015年5月18日 程序说明: 输出结果为 20而不是100, 说明调用max() 函数的时候,x 的值为2,即局部 变量“屏蔽”了 同名的全局变 量。 例9-19 在复合语句中定义局部变量。 #include int main (void) int a; a = 1; /* 复合语句开始 */ int b = 2; b = a + b; a

9、 = a + b; /* 复合语句结束 */ printf (“%d “ , a ); return 0; b:小范围内的临时变量 4 例9-20 全局变量定义 #include “stdio.h“ int x; /* 定义全局变量x */ int f( ) int x = 4; /* x为局部变量 */ return x; void main() int a = 1; x = a; /* 对全局变量 x 赋值 */ a = f( ); /* a的值为4 */ int b = 2; b = a + b; /* b的值为4 */ x = x + b; /* 全局变量运算 */ printf(“%

10、d %d“ , a, x); 4, 7 若局部变量与全局变量 同名,局部变量优先 9.6.2 变量的存储类型 在C语言中,变量和函数有数据类型和存储类型两个属性 变量声明的一般形式为: 存储类型 数据类型 变量名表 C程序的存储类别 n auto型(自动变量) n static型(静态变量) n extern型(外部变量) n register型(寄存器变量) 2015年5月18日 1自动变量 自动变量的一般定义形式: auto 类型名 变量名; auto体现在 进入语句块时自动申请内存,退出时自动释放内存 动态局部变量, 缺省的存储类型 2015年5月18日 2静态变量 静态变量的一般定义形

11、式: static 类型名 变量名; 生存期为整个程序运行期间 【例9-21】 读程序,观察静态局部变量与自动变量的区别。 2015年5月18日 - 程序执行 - 第1次:func1=3 第2次:func1=5 第3次:func1=7 第1次:func2=3 第2次:func2=3 第3次:func2=3 程序说明: (1)调用func1函数时,函数内的变量s是静态局部变量,初始化赋值为1。首 次调用func1函数时,s的值是1,函数执行后,s值为3,函数返回时变量s依然 存在。以后的第二次、第三次调用函数func1时,都是在上一次调用结束时的s 值上再加2。 (2)func2函数中的局部变量

12、s,在每次进入函数调用时重新分配s并初始化为1 ,函数执行后,s值为3,函数返回时,撤消s变量。再次调用func2时,重新对s 分配存储单元和赋初值,所以函数每次调用后返回值3。 3外部变量 在所有函数之外定义的变量,并且没有指定其存储类别 一般定义形式: extern 类型名 变量名; 4寄存器变量 用寄存器存储的变量 一般定义形式: register 类型名 变量名; 2015年5月18日 9.7 本章知识点小结 1在C语言程序中,基本的结构是函数。 标准库函数 标准库函数由系统提供,无须定义即可使用 自定义函数 自定义函数需要在程序中定义后才能使用 2015年5月18日 2函数定义就是对

13、函数所要完成的操作进行描述。 函数定义的一般形式: 类型标识符 函数名(类型 形参变量, 类型 形参变量,) 定义部分 语句序列 2015年5月18日 3函数调用是使用已定义的函数,实参和形参按照各自在参数表中的位 置对应传值 通常要在调用函数前进行函数声明 函数的形参和实参既有本质的区别,又有密切的联系 4函数间的参数传递有两种不同的数据 传数值 (1) 实参可以是常量、变量或表达式,实参值的特点是基本数据类型、 结构数据类型。 (2)被调函数无法引用主调函数中的任何变量值。 传地址 (1)实参可以是常量、变量或表达式,实参值的特点是指针数据类型。 (2)在被调函数中,可以通过地址间接访问主

14、调函数中的变量,而达到改 变主调函数中的变量值。 数组名作为函数的参数时传送的是数组的首地址。 2015年5月18日 5嵌套调用和递归调用 在C程序中,A函数调用B函数,B函数又调用C函数。这种层层调用称 为函数的嵌套调用。 当一个函数直接或间接的调用它自身时,称为函数的递归调用。 2015年5月18日 6. 变量的存储类型 在C语言中,变量和函数有数据类型和存储类型两个属性 变量声明的一般形式为: 存储类型 数据类型 变量名表 C程序的存储类别 n auto型(自动变量) n static型(静态变量) n extern型(外部变量) n register型(寄存器变量) 2015年5月18日 PPT模板下载: 行业PPT模板: 节日PPT模板: PPT 素材下载: PPT背景图片: PPT图表下载: 优秀PPT下载: PPT教程: Word教程: Excel 教程: 资料下载: PPT 课件下载: 范文下载: 试卷下载: 教案下载: 2015年5月18日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号