C语言教程课件Ch08函数-1复习.ppt
第八章第八章 函数函数8.1 概述概述8.2 函数定义的一般形式函数定义的一般形式8.3 函数参数和函数的值函数参数和函数的值8.4 函数的调用函数的调用8.5 函数的嵌套调用函数的嵌套调用8.6 函数的递归调用函数的递归调用8.7 数组作为函数参数数组作为函数参数8.8 局部变量和全局变量局部变量和全局变量8.9 变量的存储类别变量的存储类别8.10 内部函数和外部函数内部函数和外部函数程序模块化设计程序模块化设计C程序有文件组成,文件有函数组成程序有文件组成,文件有函数组成无参函数无参函数/有参函数有参函数自定义函数自定义函数/系统函数系统函数等等等等8.1 概述概述int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);8.2 定义的一般形式定义的一般形式函数类型函数名(形参类型说明表)函数类型函数名(形参类型说明表)说明部分说明部分语句部分语句部分 c=max(a,b);(main 函数)(max 函数)max(int x,int y)int z;z=xy?x:y;return(z);比较两个数并输出大者比较两个数并输出大者void main()int max(int x,int y);int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(Max is%d,c);int max(int x,int y)int z;z=xy?x:y;return(z);形参实参8.函数的参数和函数的值函数的参数和函数的值711x:y:调用前:调用前:调用结束:调用结束:711x:y:例例 交换两个数交换两个数/*ch8_2.c*/*ch8_2.c*/#include#include void main()void main()int x=7,y=11;int x=7,y=11;void swap(void swap(int a,int bint a,int b);printf(x=%d,ty=%dn,x,y);printf(x=%d,ty=%dn,x,y);printf(swapped:n);printf(swapped:n);swap(x,y);swap(x,y);printf(x=%d,ty=%dn,x,y);printf(x=%d,ty=%dn,x,y);void swap(void swap(int a,int bint a,int b)int temp;int temp;temp=a;a=b;b=temp;temp=a;a=b;b=temp;调用:调用:711a:b:711x:y:swap:711x:y:117a:b:temp函数语句函数语句函数表达式函数表达式函数参数函数参数8.4 函数的调用函数的调用u参数求值的顺序参数求值的顺序u函数声明函数声明u函数原型函数原型void main()void main()int i=2,p;int i=2,p;p=f(i,+i);p=f(i,+i);printf(%d,p);printf(%d,p);int f(int a,int b)int f(int a,int b)int c;int c;if(ab)c=1;if(ab)c=1;else if(a=b)c=0;else if(a=b)c=0;else c=-1;else c=-1;return(c);return(c);例例 参数求值顺序参数求值顺序运行结果:0#include long sum(int a,int b);long factorial(int n);void main()int n1,n2;long a;scanf(%d,%d,&n1,&n2);a=sum(n1,n2);printf(a=%1d,a);long sum(int a,int b)long c1,c2;c1=factorial(a);c2=factorial(b);return(c1+c2);long factorial(int n)long rtn=1;int i;for(i=1;i=n;i+)rtn*=i;return rtn;long sum(int a,int b);long factorial(int n);文件包含编译预处理命令文件包含编译预处理命令函数声明函数声明函数定义函数定义函数调用函数调用函数调用函数调用函数返回值函数返回值形参形参实参实参完成什么功能完成什么功能?