C语言第七章函数ppt课件.ppt
《C语言第七章函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言第七章函数ppt课件.ppt(58页珍藏版)》请在三一办公上搜索。
1、2023/1/4,1,第七章 函数,武汉理工大学计算机学院,2023/1/4,2,第七章 函数,7.1 函数的概念7.2 函数的定义7.3 函数的调用和函数的返回值7.4 函数应用实例7.5 嵌套调用和递归调用7.6 变量的作用域和存储类别7.7 内部函数和外部函数(*)7.8 编译预处理,2023/1/4,3,7.1函数的概念,#include stdio.hvoid stars(int n);void print_message();main()stars(20);print_message();stars(20);void stars(int n)int i;for(i=1;i=n;i+
2、)putchar(*);putchar(n);void print_message()printf(How do you do!n);,函数stars()、print_message()的声明,/*main函数的定义*/,stars()、print_message()函数调用,定义stars()函数,定义print_message()函数,程序运行后输出结果为:,2023/1/4,4,C 程序结构,2023/1/4,5,说明:,C是函数式语言一个C程序有且只能有一个名为main的主函数。所有的函数都是互相独立的,除main函数不能调用外,其它函数可以互相调用。函数库函数(标准函数)自定义函数,
3、2023/1/4,6,7.2 函数的定义,类型说明符 函数名(形参说明表)说明部分 语句部分,说明函数返回值的数据类型;若缺省,则为 int 类型;若函数无值,则定义为 void 类型。,由用户自己命名,合法的标识符,说明参数的个数和类型,说明函数中用到的除形参以外的其它变量等,为了完成函数特定的功能而设计的一个或多个语句,空函数:Function(),2023/1/4,7,函数定义实例,打印一行 n 个*void stars(int n)int i;for(i=1;i=n;i+)putchar(*);putchar(n);,求整数x的n次幂(n0)long power(int x,int n
4、)int i;long mul=1;for(i=1;i=n;i+)mul=mul*x;return(mul);,传统的定义风格,2023/1/4,8,传统的函数定义形式,long power(x,n)int x,n;int i;long mul=1;for(i=1;i=n;i+)mul=mul*x;return(mul);,2023/1/4,9,7.3 函数的调用和函数的返回值,7.3.1 函数的参数7.3.2 函数的返回值7.3.3 函数的声明7.3.4 函数的调用,2023/1/4,10,7.3.1 函数的参数,形式参数:函数定义时所使用的参数称为形式参数。形参可以是:变量或数组名。实际参
5、数:函数调用时所使用的参数称为实际参数。实参可以是:具有确切值的常量、变量、表达式或数组名。,2023/1/4,11,int max(int x,int y);void main()int a,b,c;scanf(%d%d,形参只能是变量或数组名,int max(int x,int y),c=max(a,b),实参可以是常量、变量、表达式或数组名,但要求它们有确定的值如:c=max(10,(a+b)/2);实参与形参之间:个数一致,类型一致或赋值兼容,顺序一致。,形参:变量,值,2023/1/4,12,7.3.2 函数的返回值,返回语句(return语句):格式:return(表达式);或 r
6、eturn 表达式;或 return;功能:将流程及表达式的值从被调用函数返回到函数的调用处。说明:,int max(int x,int y)int z;z=(xy)?x:y;return(z);,若return后面带表达式,首先计算表达式的值,表达式的值就是所求的函数值。,return z;,return(xy)?x:y);,2023/1/4,13,说明(续),一个函数体内可以有多个或没有return语句;,int max(int x,int y)int z;if(xy)return(x);else return(y);,void output(int m)printf(”%d”,m);re
7、turn;,若return后面没有表达式,或没有return语句,则可能会返回不定值。,output(int m)printf(”%d”,m);return;,/*默认为int类型函数*/,void:空类型,2023/1/4,14,7.3.3 函数的声明,#include stdio.hvoid stars(int n);void print_message();main()stars(20);print_message();stars(20);,void stars(int n)int i;for(i=1;i=n;i+)putchar(*);putchar(n);void print_mes
8、sage()printf(How do you do!n);,2023/1/4,15,函数声明的一般形式:函数类型 函数名(类型名 形参1,类型名 形参2,)包含参数和返回值类型的函数声明称为函数原型。函数类型 函数名(类型名,类型名,)若有函数:float fun(double a,int b,float c)则可有函数声明:float fun(double a,int b,float c);float fun(double x,int y,float z);float fun(double,int,float);,说明:,2023/1/4,16,说明(续):,如果函数的值是 int 或 c
9、har 型,可以不必进行声明,系统自动按 int 型声明。,如果被调用函数出现在主调函数之前,可以不必进行声明。,#include main()int a,b,c;scanf(%d%d,int max(int x,int y)int z;z=xy?x:y;return(z);,2023/1/4,17,说明(续):,如果已在所有函数定义之前,在函数的外部已作了函数声明,则在各个主调函数中不必对所调用的函数再做声明。,2023/1/4,18,7.3.4 函数的调用,调用的一般形式:函数名(实参1,实参2,)说明:若调用无参函数,则无实参表列,但括弧不能省略;如果实参表列包含多个实参,则各参数间用逗
10、号隔开;实参与形参的个数应相等,类型应一致或赋值相容;实参与形参按顺序一一对应传递数据;,2023/1/4,19,调用方式函数语句:由函数调用加上分号构成,在主调函数中可作为一个独立的语句。如:stars(20);或 printf(”C program”);函数表达式:函数调用作为一个运算对象出现在表达式中,此时要求函数带回一个确定的值以参加表达式的运算。如:c=mysqrt(a);函数参数:函数调用作为另一个函数的实参,其值作为一个实际参数传给被调函数的形参进行处理;此时也要求函数带回一个确定值。如:m=max(a,max(b,c);printf(%d,max(a,b);,2023/1/4,
11、20,调用过程float add();main()float a,b,c;scanf(”%f,%f”,调用,流程从主调函数转移到被调用函数,且实参将值传给对应的形参;执行被调用函数;流程从被调用函数返回到主调函数,并返回函数值。,6,15,6,15,21,2023/1/4,21,调用过程float add();main()float a,b,c;scanf(”%f,%f”,6,15,10,17,17,27,11,18,29,29,形参:变量,实参:常量变量表达式,值,10,2023/1/4,22,7.4 函数应用实例,例7.1 求累加和 sum=1+2!+10!分析:可以编写一个求阶乘的函数f
12、ac(n)计算n!实现:,long fac(int n);main()int i;long sum=0;for(i=1;i=10;i+)sum+=fac(i);printf(”nsum=%ld”,sum);,long fac(int n)int i;long x=1L;for(i=1;i=n;i+)x*=i;return(x);,2023/1/4,23,例7.2 由键盘输入x、y及z的值,计算函数 sin(x)sin(y)sin(z)func(x,y,z)=+sin(x-y)sin(x-z)sin(y-z)sin(y-x)sin(z-x)sin(z-y),分析:可以定义一个函数part(x,y
13、,z)求每加项的值另外定义一个度与弧度之间的转换函数change(x)主函数中以度为单位输入x、y及z的值,并转换为弧度;多次调用part()函数求出func的值输出func的值,2023/1/4,24,sin(x)sin(y)sin(z)func(x,y,z)=+sin(x-y)sin(x-z)sin(y-z)sin(y-x)sin(z-x)sin(z-y),#includedouble change(float x);double part(float x,float y,float z);main()float x,y,z,sum;scanf(”%f%f%f”,2023/1/4,25,s
14、in(x)sin(y)sin(z)func(x,y,z)=+sin(x-y)sin(x-z)sin(y-z)sin(y-x)sin(z-x)sin(z-y),double change(float x)return(x*3.14159/180);,double part(float x,float y,float z);float tmp;tmp=sin(x)/sin(x-y)/sin(x-z);return(tmp);,2023/1/4,26,7.5 函数的嵌套调用和递归调用,7.5.1 函数的嵌套调用7.5.2 函数的递归调用,2023/1/4,27,7.5.1 函数的嵌套调用,语言的函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第七 函数 ppt 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2052606.html