C语言程序设计 第七章 - 嘉应学院_第1页
C语言程序设计 第七章 - 嘉应学院_第2页
C语言程序设计 第七章 - 嘉应学院_第3页
C语言程序设计 第七章 - 嘉应学院_第4页
C语言程序设计 第七章 - 嘉应学院_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章第七章 函函 数数 7.1 函数的概念函数的概念规格规格库函数库函数 组成的组成的,而每一个模块常用来实现一个特定的功能而每一个模块常用来实现一个特定的功能. 在在 C 语言中便是操纵函数来实现模块功能的语言中便是操纵函数来实现模块功能的. 对任何应用程序来讲根基上由如果干个对任何应用程序来讲根基上由如果干个 程序模块程序模块 7.2 函数的定义和返回值函数的定义和返回值 1、常量、常量 2、变量、变量 3、表达式、表达式 4、指针值、指针值 7.3 函数的调用函数的调用在调用函数时,一样在主调函数和被调用函数之间有 信息传递 这是由函数中的指标来完成的. 7.4 调用函数和被调用函数之

2、间的指标传递调用函数和被调用函数之间的指标传递(即形参的值不能传回给实参) main() int a=100,b=200,c ; c =add(a,b); printf(“c=%dn”, c); int add ( x, y ) int x,y ; int z ; z=(+x)+(+y) ; return(z); 当形参值在函 数中产生改变时, 且不作用调用它的 实参值的改变. 采纳这种信息复制的指标传递方式,每次每个指标只能传递一个信息. 当期望通过形参的值的改变来改 变主调函数中变量的值,那么可采纳地 址传送方式传递信息.(即实现了操纵指标来返回统计结论的功能)第七章第七章 函函 数数P1

3、44main() int a=100 ,c ; func(&a); printf(“a=%dn”, a); int func( int *p ) int j ; j=*p+100 ; return(j) ; a2000p&aa2000 从上面的对比中从上面的对比中,我们能够猎取我们能够猎取,使用指标传递地址时使用指标传递地址时,当当 对形参作出的任何变动对形参作出的任何变动,都将作用实参的改变都将作用实参的改变.所以所以,操纵那个操纵那个特性特性,能够在被调用函数中把它的操作结论送入某个指标的存储能够在被调用函数中把它的操作结论送入某个指标的存储空间空间,函数返回时函数返回时,

4、通过指标的地址便会把操作结论带通过指标的地址便会把操作结论带 回调用函数回调用函数 请创站一个一维数组同时为该数组存入10名学生某科考试成绩,接着调用一函数用以统计这10名学生的平均成绩. main() int x=6,y=7,z=8,r ; r=f (x-,y+,x+y),z-); printf(“r=%dn”, r); f ( int a, int b ) int c ; c=a+b; return(c); 7.5 函数的递回调用函数的递回调用 递回函数的典型例子是 统计阶乘 的函数第一步我们来对比一下阶乘统计的程式,同时从中寻出 递回算法和终结前提 n!=1X2X3XXn =nX(n-1

5、) XX3X2X1 =nX(n-1)! 所以, 要想统计出n!,必须统计出 (n-1)!; 统计出 (n-1)!, 必须统计出(n-2)!; ;由此类推,直到推到 1!=1,返回后即可依次计算出 2!,3!, (n-1)!, n! . 4!=4X 3! 3!=3X 2! 2!=2X 1! 1!=1 1!=1 2!=2X 1! =2 3!=3X 2! =3X2 =6 4!=4X 3! =4X6 =24依照上面的对比我们明白,阶乘统计的递回算法可回纳似下: 第七章第七章 函函 数数P111 int f(x) int x ; int y, z ; z =f(y) ; return(2*z) ; 递回

