C语言电子教案第6章函数课件.ppt

上传人(卖家):三亚风情 文档编号:3377074 上传时间:2022-08-25 格式:PPT 页数:32 大小:379.50KB
下载 相关 举报
C语言电子教案第6章函数课件.ppt_第1页
第1页 / 共32页
C语言电子教案第6章函数课件.ppt_第2页
第2页 / 共32页
C语言电子教案第6章函数课件.ppt_第3页
第3页 / 共32页
C语言电子教案第6章函数课件.ppt_第4页
第4页 / 共32页
C语言电子教案第6章函数课件.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、第6章 函数 教学目标:1.领会函数在C语言程序中的作用;2.会运用函数调用的原则和参数传递方式;3.会运用简单的递归算法;4.能够分析C语言程序中变量的作用域和生存期。本章结构 概述 函数的定义 函数的参数和返回值 函数的调用 数组作为函数参数 函数的嵌套调用 函数的递归调用 外部变量与内部变量 静态变量与自动变量 变量的存储类别 多文件程序的编译与连接6.1概述C语言程序是一种独特的模块结构,每个模块都是一个函数函数有且只能有一个名为mainmain的主函数 mainmain可以调用其他函数,但其他函数不能可以调用其他函数,但其他函数不能调用主函数调用主函数自定义函数的作用函数分类:从用户

2、角度主函数:名为main的函数标准函数(库函数):由系统提供用户自定义函数 从函数形式无参函数有参函数类型标识符 函数名(形参列表)/*函数头*/说明部分 /*函数体*/语句部分例 int max(int x,int y)int z;z=xy?x:y;return(z);例 无参函数 printstar()printf(“*n”);6.2 函数定义的一般形式 6.3函数参数和返回值6.3.1形式参数与实际参数max(int x,int y)int z;Z=xy?x:y;return(z);main()int a,b;a=2;b=3;Printf(“%d”,max(a,b);实际参数形式参数 返

3、回语句 形式:return(return(表达式表达式);或 return return 表达式表达式;或 return;return;功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明:函数中可有多个return语句 若无return语句,遇 时,自动返回调用函数6.3.2函数的返回值float area(float float area(float a,float b)a,float b)float s;float s;s=a s=a*b;b;return(s);return(s);6.4.1 函数调用的一般形式6.4 函数的调用函数名(实参表)函数语句:函数语句:

4、例 printstarprintstar();();printf printf(“Hello,World!n”);(“Hello,World!n”);函数表达式:函数表达式:例 m=max(a,b)m=max(a,b)*2;2;函数参数:函数参数:例 printfprintf(“%d”,max(a,b);(“%d”,max(a,b);m=max(a,max(b,c);m=max(a,max(b,c);函数的调用方式对被调用函数要求:必须是已存在已存在的函数库函数:#include#include.h用户自定义函数:函数类型说明函数类型说明函数说明一般形式:函数类型函数类型 函数名函数名(形参类

5、型形参类型 形参名形参名,.);.);或 函数类型函数类型 函数名函数名();();作用:告诉编译系统函数类型、参数个数及类型,以便检验函数定义函数定义与函数说明函数说明不同函数说明位置:程序的数据说明部分(函数内或外)程序的数据说明部分(函数内或外)下列情况下,可不作函数说明 若函数返值是若函数返值是charchar或或intint型型,系统自动按intint型处理函数说明实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同类型一致,个数相同若形参与实参类型不一致,自动按形参 类型转换函数调用转换函数调用转换形参在函数被调用前不占内存;函数调用函数调用 时为形参分配内存;调用结束,

6、内存时为形参分配内存;调用结束,内存 释放释放函数参数说明(1 1)值传递)值传递:函数调用时,为形参分配存储单元为形参分配存储单元,并并将实参的值传送到形参中;调用将实参的值传送到形参中;调用结束时结束时,形参单,形参单元释放,实参单元仍保留并维持原值元释放,实参单元仍保留并维持原值特点:形参和实参占用不同不同的内存单元单向单向传递参数传递方式(2)地址传递)地址传递:函数调用时,将数据的存储地址存储地址作为参数传递给形参特点:形参与实参占用同样同样的存储单元实现了数据的“双向双向”传递实参和形参必须是地址地址利用自定义函数计算:1!+2!+5!fact(n)/*阶乘函数*/int i,t=

7、1;for(i=1;i=n;i+)t=t*i;return(t);/*返回阶乘值*/main()int i,sum=0;for(i=1;i=5;i+)sum=sum+fact(i);/*调用阶乘函数,之后进行累加*/printf(sum=%dn,sum);music(hz,t)int i;sound(hz);/*演奏音阶*/for(i=0;i=t;i+)/*以延时形成节拍*/delay(2000000000);nosound();模拟电子琴键盘#include#include#include#includemain()char i=1,j;int hz,t;while(i=getch()!=x

8、1b)/*Esc键退出演奏*/switch(i)casea:hz=262;break;case s:hz=294;break;case d:hz=330;break;case f:hz=349 ;break;case j:hz=392;break;case k:hz=440;break;case l:hz=494;break;case;:hz=523;break;case m:hz=523;break;case,:hz=523;break;case.:hz=523;break;default:break;if(kbhit()&getch()=)t=20;else t=10;music(hz,t

9、);69xy:调用前:调用结束:调用结束:#include swap(int a,int b)int temp;temp=a;a=b;b=temp;main()int x=6,y=9;printf(x=%d,ty=%dn,x,y);swap(x,y);printf(x=%d,ty=%dn,x,y);调用:调用:a:b:swap:temp交换两个变量的值:xy:69699696xy:69b:a:y:x结果:x=6 y=96.5 数组作为参数数组作为参数时:实参数组的首地址传给形参sort(int b)/*形参b长度不定*/int a11;sort(a);/*实参a长度11*/首地址例6-9 调用

10、自定义排序函数对数组排序main()int i,a11=0;void sort(int b11);for(i=1;i=10;i+)scanf(%d,&ai);sort(a);printf(n);for(i=1;i=10;i+)printf(%6d,ai);/*输出已排序输出已排序的数组的数组a*/*调用*/void sort(int b11)int i,j,t;for(i=1;i=9;i+)for(j=2;jbj-1)t=bj;bj=bj-1;bj-1=t;for(i=1;i=10;i+)printf(%6d,bi);/*自定义函数自定义函数中输出排序后中输出排序后的数组的数组b*/6.6 函

11、数的嵌套主函数main()子函数fun1()子函数fun2()#includemain()int i,j,n,t,t1,t2,s411;void output(int score411);for(i=1;i=3;i+)printf(no.%d:1-10?,i);for(j=1;j=10;j+)scanf(%d,&sij);for(n=1;n=3;n+)for(i=1;i=9;i+)for(j=2;jsnj-1)t=snj;snj=snj-1;snj-1=t;output(s);void output(int core411)int i,j;print_line();for(i=1;i=3;i+

12、)printf(n|);for(j=1;j=10;j+)printf(%3d|,scoreij);printf(n);print_line();print_line()int i;for(i=1;i0):);scanf(%d,&n);y=fact(n);printf(%d!=%ldn,n,y);long fact(int n)long f;if(n=0|n=1)f=1;else f=n*fact(n-1);return(f);/*递 归 时 如 果 没 有“如果”,一定是错误的!*/6.8 外部变量与内部变量内部变量(局部变量):在一个函数内部起作用外部变量(全局变量):从定义开始处直到程序结

