【教学课件】第七章函数.ppt
《【教学课件】第七章函数.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第七章函数.ppt(76页珍藏版)》请在三一办公上搜索。
1、7.1 函数的概念,#include“string.h”main()char str80=“12345”;,第7章 函数,strcat(str,“6789”);,puts(str);,gets(str);,printf(“%sn”,str);,标准库函数,对于任何应用程序来说都是由若干个程序模块 组成的,而每一个模块常用来实现一个特定的功能。在C语言中就是利用函数来实现模块功能的。,学生成绩管理系统,成绩 录入,成绩 查询,成绩统计,打印成绩单,函数值类型 函数名(形式参数表)形式参数说明;说明语句;执行语句;,int add(x,y)int x,y;int z;z=x+y;return(z)
2、;,7.2 函数的定义,return(表达式);,1、常量 2、变量 3、表达式 4、指针值,int add(x,y)int x,y;int z;z=x+y;return(z);,7.3 函数值的返回,c=add(a,b);,int add(x,y),实际参数,main()int a=100,b=200,c;c=add(a,b);printf(“c=%dn”,c);int add(x,y)int x,y;int z;z=x+y;return(z);,函数名(实参表);,形式参数,7.4 函数的调用,1、调用函数时,函数名必须与调用处的函数名完全一致。,2、实参的个数必须与形参的个数一致。,3、
3、函数必须先定义,后调用。,4、函数可以直接或间接地自己调用自己,称为递归调用。,在调用函数时,一般在主调函数和被调用函数 之间有信息传递这是由函数中的参数来完成的。,7.5 实参与形参的传递方式,Do you Know?,信息传递方式,main()int a=5,b=10,c;c=max(a,b);printf(“c=%dn”,c);,5,x,y,5,10,10,t,10,b,a,c,10,实参与形参各占用不同的内存单元,main()int a=5,b=10,c;printf(“a=%x,b=%xn”,main()int a=100,b=200,c;c=add(a,b);printf(“c=%
4、dn”,c);int add(x,y)int x,y;int z;z=(+x)+(+y);return(z);,101,201,EXAMPLE7-1:,当形参值在函数中 发生变化时,且不影响 调用它的实参值的变化,用途,采用这种数据复制 的参数传递方式,每次 每个参数只能传递一个 数据,缺点,c=add(a,b);,int add(x,y),main()int a5=1,2,3,4,5,i;add(a,5);for(i=0;i5;i+)printf(“%d,”,ai);,add(int b,int n)int j;for(j=0;jn;j+)bj+;return;,2000 2002 2004
5、 2006 2008,a0 a1 a2 a3 a4,b0 b1 b2 b3 b4,2,3,4,5,6,1、实参与形参各占用相同的内存单元,2、可以批量地传递数据,main()int a5=1,2,3,4,5,i;add(a,5);for(i=0;i5;i+)printf(“%d,”,ai);,add(int b,int n)int j;for(j=0;jn;j+)bj+;return;,for(i=0;i5;i+)printf(“%x,”,for(j=0;j5;j+)printf(“%x,”,add(a,5);,int add(b,n)int b,n;,main()int a34=1,3,5,
6、7,2,4,6,8,15,17,34,12;printf(“max=%dn“,max(a);max(int b 4)int i,j,t;t=b00;for(i=0;it)t=bij;return(t);,EXERCISES7-1:,main()int a=100;fun(,200,2000,*p,fun(int*p)*p+=100;return;,EXERCISES7-2:,从上面的分析中,我们可以得出,使用参数传递地址时,当 对形参作出的任何变动,都将影响实参的变化。所以,利用这个 特性,可以在被调用函数中把它的处理结果送入某个参数的存储 空间,函数返回时,通过参数的地址就会把处理结果带回调
7、用函 数。,To understand,请建立一个一维数组并为该数组存入10名学生某科 考试成绩,然后调用一个函数用以计算这10名学生的平 均成绩。,EXERCISES7-3:,main()float s10,ave;int i,n=10;for(i=0;in;i+)scanf(“%f”,float f(float stu,int m)float t,sum=0.0;int i;for(i=0;im;i+)sum+=stui;t=sum/m;return(t);,r=21,main()int x=6,y=7,z=8,r;r=f(x-,y+,x+y),z-);printf(“r=%dn”,r);
8、,f(int a,int b)int c;c=a+b;return(c);,请写出下列程序的运行结果,EXERCISES7-4:,7.6 函数的递归调用,C语言的特点之一,就是允许函数的递归调用。其特 点是在函数内部直接地调用自己。递归函数的结构十分 简练,对于可以使用递归算法实现功能的函数,在C语言 中都可以把它们编写成递归函数 构造递归函数的关键是寻找递归算法和终结条件象数 学中的递推函数,都可以用C语言中的递归函数来实现。,递归算法和终结条件:,n!=1x2x3xxn,=nx(n-1)xx3x2x1,=nx(n-1)!,1!=1,递归算法,递归条件,因此,要想计算出n!,必须计算出(n-
9、1)!,计算出(n-1)!,必须计算出(n-2)!;由此类推,直到推到 1!=1,返回后即可依次计 算出 2!,3!,(n-1)!,n!。,EXAMPLE7-1:,计,算,阶,乘,4!=4X 3!,f(n)=nxf(n-1)f(1)=1,例如,计算 4!,其递归过程是:,3!=3X 2!,2!=2X 1!,1!=1,4!=4X 3!=4X6=24 3!=3X 2!=3X2=6 2!=2X 1!=2 1!=1,递归算法与递归条件:,main()int t;t=fun(4);printf(“%dn”,t);,fun(4),f=4*fun(3),fun(4),f(n)=nxf(n-1)f(1)=1,
10、int fun(int n)int f,t;if(f=1)f=1;else f=n*fun(n-1);return(t);,f=3*fun(2),fun(3),f=2*fun(1),fun(2),f=1,fun(1),f(2)=2*1=2,f(3)=3*2=6,f(4)=4*6=24,t,有5个人坐在一起,问第5个人几岁,他说比第4个人大2岁;问第4个人岁数,他说比第3个人大2岁;问第3个人时,又说比第2个人大2岁;问起第2个人年龄时,又说比第1个人大2岁;最后问第1个人的年龄时,他说是10岁。请问第5个人几岁?,EXERCISES7-5:,age(5)=16+2=18,age(4)=14+2
11、=16,age(3)=12+2=14,age(2)=10+2=12,设 age 表示年龄,则有递归算法和终结条件 如下:,age(5)=age(4)+2,age(4)=age(3)+2,age(3)=age(2)+2,age(2)=age(1)+2,age(1)=10,main()printf(“%d”,age(5);,int age(int n)int c;if(n=1)c=10;else c=age(n-1)+2;return(c);,请编制用于实现下列算法的递归程序:f(n)=12+22+32+42+n2,1、递推公式:f(n)=n2+f(n-1)2、递归终止条件:f(1)=1,HOME
12、WORK7-1:,main()int x=4;float sum;float fac();sum=fac(x);printf(“%dn”,sum);,float fac(int n)float f;if(n=1)f=1;else f=n*n+fac(n-1);return(f);,7.7 变量的使用范围与存储类型,1、变量的数据类型,2、变量的初始化,3、变量的使用范围,4、变量的存储类别,“变量”是指在程序运行过程中其值可以发生变化 的量。通常是用来表示在程序中对数据存储空间的一种 抽象的描述。当我们在学习C 语言中的变量时,必须要 掌握变量的有关属性:,一、变量的使用范围,使用范围,在一个
13、函数内部定义的变量称为局部变量,main()int a,b;fun(a);,int fun(int x)int i,j;,局,部,变,量,(1)主函数中定义的变量也只有在主函数中有效;,(2)不同函数中可以使用相同的变量名,且它们 代表不同的存储单元,互不干扰;,(3)形式参数也是局部变量。其它函数是不能调 用该形参;,(4)在一个函数内部,可以在复合语句中定义变 量,这些变量只能在本复合语句中有效。,To understand:对局部变量的理解,main()int x=1;int x=2;int x=3;printf(“x1=%dn”,x);printf(“x2=%dn”,x);printf
14、(“x3=%dn”,x);,全,局,变,量,全局变量可以为本文件中其它函数所共用;使用范围:从定义变量的位置开始到本源程序文件结束。,char c1,c2;int p=1,q=5;main()int a,b;a=p;b=q;,f1(int x)int i,j,z;z=p+x;,f2(int y)char ch=a,c2=b;c1=ch;ch=c2;,int a=13,b=-8;main()int m;m=max(a,b);printf(“m=%dn”,m);,max(int x,int y)int z;z=xy?x:y;return(z);,13,EXERCISES7-6:,int a=3,b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第七 函数

链接地址:https://www.31ppt.com/p-5660238.html