C语言程序设计--函数ppt课件.ppt
《C语言程序设计--函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计--函数ppt课件.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能第八章 函数为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院例子:求多边形面积。AreaTAreaT1AreaT2 AreaT3求三角形面积:ns=(a+b+c)/2;narea=sqrt(s*(s-a)*(s-b)*(s-c);T1T2T3Tabcdefg为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院程序s=(a+b+c
2、)/2;area1=sqrt(s*(s-a)*(s-b)*(s-c);s=(d+e+c)/2;area3=sqrt(s*(s-d)*(s-e)*(s-c);s=(e+f+g)/2;area2=sqrt(s*(s-e)*(s-f)*(s-g);area=area1+area2+area3;T1T2T3Tabcdefg除了三角形的边长不一样之外,这三段代码几乎完全相同。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院问题:是否有办法减少代码的重复呢?为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国
3、教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院float Tarea(float x,float y,float z)int s,area;s=(x+y+z)/2;area=sqrt(s*(s-x)*(s-y)*(s-z);return area;void main()float area;area=Tarea(a,b,c)+Tarea(d,e,c)+Tarea(e,f,g);printf(“%f”,area);函数返回为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能C程序的构成一个程序可由一个主函数main和若干个
4、其他函数构成。通常,一个较大的程序可分为若干个程序模块,每一个模块用来实现一个特定的功能。C语言中,模块由函数来实现。青岛农业大学理信学院为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能函数间的调用关系由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。青岛农业大学理信学院为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院主要内容一、函数的概念:定义、参数和返回值二、函数的调用三、数组作为函数参数四、局部变量和全局变
5、量五、变量的存储类别六、内部函数和外部函数为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院一、函数的概念1、函数的定义:返回值类型 函数名(参数1,参数n)声明部分;语句部分;遵循C语言标识符命名规范!如不需要可以省略没有参数的函数称为无参函数;否则,称为有参函数。例子为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院2、参数参数用于在主调函数和被调函数之间传递数据。函数定义时,括号中的参数称为形式参数,简称形参。函数被调用时,括号中
6、的参数称为实际参数,简称实参。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院例例8.8.调用函数时的数据传递调用函数时的数据传递#include int max(int,int)int z;z=xy?x:y;return(z);void main()int,;scanf(”%d,%d”,&a,&b);cmax(,);printf(“Max is“,);运行情况如下:运行情况如下:,Max is 形参在此必须要指定形参的类型实参1、实参的类型应该与形参类型相同或者赋值兼容。2、实参必须有确定的值,可以是常量、变量
7、或者表达式。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院“值传递”1)函数定义时,形参并不分配内存空间;2)函数调用时,才为形参分配空间,并由实参将值传递给形参;该过程是一个单向的“值传递”;3)函数调用结束后,形参空间释放。注意:在内存中,实参和形参是不同的单元。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院3、返回值函数的返回值指函数调用结束后返回给主调函数的值。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,
8、贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院1)如何获得函数返回值?return 语句:作用是将某个确定值返回给主调函数。形式:return(需要返回的值);int max(int x,int y)return xy?x:y;括号可以省略,中间加空格分隔;需要返回的值可以是变量,也可以是表达式。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院2)返回值类型函数定义时,由函数名前面的类型标识符指定。比如,int max(int x,int y)注意:return语句后面的值类型要与返回值类
9、型一致。如果不一致,也要求必须赋值兼容,并以函数定义时的类型为准,进行自动类型转换。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院例例8.3 8.3 返回值类型与函数类型不同返回值类型与函数类型不同#include int max(float,float)float z;z=xy?x:y;return(z);void main()float,;int;scanf(”%f,%f”,&a,&b);cmax(,);printf(“Max is“,);运行情况如下:运行情况如下:.2,6.5Max is 7 为深入学习
10、习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院3)void类型如果不希望函数有返回值,可以在定义的时候,将函数返回值声明为void类型。此时,函数体中不得出现return语句。void printfstar()printf(“*n”);为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院二、函数的调用函数调用的一般形式:函数名(实参列表);n有参函数:实参和形参应该个数相等,类型匹配。n无参函数:实参列表省略,但括号不能省略。为深入学习习近平新
11、时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院1、函数调用的方式1)函数语句n比如,printfstar();2)函数表达式nc=max(a,b);3)函数参数nm=max(a,max(b,c);为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院2、被调函数声明#include int max(int,int)return(xy?x:y);void main()int,;scanf(”%d,%d”,&a,&b);cmax(,);printf(“Max
12、 is“,);#include void main()int max(int x,int y);int,;scanf(”%d,%d”,&a,&b);cmax(,);printf(“Max is“,);int max(int,int)return(xy?x:y);为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院被调函数声明如果被调函数位于主调函数的后面,并且二者位于同一文件,则应该在主调函数中对被调函数作声明。作用:将函数名、参数个数、类型等信息通知编译系统,便于在编译阶段对函数调用进行合法性检查。为深入学习习近平
13、新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院以上的声明称为函数原型声明(function prototype)。两种形式:nfloat add(float,float);nfloat add(float a,float b);为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院注意:“定义”与“声明”不同函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。函数的声明则是把函数的名字、函
14、数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院3、函数的嵌套调用被调函数中又调用了另外的函数,称为函数的嵌套调用。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院例子include“stdio.h”void main()int i=10,j=20;int f1(int x,int y);int f2(int x,int y);i=f1(i,j);
15、printf(“%d”,i);int f1(int x,int y)x=x*y;y=f2(x,y);return x+y;int f2(int x,int y)return x-y;为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院4、函数的递归调用被调函数中间接或者直接调用了该函数本身,称为函数的递归调用。例如:例如:int f(int x)int y,z;z=f(y);return(2*z);直接调用了函数自身为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室
16、育人功能青岛农业大学理信学院间接调用 int f(int x)int y,z;z=f1(y);return(2*z);int f1(int x)return f(x)*0.5+10;为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院例分析:例例8.88.8用递归方法求!用递归方法求!n!=n*(n-1)!(n1)1 (n=1)int f(int n)if(n=1)return 1;else return n*f(n-1);为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小
17、学图书室育人功能青岛农业大学理信学院三、数组作为函数的参数1、数组元素作为函数实参由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素可以作为函数的实参,与变量作实参一样,是单向传递,即“值传递”方式。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院例例 8.10 8.10 有两个数组和,各有个元素,将它们对应地逐个相比(即与比,与比)。如果数组中的元素大于数组中的相应元素的数目多于b数组中元素大于a数组中相应元素的数目(例如,aibi6次,biai3次,其中i每次为不同的值),则认为a数组大于b
18、数组,并分别统计出两个数组相应元素大于、等于、小于的次数。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院#include void main()int large(int x,int y);/*函数声明*/int 10,10,,;printf(enter array a);for(;)scanf(,);printf();printf(enter array);for(;)scanf(,);printf();for(;)if(large(i,i)=);else if(large(i,i)=)=+;else;为深入
19、学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院printf(aibi%d timesnai=bi%d timesnaik)printf(array a is larger than array bn);else if(nk)printf(array a is smaller than array bn);else printf(array is equal to array bn);large(int,int)int;if();else if()flag;else flag;return(flag);为深入学习习近平
20、新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院2、数组名作为函数参数用数组名作函数参数时,此时形参应当用数组名或指针变量。例例8.11 8.11 有一个一维数组score,内放10个学生成绩,求平均成绩。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院#include void main()float average(float array10);/*函数声明*/float score10,aver;int;printf(input scores
21、:);for(;scanf(,score);printf();averaverage(score);printf(average score is.n,aver);为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院float average(float array10)int;float aver,;for (;);return(aver);运行情况如下:运行情况如下:input scores:.5 .5 average score is 83.40 为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻
22、全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院第一种情况:形参以及对应的实参都是数组,要求二者类型一致、长度相同。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院例例 8.形参数组不定义长度形参数组不定义长度#include void main()float average(float array,int)float score_15,.,;float score_210=67.5,89.5,99,6.5,77,89.5,76.5,54,60,99.5;printf(“the average
23、of class A is%6.2fn”,average(score_1,5);printf(“the average of class B is%6.2fn”,average(score_2,10);为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院float average(float array,int)int;float aver,;for(;sumsumarray;aversum;return();运行结果如下:运行结果如下:the average of class A is 80.40The avera
24、ge of class is 78.20为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院第二种情况:在形参数组长度无法确定的情况下,可以不指定大小;而是另设一个形参,用于传递需要处理的数组元素个数。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能青岛农业大学理信学院强调:“地址传递”数组名代表数组第一个元素的地址。数组名做实参的时候,是将实参数组的首地址传递给形参数组,是“地址传递”或者叫做“引用传递”。即:二者共享同一段内存空间。为深入学习习近平新时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 函数 ppt 课件
限制150内