6、函数的调用可分为递回函数的调用可分为int f1(x)int x ; int y, z ; z =f2(y) ; return(2*z) ; int f2(t)int t ; int a, c ; c =f1(a) ; return(3+c) ; main() printf(“%d”, age(5); age(n) int n; int c; if(n=1) c=10; else c = age(n-1)+2; return(c) ; main() int x=4 ; float sum; sum=fac(x); printf(“%dn”,sum); float fac(int n) floa

7、t f ; if(n= =1) f=1; else f=n*n+fac(n-1); return(f ); int w=3; (97.9)main() int w=10; printf(“%dn”, fun(5)*w); fun(int k) if (k=0) return(w); return(fun(k-1)*k); main() printf(“%dn”, fun(9); fun(int x) int p; if (x=0)|(x=1) return(3); p=x-fun(x-2); return(p); mult(x,y) int x,y; return(x*y); 1 1、下列程序

8、的运行结论是、下列程序的运行结论是 A) 0 B) 165A) 0 B) 165* *65=10725 65=10725 C) 165 C) 165* *65=0 D) 65=0 D) 程序不精确程序不精确 2 2、函数采纳的是下列哪种指标传递方式、函数采纳的是下列哪种指标传递方式. . A) A) 地址传递地址传递 B) B) 信息复制信息复制 C) C) 全局变量全局变量 D) D) 内部变量内部变量 mult(int n) int t; if(n=0)|(n=1) t=3; else t=n*fun(n-1); return(t); f(int b ,int n) int i,r ; r

9、=1; for(i=0;i=n;i+) r=r*bi return(r); A) 对比串对比串s 和和 t 的长度的长度 B) 对比串对比串s 和和 t 的大小的大小 C) 对比串对比串s 和和 t 是否相等是否相等 D) 将串将串t 赋给串赋给串 s f(int a) int t; if(n=0)|(n=1) t=3; else t=n*fun(n-1); return(t); 7.6 变量的使用范畴与存储类型变量的使用范畴与存储类型 1、如果在同一个源文件中、如果在同一个源文件中,似有全局变量与局部似有全局变量与局部 变量同名时变量同名时,那么在局部变量的作用范畴内那么在局部变量的作用范畴

10、内, 全局变量不起作用全局变量不起作用. 2、设置全局变量的作用是、设置全局变量的作用是: 增加函数间信息联系的渠道增加函数间信息联系的渠道. 因为同一个文件中的全部函数都能引用全局变量的值,因此似果在一个函数中改变了全局变量的值,便能作用到其它函数,相当于各个函数间有直截了当的传递通道. 在C语言中,每一个变量和函数有两个属性:信息类型和信息的存储类不. 信息类型,似整型、实型等; 存储类不,指的是信息在统计机中的存储方式, 也能够讲信息的 存储地点. 函数中的局部变量往往默信任动态安排存储空间的,即存储在动态存储区中.对它们安排和释放空间根基上由编译系统自动操作的,所以这类局部变量也称为自

11、动变量. 有时期望函数中的局部变量的值在函数调用结束后不消散而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,便是上一次函数调用结束时的值. int f( int a) auto int b=0; static int c=3; b=b+1;c=c+1; return(a+b+c); fun( int a,int b) static int m, i=2; i+=m+1; m=i+a+b; return(m); main() int k=4,m=1,p; p=fun(k,m); prinf(“%d,”,p); p=fun(k,m); prinf(“%d,”,p); fu

12、n() static int a3=0,1,2; int i ; for(i =0; i 3; i +) ai +=ai ; for(i =0; i 3; i +) printf(“%d,”,ai ) ; return; 全局变量是在函数的外部定义的,编译时安排在内存的静态存储区.全局变量能够为程序中各函数所引用. 全局变量的扩展调用. 我们明白一个C 语言程序能够有一个或多个源程序文件组成.似果程序是由多个源文件组成时,为了保障某个全局变量能提供多个源文件中的函数调用,那么可采全局变量的扩展调用. int x; main() char cc; extern int x; extern cha

13、r cc; a1.ca2.ca3.c int fac(int n) register int i, f=1; for(i =1; i =n; i +) f=f* i ; return( f ); register static int a,b,c; 不能把变量 a,b,c 既放在静态存储区中,又放在寄存器中,二者只能居其一. 对一个变量只能定义为一个存储类不. 7.1 函数的概念函数的概念7.2 语函数的定义和返回值句语函数的定义和返回值句类型名类型名 函数名函数名(类型名类型名 形参形参1, 类型名类型名 形参形参2,) 讲明语句讲明语句; 履行语句履行语句; return(表达式表达式);return 表达式表达式 ; 1、常量、常量 2、变量、变量 3、表达式、表达式 4、指针值、指针值 7.3 函数的调用函数的调用 7.4 调用函数与被调用函数之间的指标传递调用函数与被调用函数之间的指标传递 7.6 7.6 变量的使用范畴与存储类不变量的使用范畴与存储类不 7.5 函数的递回调用函数的递回调用 1、表达式调用、表达式调用: 似似,c=add(a,b) ; 2、调用语句调用、调用语句调用: 似似,add(a,b) ; 1、实介入形参的类型、个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论