《C/C++程序设计教程》电子教案 C语言程序设计5

上传人:E**** 文档编号:89399392 上传时间:2019-05-24 格式:PPT 页数:31 大小:273.50KB
返回 下载 相关 举报
《C/C++程序设计教程》电子教案 C语言程序设计5_第1页
第1页 / 共31页
《C/C++程序设计教程》电子教案 C语言程序设计5_第2页
第2页 / 共31页
《C/C++程序设计教程》电子教案 C语言程序设计5_第3页
第3页 / 共31页
《C/C++程序设计教程》电子教案 C语言程序设计5_第4页
第4页 / 共31页
《C/C++程序设计教程》电子教案 C语言程序设计5_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《《C/C++程序设计教程》电子教案 C语言程序设计5》由会员分享,可在线阅读,更多相关《《C/C++程序设计教程》电子教案 C语言程序设计5(31页珍藏版)》请在金锄头文库上搜索。

1、第五章 C语言函数,2019/5/24,C与C+程序设计教程-第五章,2,5.1 C语言程序的组成 5.2 函数的参数 5.3 函数的调用 5.4 程序编译预处理,退出,2019/5/24,C与C+程序设计教程-第五章,3,5.1 C语言程序的组成,C语言程序:是一个或多个函数组合而成的。,C语言函数:具有相对独立的、完整功能的实体。是完成某一功能的一段程序,是程序的基本组成成分。,5.1.1 C语言函数的结构 5.1.2 C语言程序的组成,返 回,2019/5/24,C与C+程序设计教程-第五章,4,5.1.1 C语言函数的结构,1、函数的分类: 系统函数(库函数):由C语言函数库提供,用户

2、可以直接引用。 用户函数(自定义函数):是用户根据需要定义的完成某一特定功能的一段程序。用户函数分为带参数的函数和不带参数的函数。,2019/5/24,C与C+程序设计教程-第五章,5,形式1: 类型名 函数名(形式参数表) 形式参数说明; 说明语句; 执行语句; ,2、函数的定义:,2019/5/24,C与C+程序设计教程-第五章,6,形式 2: 类型名 函数名(类型名 形参1,类型名 形参2,) 说明语句; 执行语句; ,2、函数的定义:,返 回,函数体:中的内容,包括说明语句和执行语句。 空函数:函数体为空的函数,例,便于扩充和细化程序。 注:(1)函数的定义是平行的,不允许在一个函数的

3、内部再定义一个函数。 (2)函数值的类型为int或char时,可省略;不需返回函数值时,可用类型名void。 (3)多个形参以逗号分隔。 (4)不同函数中的局部变量可以同名。,2019/5/24,C与C+程序设计教程-第五章,7,5.1.2 C语言程序的组成,1、程序的结构:一个大的程序由许多源程序文件(也叫程序模块,通常是一些相关函数的集合)组成,而源程序文件由预编译和许多函数组成。,2、C语言程序源文件(程序模块)结构: 包含文件:#include 。 宏定义: #define PI 3.14159。 条件编译:#if#else#endif 函数预说明:定义函数的原型 全局变量说明:函数外

4、定义的变量 函数模块定义,2019/5/24,C与C+程序设计教程-第五章,8,例5.2函数实例。 main() int x=1; void f1(),f2(); f1(); f2(x); printf(“x=%dn“,x); void f1(void) int x=3; printf(“x=%dt“,x); void f2(x) int x; printf(“x=%dt“,+x); ,返 回,2019/5/24,C与C+程序设计教程-第五章,9,5.2 函数的参数,一个函数与其他函数之间存在数据传递问题,可以通过函数的参数实现。 5.2.1 带参数函数定义的一般形式 类型说明 函数名(形式参

5、数表) 形式参数说明; 函数体 ,2019/5/24,C与C+程序设计教程-第五章,10,5.2.2 形式参数和实际参数: 形式参数(简称形参):是指在函数定义时函数名后面括号中的变量名。 实际参数(简称实参):是指在函数调用时,函数名后面括号中的表达式。,input integers a,b: 7,8 Max is 8,注:(1)形参在调用时才被分配内存空间,调用结束后释放。 (2)实参可以是常量、变量或表达式,但要求有确定值。 (3)实参与形参的类型应一致。 (4)实参向形参的单向传递,“值传递”,即只由实参传给形参,而不能由形参传回给实参。,2019/5/24,C与C+程序设计教程-第五

6、章,11,5.2.3 数组作为函数的参数 1.数组元素作为函数的实参 和变量作为函数的实参一样,单向传递。,例5.4有两个数组a和b,各有10个元素,将它们对应地逐个相比(即a0与b0比,a1和b1比,)。如果a数组中的元素大于b数组中的相应元素的数目多于b数组中大于a数组中相应元素的数目,则认为a数组大于b数组。,分析逐个比较,并分别统计出两个数组相应元素大于、等于和小于的次数,设为n、m和k次。最后再决定数组a和数组b的大小。,输入数组a:1 3 5 7 9 8 6 4 2 0 数组b:5 3 8 9 1 3 5 6 0 4 输出结果:aibi 4 次 ai=bi 1 次 aibi 5 次

7、 “数组a比数组b小。”,2019/5/24,C与C+程序设计教程-第五章,12,2. 数组名作为函数参数: 实参和形参都要使用数组名,且传递的是数组的首地址,即将实参数组的首地址传递给形参数组名。,例5.5有一个一维数组score,内放10个学生成绩,求平均成绩。,Input 10 scores: 100 56 78 98.5 76 87 99 67.5 75 97 Average score is 83.40,注:(1)分别定义实参数组和形参数组,如上例中的形参数组array和实参数组score。 (2)实参数组和形参数组类型一致。 (3)实参数组和形参数组长度大小可一致也可不一致。若形参

