二级C语言高频考点分析与实战--第7章函数(书上ch8).ppt





《二级C语言高频考点分析与实战--第7章函数(书上ch8).ppt》由会员分享,可在线阅读,更多相关《二级C语言高频考点分析与实战--第7章函数(书上ch8).ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Company Logo第第7章函数章函数Top39:函数定义和返回值:函数定义和返回值Top40:有返回值函数的一般调用:有返回值函数的一般调用Top41:无返回值函数的一般调用:无返回值函数的一般调用Top42:函数的嵌套和递归调用:函数的嵌套和递归调用Top44:调用函数和被调用函数之间的数据传递:调用函数和被调用函数之间的数据传递Top43:函数的声明:函数的声明Company LogoC程序结构&C C是是函数式函数式语言语言,C C程序的基本单位是函数程序的基本单位是函数&必须有且只能有一个名为必须有且只能有一个名为mainmain的主函数的主函数&C程序的执行总是程序的执行总是从
2、从mainmain函数开始,在函数开始,在mainmain中结束中结束&函数函数不能嵌套定义不能嵌套定义,可以可以嵌套嵌套调用调用Company Logov函数分类函数分类从用户角度标准函数(库函数):由系统提供用户自定义函数从函数形式从函数形式无参函数无参函数有参函数有参函数使用库函数应注意:1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件Company Logo库函数(标准函数):系统提供的已经设计好的函数。库函数(标准函数):系统提供的已经设计好的函数。库函数库函数 数学函数数学函数 abs(intabs(int)字符(串)函数字符(
3、串)函数 输入输出函数输入输出函数 动态分配和随机函数动态分配和随机函数 fabs(doublefabs(double)exp(doubleexp(double)pow(double,doublepow(double,double)strcmpstrcmp(*s1,*s2)(*s1,*s2)strcpystrcpy(*s1,*s2)(*s1,*s2)strlenstrlen(*s1)(*s1)calloccalloc()()mallocmalloc()()rand()rand()Company Logo说明:说明:(1)调用库函数时,必须要用命令行)调用库函数时,必须要用命令行#include
4、“头文件名头文件名”(2)标准库函数的调用形式)标准库函数的调用形式函数名(参数表)函数名(参数表)例:例:y=pow(x,2.5)y=x2.5 clrscr();for(i=0;iy?x:y;return(z);例 有参函数(现代风格)int max(int x,y)int z;z=xy?x:y;return(z);例 空函数 dummy()函数体为空例 无参函数 printstar()printf(“*n”);或 printstar(void)printf(“*n”);Company Logo函数类型 函数名(形参表)形参类型说明说明部分语句部分传统风格:例 有参函数(传统风格)int m
5、ax(x,y)int x,y;int z;z=xy?x:y;return(z);Top39函数定义和返回值函数定义和返回值Company Logo函数的返回值函数的返回值2功能:使程序控制从被调用函数返回到调用函数中,功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数同时把返值带给调用函数。返回语句形式:返回语句形式:return(表达式表达式);或或 return 表达式表达式;或或 return;l说明:l函数中可有多个return语句l若无return语句,遇时,自动返回调用函数l若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换lv
6、oid型函数例 无返回值函数 void swap(int x,int y)int temp;temp=x;x=y;y=temp;Top39函数定义和返回值函数定义和返回值Company Logo printstar()printf(*);main()int a;a=printstar();printf(%d,a);例例 函数带回不确定值函数带回不确定值输出:输出:10void printstar()printf(*);main()int a;a=printstar();printf(%d,a);编译错误!编译错误!Top39函数定义和返回值函数定义和返回值Company Logov考点考点To
7、p39函数定义和返回值函数定义和返回值2.函数的返回值函数的返回值1.C语言函数定义的一般形式语言函数定义的一般形式存储类型说明符存储类型说明符 函数返回值类型函数返回值类型 函数名(类型名函数名(类型名 形参形参1,类型名,类型名 形参形参2,。),。)说明部分说明部分执行部分执行部分说明:说明:存储类型说明符是用来说明该函数是内部函数还是外部存储类型说明符是用来说明该函数是内部函数还是外部函数。函数。函数返回值的类型是用来说明该函数返回值的类型,如函数返回值的类型是用来说明该函数返回值的类型,如果没有返回值,则其类型说明符应该为果没有返回值,则其类型说明符应该为void。函数名和形式参数都
8、是由用户命名的标识符。在同一程函数名和形式参数都是由用户命名的标识符。在同一程序中,函数名必须唯一,形参名只要在同一函数中唯一序中,函数名必须唯一,形参名只要在同一函数中唯一即可,可以与其它函数中的变量重名。即可,可以与其它函数中的变量重名。若省略了函数返回值的类型默认为若省略了函数返回值的类型默认为int型。型。形参可以省略,称为无参函数。在调用时不用参数。形参可以省略,称为无参函数。在调用时不用参数。函数体中,除形参外,用到的其它变量必须在说明部分函数体中,除形参外,用到的其它变量必须在说明部分进行定义,且可以和其它函数中的变量重名。进行定义,且可以和其它函数中的变量重名。函数值通过函数值
9、通过return语句返回语句返回,一般形式为:一般形式为:return(表达式表达式);或或 return 表达式表达式;或或 return;说明:说明:return语句中表达式的值就是所求的函数值,且其类型语句中表达式的值就是所求的函数值,且其类型必须与函数首部所说明的类型一致,若类型不一致,则必须与函数首部所说明的类型一致,若类型不一致,则由系统自动转换为函数值的类型。由系统自动转换为函数值的类型。在程序执行到在程序执行到return语句时,流程就返回到调用该函数语句时,流程就返回到调用该函数处,并带回函数值。在同一个函数体内,可以在多处处,并带回函数值。在同一个函数体内,可以在多处ret
10、urn语句。语句。return语句也可以不含表达式。此时,它只是使流程返语句也可以不含表达式。此时,它只是使流程返回到调用函数,并没有确定的函数值。回到调用函数,并没有确定的函数值。函数体内也可以没有函数体内也可以没有reture语句,程序就一直执行到函语句,程序就一直执行到函数末尾,然后返回到调用函数,此时也没有确定的函数数末尾,然后返回到调用函数,此时也没有确定的函数值带回。值带回。Company Logov真题分析真题分析(2007年4月)在C语言中,函数返回值的类型最终取决于A、函数定义时在函数首部所说明的函数类型B、return语句中表达式值的类型C、调用函数时主调函数所传递的实参类
11、型D、函数定义时形参的类型Top39函数定义和返回值函数定义和返回值returnreturn语句中表达式的值就是所求的函数值,语句中表达式的值就是所求的函数值,且其类型必须与函数首部所说明的类型一致。且其类型必须与函数首部所说明的类型一致。ACompany LogoTop39函数定义和返回值函数定义和返回值v真题分析真题分析(2006年4月)下列isprime 函数的功能是判断形参a 是否为素数,是素数,函数返回1,否则返回0。请填空int isprime(int a)int i;for(i=2;i=a/2;i+)if(a%i=0);return 0return 1Company LogoTo
12、p39函数定义和返回值函数定义和返回值v真题分析真题分析(2006年4月)已经定义以下函数,fun函数的返回值是A、不确定的值B、一个整数C、形参p中存放的值D、形参p的地址int fun(int*p)return*p;)returnreturn语句中表达式的值就是所求的函数值,语句中表达式的值就是所求的函数值,且其类型必须与函数首部所说明的类型一致。且其类型必须与函数首部所说明的类型一致。BCompany LogoTop39函数定义和返回值函数定义和返回值v练习题练习题1、程序中对fun函数有如下说明void*fun()此说明的含义是A、fun函数无返回值。B、fun函数的返回值可以是任意类
13、型的数据类型C、fun函数的返回值是无值型的指针类型D、指针fun指向一个函数,该函数无返回值。CCompany LogoTop40有返回值的函数的一般调用形式有返回值的函数的一般调用形式v考点考点2.函数调用的过程函数调用的过程1.有返回值的函数的调用形式有返回值的函数的调用形式函数名(实际参数列表)函数名(实际参数列表)3.函数调用的语法要求函数调用的语法要求调用的结果是获得一个返回值,该返回值可以参加相应调用的结果是获得一个返回值,该返回值可以参加相应类型的计算。类型的计算。首先为被调用函数的所有形参分配内存,再计算实际参首先为被调用函数的所有形参分配内存,再计算实际参数的值,再一一对应
14、地赋给相应的形参(对于无参函数,数的值,再一一对应地赋给相应的形参(对于无参函数,不做这项工作)。不做这项工作)。然后进行函数体,为函数说明部分定义的变量分配存储然后进行函数体,为函数说明部分定义的变量分配存储空间,再依次执行函数体中的可执行语句。空间,再依次执行函数体中的可执行语句。当执行到当执行到return语句时,计算返回值,收回本函数中定语句时,计算返回值,收回本函数中定义的变量所占用的存储空间,对于义的变量所占用的存储空间,对于static类型的变量,类型的变量,其空间不收回),返回主调函数继续执行。其空间不收回),返回主调函数继续执行。调用函数时,函数名必须与所调用的函数名字完全调
15、用函数时,函数名必须与所调用的函数名字完全一致。一致。实参的个数必须与形参一致。实参的个数必须与形参一致。C语言规定,函数必须先定义后调用。语言规定,函数必须先定义后调用。Company LogoTop40有返回值的函数的一般调用形式有返回值的函数的一般调用形式v真题分析真题分析(2006年9月)有以下程序,程序运行后的输出结果是。A、6B、7C、8D、9fun(int x,int y)return(x+y);main()int a=1,b=2,c=3,sum;sum=fun(a+,b+,a+b),c+);printf(%dn,sum);CCompany LogoTop40有返回值的函数的一般
16、调用形式有返回值的函数的一般调用形式v真题分析真题分析(2005年9月)有以下程序,若运行时输入:1234,则程序的输出结果是int sub(int n)return(n/10+n%10);main()int x,y;scanf(%d,&x);y=sub(sub(sub(x);printf(%dn,y);10Top40有返回值的函数的一般调用形式有返回值的函数的一般调用形式v真题分析真题分析(2011年9月)有以下程序,程序运行后的输出结果是(选择题24题)A)503 B)401C)500 D)1404Company Logo#include double f(double x);main()
17、double a=0;int i;for(i=0;i30;i+=10)a+=f(double)i);printf(%5.0fn,a);double f(double x)return x*x+1;ACompany LogoTop40有返回值的函数的一般调用形式有返回值的函数的一般调用形式v练习题练习题1、以下程序通过函数、以下程序通过函数SunFun求求 ,f(x)=x2+1由由函数函数F实现。请填空。实现。请填空。main()printf(“The sum=%dn”,SunFun(10);SunFun(int n)int x,s=0;for(x=0;x=n;x+)s+=F(_);return
18、 s;F(int x)return _;xx*x+1Company LogoTop41无返回值的函数的一般调用形式无返回值的函数的一般调用形式v考点考点1、无返回值的调用形式、无返回值的调用形式函数名(实际参数列表)函数名(实际参数列表);这里的分号必不可少这里的分号必不可少2、无返回值的函数的执行过程、无返回值的函数的执行过程与有返回值的调用形式一样,只是最后没有与有返回值的调用形式一样,只是最后没有“return(表达式表达式)”Top41无返回值的函数的一般调用形式无返回值的函数的一般调用形式真题分析(2011年3月)有以下函数void prt(char ch,int n)int i;f
19、or(i=1;iy?x:y;int f2(int x,int y)return xy?y:x;main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%d”,e,f,g);ACompany LogoTop42 函数的递归调用函数的递归调用考点:考点:v递归调用递归调用定义:函数直接或间接的调用自身叫函数的递归调用Company Logof()调f调f2调f1f1()f2()说明C编译系统对递归函数的自调用次数没有限制每调用函数一次,在内存堆栈区分配
20、空间,用于存放函数变量、返回值等信息,所以递归次数过多,可能引起堆栈溢出int f(int x)int y,z;z=f(y);.return(2*z);int f1(int x)int y,z;z=f2(y);.return(2*z);int f2(int t)int a,c;c=f1(a);.return(3+c);Top42 函数的递归调用函数的递归调用Company LogoTop42 函数的递归调用函数的递归调用v真题分析真题分析(2007年4月)以下程序的输出结果是10int fun(int*x,int n)if(n=0)return x0;else return x0+fun(x+
21、1,n-1);main()int a=1,2,3,4,5,6,7;printf(%dn,fun(a,3);f(&a0,3)f(&a1,2)f(&a2,1)f(&a3,0)Top42 函数的递归调用函数的递归调用真题分析真题分析(2011年3月)设有如下函数定义int fun(int k)if(k1)return 0;else if(k=1)return 1;else return fun(k-1)+1;若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是(选择题32题)A)2 B)3 C)4 D)5Company LogoBTop42 函数的递归调用函数的递归调用真题分析真题分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 高频 考点 分析 实战 函数 书上 ch8

限制150内