C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数

上传人:E**** 文档编号:89191017 上传时间:2019-05-21 格式:PPT 页数:28 大小:867KB
返回 下载 相关 举报
C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数_第1页
第1页 / 共28页
C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数_第2页
第2页 / 共28页
C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数_第3页
第3页 / 共28页
C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数_第4页
第4页 / 共28页
C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数》由会员分享,可在线阅读,更多相关《C 语言程序设计实用教程 教学课件 ppt 作者 李庆亮 第6章 函  数(28页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计实用教程,第6章 函 数,第6章 函 数,解决大型复杂问题的一个有效方法就是“分而治之”,即把一个大型问题分解成若干功能单一、规模较小的子问题模块。模块化是程序设计技术中的一项重要方法。在C程序设计中,函数是具有独立功能的程序模块。一个较大的C程序可以由一个或多个源文件组成,一个源程序文件又由一个或多个功能单一、规模较小的函数组成,即所谓“小函数构成大程序”。这样的好处是让各部分相互充分独立, 并且任务单一。因而这些充分独立的小模块也可以作为一种固定规格的小“构件”,用来构成新的大程序。,第6章 函 数,这样做的好处是不仅可实现程序的模块化,提高程序设计的易读性和可维护性,而且还

2、可以把经常用到的一些运算和操作定义成通用函数,供随时调用,大大地减轻程序员的代码工作量,提高编程效率。 6.1 定义与调用 6.2 嵌套调用和递归调用 6.3 变量的作用域 6.4 变量的存储类别 6.5 内部函数与外部函数 6.6 指针与函数 6.7 用指针作函数参数,第6章 函 数,6.8 数组作为函数参数 6.9 返回指针的函数 6.10 main函数的命令行参数 6.11 习题,解决大型复杂问题的一个有效方法就是“分而治之”,即把一个大型问题分解成若干功能单一、规模较小的子问题模块。模块化是程序设计技术中的一项重要方法。在C程序设计中,函数是具有独立功能的程序模块。一个较大的C程序可以

3、由一个或多个源文件组成,一个源程序文件又由一个或多个功能单一、规模较小的函数组成,即所谓“小函数构成大程序”。这样的好处是让各部分相互充分独立, 并且任务单一。因而这些充分独立的小模块也可以作为一种固定规格的小“构件”,用来构成新的大程序。这样做的好处是不仅可实现程序的模块化,提高程序设计的易读性和可维护性,而且还可以把经常用到的一些运算和操作定义成通用函数,供随时调用,大大地减轻程序员的代码工作量,提高编程效率。,6.1 定义与调用,6.1.1 函数定义的一般形式 1. 有参函数定义的一般形式 . 无参函数定义的一般形式 6.1.2 调用 1. 函数调用的一般形式 10 20,图6-1 实参

4、到形参值的传递,6.1 定义与调用,2. 函数调用的方式 1) 函数表达式方式:函数调用出现在表达式中,这种表达式称为函数表达式。 2) 函数语句方式:函数调用的一般形式加上分号即构成函数语句,这种方式不需要函数有返回值,参考下例。 3) 函数实参方式:将函数调用作为另一个函数的实际参数出现。 3. 函数的声明 1) 当被调用函数的返回值是整型或字符型时,可以不在主调用函数中说明而直接调用。 2) 当被调用函数的函数定义出现在主调用函数之前时,主调用函数中不用再对被调用函数说明,可以直接调用,以上例子均属于这种情况。,6.1 定义与调用,3) 如在所有函数定义之前,在函数外预先说明了各个函数的

5、类型,则在以后的各主调用函数中,不用再对被调用函数作说明。 4)对库函数的调用不需要再作说明,但必须把该函数的头文件用include命令包含在源文件前部。 6.1.3 函数的参数和函数的值 1. 函数的参数 1) 实参与形参各自占用独立的存储单元,函数调用时才将实参的值传递给形参单元。 2) 形参变量只有在发生函数调用时才临时分配内存单元,在调用结束时,即释放所分配的内存单元。,6.1 定义与调用,3) 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传递给形参。 4) 实参和形参在数量上、类型上、顺序上应严格一致,否则会发生

6、“类型不匹配”错误。 5) 函数调用中发生的数据传递是单向的。 2. 函数的值 1) 在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此一次函数调用最多只能返回一个函数值。 2) return语句中允许不带表达式。 3) 函数返回值的类型应和函数定义中函数的类型保持一致。,6.1 定义与调用,4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。,6.2 嵌套调用和递归调用,6.2.1 嵌套调用,图6-2 函数的嵌套调用示意图,6.2.2 递归调用,6.2 嵌套调用和递归调用,图6-3 函数的递归调用示意图,6.2 嵌套调用和递归调用