8、数组长度=实参数组长度,则形参能得到实参全部元素值。若形参数组长度实参数组长度,则形参数组只取实参数组的一部分,其余不起作用。 (4)若有处理数组元素个数的需要,可另设一个参数,传递元素个数。 (5) 可以实现“实形互传”,因为实参数组与形参数组是同一地址,共占同一段内存单元,形参数组中各元素的值发生变化会使实参数组元素的值同时发生变化。 (6)多维数组名作实参和形参时,形参数组可省略第一维大小说明,但第二维及以上不能省。,2019/5/24,C与C+程序设计教程-第五章,13,例5.6求两个班学生的平均成绩。 float average (array,n) float array10; in

9、t n; int i; float aver,sum=array0; for(i=1;in;i+) sum+=arrayi; aver=sum/n; return(aver); main() static float score15=98.5,97,91.5,60,55; static float score210=67.5,89.5,99,69.5,77,89,76.5,54,60,99.5; printf(“the average of class A is %6.2fn“,average(score1,5); printf(“the average of class B is %6.2f

10、n“,average(score2,10); ,2019/5/24,C与C+程序设计教程-第五章,14,例5.7用选择法对数组中10个整数按由小到大排序。,Enter the array 10 8 6 9 6 0 7 89 25 20 the sorted array: -25,-7,-6,0,6,8,9,10,20,89,2019/5/24,C与C+程序设计教程-第五章,15,例5.8有一个3*4的矩阵,求其中的最大元素。 max_value(array) int array4; int i,j,max; max=array00; for(i=0;imax) max=arrayij; ret

11、urn(max); main() static int a34=1,3,5,7,2,4,6,8,15,17,34,12; printf(“max value is %dn“,max_value(a); ,返 回,2019/5/24,C与C+程序设计教程-第五章,16,5.3 函数的调用,5.3.1 函数的原型 5.3.2 函数调用的一般形式 5.3.3 函数的值 5.3.4 函数的递归调用,返 回,2019/5/24,C与C+程序设计教程-第五章,17,5.3.1 函数的原型,被调用函数若为: 系统函数: 本文件开头用#include包含被调用函数信息。 用户函数: 若主函数与被调函数不在同一

12、文件,则主函数中需要被调用函数的原型说明,若主函数与被调函数在同一文件中,则可不说明其函数原型。,函型原型说明形式: 存储类型 数据类型 函数名(形参类型);,注:在函数原型说明中的形参说明,只需说明形参类型和形参个数,而无需说明形参名。,例:int max(int x,int y)的函数原型是int max(int,int);,2019/5/24,C与C+程序设计教程-第五章,18,例5.9用数组模拟堆栈程序,给出堆栈操作的函数原型定义。,How many numbers do you want to push: 5 Push data to stack node.0 1 node.1 2

13、node.2 3 node.3 4 node.4 5 Pop data from stack 5 4 3 2 1,返 回,2019/5/24,C与C+程序设计教程-第五章,19,函数调用的一般形式: 函数名(实际参数表) 函数调用的具体方式: (1)语句方式 函数名(实际参数表); (2)表达式方式 变量=带函数的表达式;,func1(x,y,z);,c=max(a,b);,5.3.2 函数调用的一般形式,2019/5/24,C与C+程序设计教程-第五章,20,主调函数与被调函数的相对位置关系: “先定义,后调用” 函数声明形式: 类型名 函数名(类型名 形参1,类型名 形参2,); 类型名

14、函数名(类型名1,类型名2,); 类型名 函数名();,int max(int a, int b);,int max(int, int);,int max( );,2019/5/24,C与C+程序设计教程-第五章,21,嵌套调用 在调用一个函数的过程中再调用另一个函数。,递归调用(自调用函数) 在调用一个函数的过程中,又出现直接或间接地调用该函数本身。,2019/5/24,C与C+程序设计教程-第五章,22,例5.10编写一个程序求解从m个元素选n个元素的组合数程序。计算公式:Cmn=m!/(n!*(m-n)!),分析:f(x)求x!;cmn=f(m)/f(n)/f(m-n);,返 回,201

15、9/5/24,C与C+程序设计教程-第五章,23,得到函数值的两种方式: 利用变量(如全程变量、形参等) 利用return语句 return(表达式); return 表达式; return语句的两个用途: (1) 使控制返回到主调函数;(2) 将值返回给主调函数。,5.3.3 函数的值,注:(1)一个函数中可以有多个return语句 (2)若无return语句,则执行到函数体末尾后,返回一个不确定的值。 (3)若无值返回,则函数应定义为void类型。 (4)return语句中表达式的类型与函数类型一致。若不一致,以函数值类型为准。,返 回,2019/5/24,C与C+程序设计教程-第五章,24,递归函数:又称自调用函数,简洁但不一定高效。 三个条件:(1)递归问题的规律; (2)通过转化解决问题; (3)有终止递归的条件。,5.3.4 函数的递归调用,返 回,例5.11 阶乘的递归函数。 分析:f(n)=n*f(n-1); f(1)=1;,int f(n) int n; if (n=1) return(1); else return(n*f(n-1); main() int x=4; printf(“n!=%dn“,f(x); ,2019/5/24,C与C+程序设计教程-第五章,25,例5.1

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

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

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