第7章程序的模块结构和C函数.ppt

上传人:本田雅阁 文档编号:3132023 上传时间:2019-07-15 格式:PPT 页数:16 大小:113.53KB
返回 下载 相关 举报
第7章程序的模块结构和C函数.ppt_第1页
第1页 / 共16页
第7章程序的模块结构和C函数.ppt_第2页
第2页 / 共16页
第7章程序的模块结构和C函数.ppt_第3页
第3页 / 共16页
第7章程序的模块结构和C函数.ppt_第4页
第4页 / 共16页
第7章程序的模块结构和C函数.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《第7章程序的模块结构和C函数.ppt》由会员分享,可在线阅读,更多相关《第7章程序的模块结构和C函数.ppt(16页珍藏版)》请在三一文库上搜索。

1、第7章 程序的模块结构和C函数,7,内容提要,本章从模块化程序设计的角度,介绍如何编制所需要的C函数 包括函数的定义、调用方法,调用函数和被调用函数之间如何进行数据传递,变量和函数的存储类型对函数调用的影响,函数的递归调用 最后介绍如何向main()函数传递数据。,C程序的模块结构,1. 模块化程序设计的特点 根据模块化程序设计的思想,对于复杂的问题都可以采用自顶向下(或自底向上)、逐步求精的方法将其分解成若干个相对独立的子问题。每个子问题对应一个功能独立的程序模块,将这些模块有机地连接在一起,构成一个完整的程序。 2. C程序的模块结构,C函数的定义和调用,1. C函数的定义 C函数的定义格

2、式有两种:传统格式和现代格式。传统格式也称K&R格式,是早期编译系统使用的格式;现代格式又称ANSI格式,是现代编译系统使用的格式。 2. C函数的调用,调用函数和被调用函数之间的数据传递,当一个函数调用另一个函数时,函数之间传递数据的方式有3种,即虚实结合方式、函数返回值方式和全局变量方式,用得最多的是虚实结合方式。 1、虚实结合方式 虚实结合方式是在形式参数(简称形参)和实际参数(简称实参)之间进行的数据传递。虚实结合适用于所有的有参函数,传递的数据可以是变量、数组、指针、结构、函数等。 2 函数返回值方式,存储类型对函数调用的影响,变量的存储类型对函数调用的影响 函数的存储类型对函数调用

3、的影响,函数的递归调用,递归调用是一个函数直接或间接地调用自己,前者称为直接递归,后者称为间接递归。 递归调用的函数称为递归函数。由于递归非常符合人们的思维习惯,而且许多数学函数及许多算法或数据结构都是递归定义的,因此递归调用颇具实用价值。,main()函数的参数和返回值,除了在递归程序中可能出现main函数自己调用自己的情况外,main函数很少被其他函数调用。所以,我们前面用到的main函数一概写成: main() 当然也可以写成: void main(void) 但是,main函数也会有参数和返回值,本节介绍main函数的参数、返回值及其应用。 1. 命令行参数 2. main()函数的参

4、数,本章总结,本章应重点掌握函数的定义方式及函数的数据类型、存储类型、形式参数和返回值的概念。函数的调用方法,包括函数名调用、函数指针调用、递归调用、表达式调用、表达式语句调用及什么时候要进行函数类型说明,调用函数和被调用函数之间传递单个数据、指针、数组、字符串的方法,包括调用函数将它们传递给被调用函数及被调用函数将它们返回给调用函数。 本章难点是函数之间数据传递的方式、方法和效果,变量和函数的存储类型对函数调用的影响,函数递归调用过程的分析,以及main函数的参数和返回值的使用。,本章习题,一、选择题 1. 以下函数的数据类型是_。 fun(float x) float y; y=3*x-4

5、; return y; A. int B. 不确定 C. void D. float 2. 在下列关于C函数定义的叙述中,正确的是_。 A. 函数可以嵌套定义,但不可以嵌套调用 B. 函数不可以嵌套定义,但可以嵌套调用 C. 函数不可以嵌套定义,也不可以嵌套调用 D. 函数可以嵌套定义,也可以嵌套调用,本章习题,3. 若函数为int型,变量z为float型,则该函数体内的语句return(z);返回的值是_。 A. int型 B. float型 C. 不定 D. 不确定 4. 在C语言中,函数的隐含存储类型是_。 A. auto B. static C. extern D. 无存储类型 5.

6、有以下函数: char *fun(char *p) return p; 该函数的返回值是_。 A. 无确切的值 B. 形参p中存放的地址 C. 一个临时存储单元的地址 D. 形参p自身的地址,本章习题,6. 以下所列各函数定义的首部中,正确的是_。 A. void play(int ,int) B. void play(int a,b) C. void play(int a,int b) D. sub play(a as integer,b as integer) 7. 在C语言中,形参的缺省存储类型是_。 A. auto B. register C. static D. extern 8.

7、有如下函数调用语句: func(rec1,rec2+rec3,(rec4,rec5); 该函数调用语句中,含有的实参个数是_。 A. 3 B. 4 C. 5 D. 有语法错误,本章习题,9. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。 A. 地址传递 B. 单向值传递 C. 由实参传给形参,再由形参传给实参 D. 传递方式由用户指定 10. 以下有关C语言函数的描述中,正确的是_。 A. 在C语言中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B. C函数既可以嵌套定义又可以递归调用 C. 函数必须有返回值,否则不能使用函数 D. C程序中有调用关

8、系的所有函数,必须放在同一个源程序文件中 11. 若调用函数的实参是一个数组名,则向被调用函数传送的是_。 A. 数组的长度 B. 数组的首地址 C. 数组每个元素的地 D. 数组每个元素中的值,本章习题,二、填空题 1. 下面的程序用来求数组a各元素的平均值,请填空。 float avr(int *pa,int n) int i; float avg=0.0; for (i=0;in;i+) avg=avg+_(1)_; avg=_(2)_; return avg; main() int i,a5=2,4,6,8,10; float mean; mean=avr(a,5); printf(“

9、mean=%fn“,mean); ,本章习题,2. 函数pi的功能是根据以下近似公式求值: (*)/6=1+1/(2*2)+1/(3*3)+1/(n*n) 请将下面函数的空白处填写正确,以完成求的功能。 #include double pi(long n) double s=0.0; long k; for (k=1;k=n;k+) s=s+_; return(sqrt(6*s); 3. 以下函数用来求两整数之和,并通过形参将结果传回。请填空。 void func(int x, iny y, _z) *z=x+y; ,本章习题,三、编程题 1. 编写程序,要求在主函数中输入一个整数,子函数prime()判断该整数是否为素数,若是素数,函数返回1,否则返回0。 2. 编写程序,要求在主函数中输入一个字符串,子函数将该字符串中的大写字母转换成小写字母,小写字母转换成大写字母,其他字符不变,并将转换后的字符串返回主程序。 3. 请编制程序,子函数的功能是求一个float型二维数组最大元素及其行下标和列下标(要求二维数组名作为实参,对应的虚参用行指针),主函数的功能是输入二维数组元素的值,接收子函数传递过来的最大元素值及其行下标和列下标,并输出。 4. 用递归方法求1+2+3+4+n。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1