ImageVerifierCode 换一换
格式:PPT , 页数:82 ,大小:735KB ,
资源ID:12293589      下载积分:18 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12293589.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(谭浩强C语言教程函数.ppt)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

谭浩强C语言教程函数.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,谭浩强C语言教程 函数,一、C,程序模块,一个C,程序可由一个main()函数和多个其它函数构成。,5.1 C,程序模块,其它函数指的是:,系统函数,由系统提供,放在头文件中,自编函数,由程序设计人员编写,二、函数的调用,如:,main,funa,funb,func,fund,funx,funy,所有的函数都 具有两种特征:,返回值,参数,(返回值和参数都是可缺省的),5.2 库函数,一、库函数简介,系统自带的标标准库函数根据不同的功能作用放在不同的头文件中。,如:,stdio.h,用于标准输入/输出,ma

2、th.h,用于数学计算,ctype.h,用于字符处理,string.h,用于字串处理,time.h,用于时间/日期的处理,dir.h,用于控制目录和路径,graphics.h,用于图形操作,dos.h,bios.h,用于接口处理,二、库函数的作用,使程序更具有“独立性”和“可移植”性。,使用时只需在程序的开头加上一条语句:,#include “”,根据使用的函数来确定,使程序具有“模块化”。,例:,求两个浮点型数值x/y,的余数。,(注意:不能写成3.6%1.7 =2.0),#include,#include,main(),float x,y,z;,scanf(%f%f,z=fmod(x,y)

3、printf(z=%f,z);,例:函数的结构,main(),printstar();,print_message();,printstar();,printstar(),printf(“*”);,print_message(),printf(“how do you do!n”);,对函数的理解:,一个源程序由一个或多个函数组成。,一个,c,程序由一个或多个源程序组成。,c,程序的执行顺序从,main(),开始,调用其他函数后,流程回到,main(),函数。,c,程序的所有的函数都是平行的,不存在函数的嵌套定义。,从用户的角度对函数的分类:,(1)标准库函数:由系统提供。,(2)用户自定义

4、函数:解决用户的专门需要。,从函数的形参对函数的分类:,(1)有参数函数:用于执行指定的一组操作,可以带回或不带回函数值。,(2)无参数函数:主调函数可以将数据传给被调函数使用,被调函数中的数据也可以带回给主调函数使用。,5.3 自定义函数,一、自定义函数的作用,使程序具有“积木”功能。(模块化),使程序具有“重构”功能。,1、含义:函数是完成一个独立功能的程序代码。,2、C程序的基本结构(如图):,1、函数的返回值是通过函数中的return语句来完成的,return语句一次只能返回一个值;,2、由return语句返回的数据类型应与函数定义时的类型一致。,例:,3、当在函数的定义时,未指出函数

5、的类型,c语言默认的类型为整型.,4、函数没有return语句并不表明函数没有返回值,只是这个返回值对于调用者来说可能是没有用的,这个返回值随函数的不同它的值也不尽相同.,5、如果我们明确表示函数不能返回值,在函数的定义时用“void”加以说明,这样可以确保函数不带回返回值.,return z 等价 return(z),return(xy?x:y);,6、例:,函数的返回值,例:对函数返回值的理解:,main(),int a,b,c;,a=printstar();,b=print_message();,c=printstar();,printf(“%d,%d,%dn”,a,b,c);,若不需要

