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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《C语言程序设计》课件第八章.ppt)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《C语言程序设计》课件第八章.ppt

1、第八章 函 数1主要内容第一节 C函数概述第二节 C函数的定义第三节 函数调用和参数传递第四节 数组作为函数的参数第五节 函数的多级调用第六节 局部变量和全局变量第七节 变量的存储类别第八节 内部函数和外部函数2第一节 C函数概述print_mess()print_mess()printfprintf(How do you do!n);(How do you do!n);printstarprintstar()()printfprintf(*n);(*n);main()(main()(见见ff1)ff1)printstarprintstar();();print_mess();print_me

2、ss();printstarprintstar();();3源文件1函数n函数2函数1源文件m源文件2一个C程序 一个C程序的源文件.4函数的概述Functions break large computing tasks into smaller one,and enable people to build on what others have done instead of starting over from scratch.5第二节 C函数的定义无参函数的定义类型标识符 函数名()说明部分语句有参函数的定义类型标识符 函数名(形式参数表列)说明部分语句6例如:int max(int x

3、,int y)int z;z=xy?x:y;return z;对形参说明的传统方式int max(x,y)int x,y;int z;z=xy?x:y;return z;7第三节 函数调用和参数传递3.1 形参和实参3.2 函数返回值3.3 函数调用的一般形式3.4 函数的调用方式3.5 被调用函数的说明83.1 形参和实参形式参数:在定义函数时,函数名后面的括号中的变量称为形式参数,简称形参。实际参数:在调用函数时,函数名后面括号中的表达式称为实际参数,简称实参。9例:int max(int x,int y)int z;if(x=y)z=x;else z=y;return(z);main()

4、int a,b,c;scanf(%d%d,&a,&b);c=max(a,b);printf(”%dn,c);10main()(ff2)int a,b;scanf(%d,%d,&a,&b);/*键入2,5*/printf(“a=%d,b=%dn”,a,b);/*显示a=2,b=5*/exch(a,b);printf(“a=%d,b=%dn”,a,b);/*显示a=2,b=5*/int exch(int x,int y)int t;printf(“x=%d,y=%dn”,x,y);/*显示x=2,y=5*/t=x;x=y;y=t;printf(“x=%d,y=%dn”,x,y);/*显示x=5,y

5、=2*/11关于形参和实参的说明:关于形参和实参的说明:1、形参的有效作用范围是:在其定义所在的函数内。2、实参对形参的数据传递是值传递,即单向传递。只由实参传给形参。思考思考:在主函数的最后插入:printf(x和y是:%d,%dn,x,y);结果?!结果?!2525abxy2552abxy123、对于有参函数,调用语句中的实参个数等于被调用函数的形参个数。若实参个数形参个数,去掉实参表中右边的几个参数。若实参个数=y)z=x;else z=y;return(z);main()float a,b;int c;scanf(%f%f,&a,&b);c=max(a,b);printf(”%dn,c

6、);153.3 函数调用的一般形式 函数名(实参表);例如:exch(a,b);exch(int x,int y)实参自右向左的逐个传递与形参。18main()ff5main()ff5 intint i;i;i=1;test(i=1;test(i+,i+,i);i);i=1;test(i,i=1;test(i,i+i+););test(inttest(int x,intx,int y)y)printf(xprintf(x=%=%dtydty=%dn,x,y);=%dn,x,y);执行后执行后:x=1 y=1x=1 y=1x=2 y=1x=2 y=119 3.4 函数的几种调用方式 prints