7、,图6-4 求3!的递归过程示意图,图6-5 Hanoi游戏装置示意图, 将A上的1 (n-1)个圆盘移到B上。 再将A上的一个圆盘移到C上。,6.2 嵌套调用和递归调用, 最后将B上的1 (n-1)个圆盘移到C上。 将A上的2 (n-1)个圆盘借助于C移到B上。 将A上的一个圆盘移到C。 将B上的2 (n-1)个圆盘借助于A移到C。,6.3 变量的作用域,6.3.1 局部变量 1) 主函数中定义的变量也是局部变量,只在主函数体内有效。 2) 形参变量属于被调用函数的局部变量,实参变量属于主调用函数的局部变量。 3) 允许在不同的函数中使用相同的变量名,它们占用不同的单元,不会发生混淆。 4)

8、 在复合语句中也可以定义变量,其作用域仅限于复合语句范围内。 6.3.2 全局变量 1) 全局变量在整个程序的执行过程中都占用存储空间,一个函数对全局变量的修改会影响到其他调用这个变量的函数。 2) 在同一源程序文件中,允许全局变量和局部变量同名。,6.3 变量的作用域,3) 为了与局部变量有明显的区分,建议全局变量的首字符采用大写字母表示。 4) 在一个函数之前定义的全局变量,在该函数内可不再加说明直接使用。,6.4 变量的存储类别,1. auto(自动)变量 2. 静态变量 1) 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。 2) 静态局部变量在编译时赋初值,即只赋初值一次;

9、而对auto变量赋初值是在函数调用时进行,每调用一次函数重新赋一次初值。 3) 如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。 3. 寄存器变量,6.5 内部函数与外部函数,1. 内部函数 2. 外部函数,6.6 指针与函数,1) 先定义函数指针变量; 2) 将要调用函数的首地址(函数名)赋给函数指针变量; 3) 将函数指针变量代替函数名使用,实现函数的调用。 12 26 8 19 15 1) 对函数指针变量不能进行算术加减运算,这和数组指针变量不同。 2) 函数调用中“(*指针变量名)”的两边的括号不可少,其中的*不应该理解

10、为求值运算,在此处它只是一种表示符号。,6.7 用指针作函数参数,图6-6 用指针作参数实现数据交换的变化过程示意,例6-19是用指针变量作形参,地址作实参的情况。也可以用指针变量作为实参调用函数。例如,对上例中swap函数不变,修改main函数如下。 1) 在主调用函数中设n个变量,分别用n个指针指向它们。 2) 用n个指针变量做实参,传递给被调用函数的n个形参。 3) 在被调用函数中利用形参指针变量,改变n个变量的值。,6.7 用指针作函数参数,4) 在主调用函数中使用这n个改变内容后的变量。,6.8 数组作为函数参数,6.8.1 数组元素作函数实参 80 60 59 71 45 6.8.

11、2 数组名作为函数参数 1 2 3 4 5 5 4 3 2 1 1) 用数组元素作实参时,对数组元素的处理是按普通变量对待的。 2) 用普通变量或下标变量作函数参数时,形参变量和实参变量分别占用不同的内存单元。,6.9 返回指针的函数,6.10 main函数的命令行参数,图6-7 字符串指针数组argv的结构,6.11 习题,一、 单项选择题 1. 下列叙述中正确的是( 2. 在一个C语言程序中( 3. 以下叙述中正确的是( 4. 下列关于函数的说法中错误的是( 5. C语言规定,各个函数之间( 6. 在以下函数调用语句中,函数fun1参数的个数为( 7. 以下所列的各函数首部中,正确的是(

12、8. 以下程序的输出结果是( 9.下列程序段的输出结果是( 10. 下列程序的运行结果是( 11. 当调用函数时,实参是一个数组名,则向函数传送的是(,6.11 习题,12. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( 13. 以下函数的返回值类型是( 14. 下面程序的输出结果是( 15. 以下程序的输出结果是( 16. 以下程序运行后的输出结果是( 17.有以下程序执行后输出结果是( 18. 有以下程序 19. 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: 二、 编程题 1. 从键盘输入3个整数,调用函数求其中最大数。,6.11 习题,2. 编写判断数x是否为素数的函数,并输出判断结果。 3. 编写将十进制整数x转换成r进制(1r10)后并输出的函数。 4. 编写函数int f(int a,int n),求出20个数中的最大数。 5. 已知计算组合的公式如下: 6. 编写程序求公式s=12+22+n2的值,要求在主函数中输入n的值,用f1函数求一个整数的平方,用f2函数求和。,

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

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

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