6、函数带回任何值,可使用:,void printstar(),void print_message(),例:函数返回值的类型与其定义的类型不符时:,main(),float a,b;,int c;,scanf(“%f,%f”,c=max(a,b);,printf(“max is%dn”,c);,max(float x,float y),输入:1.5,2.5,float z;输出:max is 2,z=xy?x:y;return(z);,/*return(xy?x:y)等价*/,函数的一般调用,1、函数调用的一般形式:,函数名(实参表列);,如:add(int x,int y)的调用为add(2,

7、3),2、函数调用的规则:,实参与形参在个数与类型上必须保持一致。,当函数无参数时,实参表列就为空,但括号不能少。,实参表列中的各个参数之间用逗号隔开。,实参与形参是一一对应的关系(函数调用的过程)。,对于实参表的求值顺序各个系统是不一致的。,1.函数语句:,功能:将函数调用作为一个语句。,如:printf(“book”);,要点:,不要求函数带回值,只要求完成一定的操作。,2.函数表达式:,功能:将函数作为表达式的一部分。,如:c=2*max(a,b);,要点:,要求函数带回一个确定的值,以参加表达式的运算。,3.一个函数作为另一个函数的参数:,功能:将函数的调用作为一个函数的实参。,如:m

8、max(a,max(b,c)),;,要点:其实质也是函数表达式的调用。,函数调用的方式,1.被调用函数必须是一个已经存在的函数.,2.如果使用库函数应在文件头加上#include命令,以便将有关的库函数包含到本源文件中来.,3.对于用户自定义函数,函数的定义部分应出现在该函数被调用之前.不然的话,在调用函数之前应作提前说明.,4.引用性说明的方法:,一般形式:,函数类型 函数名(形参类型 形参名,.);,或,函数类型 函数名();,作用:告诉编译系统函数类型、参数个数及类型,以便检验,返回值类型 函数名(),如:int add();,函数的引用性说明,例1:,求二个数中的最大值,int m

9、ax(x,y),int x,y;,int z;,z=xy?x:y;,return(z);,用return,语句,返回函数的值。,或:,int max(int x,int y),int z;,z=xy?x:y;,return(z);,四、举例,通过函数调用求二个数中的最大值:,#include,int max(int,int);/*,函数原型*/,main(),int a,b,t;,scanf(%d%d,t=max(a,b);/*,函数调用*/,printf(value of maximize is:t=%d,t);,int max(int x,int y)/*,函数定义*/,int z;,z=

10、xy?x:y;,return(z);,#include,float add();,/*函数说明*/,main()float a,b,c;scanf(,%f,%f,c=add(a,b);,/*函数调用*/,printf(,sum=%f,;,c);,float add(float x,float y,);,/*函数定义*/,float z;,z=x+y;,return z;,求二实数之和,规则:若函数的定义放在main(),函数之前可省略函数说明。,第五章 函数,#include,float add(float x,float y,);/*函数定义*/,float z;z=x+y;return z

11、main()float a,b,c;scanf(,“,%f,%f,”,c=add(a,b);,/*函数调用*/,printf(,sum=%f,;,c);,求二实数之和,(将例1程序改写如下:),第五章 函数,1.形参与实参,调用时:,实参值,单向,传递,形参。,函数被调用时,临时分配单元给形参,调用完毕,这些单元被释放。,实参:,出现在调用函数中,,形参,:出现被调用函数中。,五、自定义函数中的几个重要特征,实参可为表达式,只传递表达式的值。,实参、形参类型一致。,可在形参表列中对形参说明。,注:,!?,2.函数返回,或 return,变量的值;,通过 return,语句将流程返回主调函数

12、return;,函数无返回值,return,表达式的值;,3.函数名,要选择一个简洁的有意义的名字作为函数名。,从函数名可以反映出函数的功能。,六、传值调用和传引用(传址),调用,1.传值调用,方式:,函数的实参和形参的类型均为简单变量。,当实参,传递,形参时,系统会建立一份实参的拷贝给形参。,当函数调用完毕,这份实参的拷贝消失。,特点:,传值调用不会影响实参的值。,形参与实参,形式参数:定义函数时函数名后面括号中的变量名,实际参数:调用函数时函数名后面括号中的表达式,c=max(a,b);,(main 函数),(max 函数),max(int x,int y),int z;,z=xy?x

13、y;,return(z);,例 比较两个数并输出大者,main(),int a,b,c;,scanf(%d,%d,c=,max(a,b);,printf(Max is%d,c);,max(,int x,int y,),int z;,z=xy?x:y;,return(z);,形参,实参,2.传引用(传址)调用,把实参,形参后,传递,形参变量和实参变量共同内存地址。,地址传递:数组名和指针(共用内存单元),特点:,形参变量的值的变化会影响实参的值的改变。,5.4 函数的存储类型,一、标识符的属性,一个标识符的属性除了前面已讲过的基本属性外,还具有一些其它的属性:,存储类别,存储期,函数中的变量,

14、1、按作用域分,局部变量:在本函数内部有效,全局变量:从定义位置到源程序结束均有效,2、按存储类型分,静态存储变量:程序运行时有固定的存储空间,,结束时释放内存单元,动态存储变量:根据需要动态分配和释放内存单元,举例说明,二、存储类别,1.存储类型和存储期,自动型(auto),寄存器型(register),外部型(extern),静态型(static),自动存储期,静态存储期,2.存储期的性质,自动存储:只有变量才具有自动存储期,如函数中的变量说明:,auto float x,y;,auto int m,n;,作用:,进入到函数块中,该变量存在,退出函数块后该变量消失。程序中大部分变量都具有自

15、动存储期。,静态存储:可用于变量和函数,如:,static int;,作用:,从程序开始执行起就一直存在,始终占据内存单元,直到程序结束运行。,对静态存储变量,若定义时赋初值,则程序运行中仅在第一次调用时赋初值,下一次调用不再赋初值,而是使用上一次调用的值。,特别提醒:,对静态存储变量,若定义时不赋初值,则系统置初值0,而动态变量不赋初值则值不确定。,#include,int fac(n),/*函数定义*/,int n;static int f=1;f=f,n;return(f);,main()int i;for(i=1;ib?a:b;,return(c);,main(),int a=8;,p

16、rintf(max=%d,max(a,b);,运行结果:max=8,例 外部变量与局部变量,全局变量,1、含义:在所有的函数之外定义的变量称为外部变量(或叫做全局变量).其作用范围是从变量定义的位置开始,直到本源文件的结束。如:,2、,要点:,3、,举例:,int p=1,q=1;/*定义全局变量p,q*/,float f1(a)/*定义函数f1*/,int a;,int b,c;,char c1,c2;/*定义外部变量c1,c2*/,char f2(int x,int y)/*定义函数f2*/,int i,j;,main()int m,n;,全局,变量p,q的有,效范围,全局,变量c1,c2

17、的有,效范围,(,1)一个源文件可以包含一个或几个函数.,(2)全局变量可以被本源文件的所有函数共享.,(3)全局变量的设置增强了函数间数据的联系.一个函数对全局变量的值的改变将会影响到其他的函数中.例:(用于返回多个函数值),(4)建议在只有必要时才设置全局变量.,(5)全局变量在文件的开头定义,则它的有效范围是整个源文件,但如果全局变量不是在开头定义的,则它有效范围是从定义点到源文件的结束.如果想在全局变量的定义点之前引用时,需要用关键字“extern”作提前引用说明.,(6)当全局变量名与局部变量名相同时,则在局部变量的有效范围内全局变量不起作用.,例:写一个函数,找出100-200之间

18、的全部素数。,#include“stdio.h”,#include“math.h”,int isprime(int d);,int i,s;,s=sqrt(d);,for(i=2;i=s;i+),if(d%i=0)return 0;,return 1;,main(),int m,n=0;,for(m=100;m=200;m+),if(isprime(m),if(n%10=0)printf(“n”);n+;printf(“%d”,m);,例:有一个一维数组,内放10个学生成绩,写一个函数,求出平均分、最高分和最低分。,略,float max=0,min=0;main(),float averag

19、e(array,n)float ave,score10;,float array;int n;int i;,int i;for(i=0;i10;i+),float aver,sum=array0;scanf(“%f”,max=min=array0;ave=average(score,10);,for(i=0;imax)max=arrayi;max,min,ave);,else if(arrayiy?x:y;,return z;,f2(int x,int y),int z;,z=xy?+x:+y;,return z;,main()extern int a,b;,printf(“%d,%d,%dn

20、a,b,f1(a,b);,printf(“%d,%d,%dn”,a,b,f2(a,b);,int a=20,b=-15;,20,-15,20/20,-15,21,例,输入长方体的长(l)、宽(w)、高(h),求长方体体积及正、侧、顶三个面的面积。,/*功能:利用全局变量计算长方体的体积及三个面的面积*/,int s1,s2,s3;,int vs(int a,int b,int c),int v;,v=a*b*c;s1=a*b;s2=b*c;s3=a*c;,return v;,main(),int v,l,w,h;,clrscr();,printf(n input length,width

21、and height:);,scanf(%d%d%d,v=vs(l,w,h);,printf(v=%d s1=%d s2=%d s3=%dn,v,s1,s2,s3);,getch();,程序演示,#include,int i=1;,main(),static int a;,register int b=-10;,int c=0;,printf(-MAIN-n);,printf(i:%d a:%d ,b:%d c:%dn,i,a,b,c);,c=c+8;,other();,printf(-MAIN-n);,printf(i:%d a:%d ,b:%d c:%dn,i,a,b,c);,i=i+10

22、other();,other(),static int a=2;,static int b;,int c=10;,a=a+2;i=i+32;c=c+5;,printf(-OTHER-n);,printf(i:%d a:%d ,b:%d c:%dn,i,a,b,c);,b=a;,-Main-,i:1 a:0 b:-10 c:0,-Other-,i:33 a:4 b:0 c:15,-Main-,i:33 a:0 b:-10 c:8,-Other-,i:75 a:6 b:4 c:15,全局i,1,main:a,0,b:-10,register,main:c,0,静态,存储区,动态,存储区,oth

23、er:a,2,other:b,0,other:c,10,8,4,33,15,4,43,other:c,10,6,75,15,6,例 变量的寿命与可见性,例:,f(a),int a;,auto int b=0;,static int c=3;,b+=1;c+=1;,return(a+b+c);,main(),int a=2,i;,for(i=0;i3;i+),printf(“%3d”,f(a);,运行结果:789,例:,int fac(int n),register int i,f=1;,for(i=1;i=n;i+)f=f*i;,return f;,main(),int i;,for(i=1;

24、iy?x:y;,return(rz?r:z);,int min(int x,int y,int z),int r;,r=xy?x:y;,return(r1),当条件成立,调用递归,否则结束。,例:,求n!,1.,从数学上定义,#include long fac(int n),/*函数定义,计算n!*/,long f;,if,(n1),age(n)=,递归调用的过程,age(5)=,age(4)+,2,age(4)=,age(3)+,2,age(3)=,age(2)+,2,age(2)=,age(1)+,2,age(1)=,10,age(2)=,10+,2,age(3)=,12+,2,age(4

25、)=,14+,2,age(5)=,16+,2,程序代码:,age(int n),int c;,if(n=1)c=10;,else c=age(n-1)+2;,printf(“No%d age is%dn”,n,c);,return c;,main(),age(5);,运行结果为:1 age is 10,2 age is 12,3 age is 14,4 age is 16,5 age is 18,例:求下面程序的输出结果。,fun(int k),if(k=0)return 3;,return(fun(k-1)*3);,main()int w=10;,printf(“%dn”,fun(5)*w)

26、运行结果为:7290,作业1,编程计算组合C,n,m,的函数,C,n,m,=_,m!,_,n!(m-n)!,作业2,利用递归算法求:,M!+M+M,N,利用递归算法求:,M!+M+M,N,main(),int m,n;,scanf(%d,%d,printf(%d,f(m)+g(m)+k(m,n);,利用递归算法求:,M!+M+M,N,int f(m),int m;,if(m=1),return 1;,else,return m*f(m-1);,利用递归算法求:,M!+M+M,N,int g(m),int m;,if(m=1),return 1;,else,return m+g(m-1);,

27、利用递归算法求:,M!+M+M,N,int k(m,n),int m,n;,if(n=1),return m;,else,return m*k(m,n-1);,利用递归算法求:,M!+M+M,N,int f(m),int m;,if(m=1)return 1;,else return m*f(m-1);,int g(m),int m;,if(m=1)return 1;,else return m+g(m-1);,int k(m,n),int m,n;,if(n=1)return m;,else return m*k(m,n-1);,main(),int m,n;,scanf(%d,%d,printf(%d,f(m)+g(m)+k(m,n);,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服