7、tarprintstar();();print_mess();print_mess();c=max(a,b);c=max(a,b);1.函数调用作为语句2.表达式中的函数调用3.函数调用作为函数的实际参数。printf(%dn,max(a,bprintf(%dn,max(a,b););203.5 被调用函数的几点说明1.被调函数必须是已经存在的函数。2.如果使用库函数,必须在本文件开头加上用#include命令将调用有关库函数时所用的信息包含到本文件中。例如:#include”stdio.h”3、如果是调用自己定义的函数,函数调用语句之前使用函数说明语句对该被调用函数作说明。说明形式为:类型标

8、识符 被调函数名(形参类型标识符);4、函数的两个操作概念函数定义函数说明21main()main()见见ff6ff6 double double power(int,floatpower(int,float););intint i;i;for(i=1;i9;i+)for(i=1;i9;i+)printfprintf(“%d%fn”,i,power(i,1.5);“%d%fn”,i,power(i,1.5);double double power(intpower(int n,float x)n,float x)intint i;double p=1;i;double p=1;for(i=1;

9、i=n;i+)p=p*x;for(i=1;i=n;i+)p=p*x;return(p);return(p);/*/*函数说明函数说明*/*/*函数调用函数调用*/*/*函数定义函数定义*/22有些情况下可以不做说明:1.被调用函数定义在调用函数之前,可以免去说明。double double power(intpower(int n,float x)/*n,float x)/*函数定义函数定义*/intint i;double p=1;i;double p=1;for(i=1;i=n;i+)p=p*x;for(i=1;i=n;i+)p=p*x;return(p);return(p);main()

10、main()intint i;i;for(i=1;i9;i+)for(i=1;iave2)if(ave1ave2)return(1);return(1);else return(-1);else return(-1);main()main()见见ff7ff7 intint i,k=0;float i,k=0;float a8=65,78,67,90,84,63,58,76,b8=62,79,a8=65,78,67,90,84,63,58,76,b8=62,79,65,88,80,65,60,74;65,88,80,65,60,74;for(i=0;i8;i+)for(i=0;i0)k=k+1;

11、if(better(ai,bi)0)k=k+1;printf(printf(%dn%dn,k,k););26l数组名作为函数的实际参数数组名作为函数的实际参数C语言中的数组名代表了数组在内存中存放的起始地址,所以数组名作为函数的参数传递的是数组的起始地址,属于“传地址”。说明:(1)用数组名作为函数的参数,必须对实参数组先定义,形参必须说明成与实参数组类型一致的数组。(2)形参数组和实参数组的数组名可以不一样,数组的大小也可以不一致。由于传递的是地址,所以形参数组和实参数组在内存中实际上是共用了连续的一块地址空间。27 用函数用函数average()average()求求3030个学生英语课的

12、平均成绩。见个学生英语课的平均成绩。见ff8ff8float average(mark,n)float average(mark,n)intint mark;mark;intint n;n;float float aveave;intint sum=0,i;sum=0,i;for(i=0;in;i+)for(i=0;in;i+)sum=sum+marki;sum=sum+marki;aveave=sum/n;=sum/n;return(avereturn(ave););main()main()intint i,score30;i,score30;printfprintf(请输入请输入3030个

13、学生的英语成绩:个学生的英语成绩:nn);for(i=0;i30;i+)for(i=0;i30;i+)scanf(scanf(%d%d,&scorei,&scorei););printf(printf(%5.1fn%5.1fn,average(score,30);,average(score,30);28第五节 函数的多级调用main函数的作用函数的嵌套调用函数的递归调用29主函数main的作用开始执行开始执行程序程序总控作用总控作用结束程序结束程序主函数主函数mainmain30函数的嵌套调用 函数函数1函数函数2函数函数3在程序的执行过成中,当调用一个函数时,在该函数中又在调用另一个函数。

14、31例题例题见见ff9ff9#include#include main()/*main()/*第一层第一层*/c();/*c();/*第二层第二层*/a()/*a()/*第三层第三层*/putchar(aputchar(a);/*);/*第四层第四层*/b();/*b();/*第四层第四层*/putchar(aputchar(a);/*);/*第四层第四层*/b()b()/*/*第四层第四层*/putchar(bputchar(b);/*);/*第五层第五层*/c()/*c()/*第二层第二层*/putchar(cputchar(c);/*);/*第三层第三层*/a();a();/*/*第三层

15、第三层*/putchar(cputchar(c);/*);/*第三层第三层*/该程序执行后显示该程序执行后显示 cabaccabac32函数的递归调用当函数被调用时,又同时调用自身,被称为函数递归调用。见P115直接递归间接递归33例:共计5个人,有如下关系:见ff18age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2 age(2)=age(1)+2age(1)=10 求第五个人的年龄?age(n)int n;int c;if(n=1)c=10;else c=age(n-1)+2;return(c);main()printf(%d,age(5);Age函

16、数共计调用5次,age(5)-age(1)递归调用共计进行4次在每一次调用时,不是立即得到递归值,而是一次一次地进行递归,直到age(1)为止。回推-得到函数关系递推-得到函数值递归条件-已知的值34例例:用递归方法求用递归方法求n!。见!。见ff11 n!=1 n=0,1 n*(n-1)!n1 6!-5!-4!-3!-2!-1!=1(已知条件已知条件)1!*2-2!*3-3!*4-4!*5-5!*6=720float fac(int n)float f;if(n=0|n=1)f=1;else f=fac(n-1)*n;return(f);main()int n;float y;scanf(“%d”,&n);y=fac(n);printf(“%d!=%10.2fn”,n,y);35第六节 局部变量和全局变量按照变量的作用范围,变量分为:局部变量在一个函数或复合语句内部定义的变量,也称内部变量。作用范围:在定义该变量的函数或复合语句内有效。全局变量函数外定义的变量。作用范围:从定义点开始到本源文件结束。36局部变量举例:float f1(int a)int b,c;a,b,c有效 int

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1