13、束6.8.1外部变量的定义(1)在整个函数之前定义。如:float x,y;float average(x,y)float aver;aver=(x+y)/2;return(aver);(2)在整个函数之后定义。如:float average(x,y)float aver;aver=(x+y)/2;return(aver);float x,y;(3)在函数体之前,函数头部。如:float average(x,y)float x,y;float aver;aver=(x+y)/2;return(aver);6.8.2外部变量的作用范围 int x=2;main()void print();int

14、 a=x;printf(a=%d x=%dn,a,x);print(a);printf(a=%d x=%dn,a,x);void print(int a)a+;x+;printf(a=%d x=%dn,a,x);运行结果:a=2 x=2a=3 x=3a=2 x=3/*外部变量*/*a为内部变量*/6.9静态变量和自动变量 静态变量:赋值后一直保留到程序结束。自动变量:每次调用值都可能发生变化外部变量时静态变量;外部变量时静态变量;内部变量如果没有特殊说明都是自动变量内部变量如果没有特殊说明都是自动变量静态变量的声明:如:static int a=3;static 类型名 变量名;main()v

15、oid print();int a=2,b=2;static i n t c=2;p r i n t f(a=%d b=%d c=%d n,a,b,c);print(a);print(a);p r i n t f(a=%d b=%d c=%d n,a,b,c);/*a,b为自动变量,只在main中有效*/*c为静态局部变量,只在main中有效*/void print(int a)int b=2;/*a,b为自动变量只在内部有效*/static int c=2;/*c为静态局部变量,只在内部有效*/a+;b+;c+;p r i n t f(a=%d b=%dc=%dn,a,b,c);a=2 b=

16、2 c=2a=3 b=3 c=3a=3 b=3 c=4a=2 b=2 c=26.10 变量的存储类别auto:内部变量没有特别声明时register:存取速度极快,但数量有限static:外部变量为静态变量extern:可作特别说明6.11内部函数与外部函数 内部函数:仅在文件内部调用用static定义。如:static func1(int a,int b)外部函数:可在多个文件中调用用exturn定义。如:exturn func2(int x,int y)本章小结 1.学会自定义函数的编写和函数的相互调用关系,是程序设计的基本技能。函数之间是通过函数名和参数来建立联系的。2.主调函数调用其它函数时提供的参数称为实在参数,被调函数中的参数称为形式参数。函数调用时,主调函数将实在参数传递给形式参数。3.当被调用的函数又调用另一个函数时,就出现了函数的嵌套调用。而当一个函数又调用自身的功能时,就出现了递归调用。4.程序中的变量作用范围是不同的。当一个变量在几个函数中或整个程序中都有效时,就称为全局变量。当一个变量仅在一个函数内部有效时,就称为局部变量,也称为内部变量。5.auto型变量所占存储单元在退出函数时释放;static型变量所占存储单元要到程序结束才释放。6.所有函数可以构成一个源程序文件,也可以构成多个源程序文件。无论有几个源程序文件,最终都要生成一个可执行文件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言电子教案第6章函数课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|