C语言第6章函数_第1页
C语言第6章函数_第2页
C语言第6章函数_第3页
C语言第6章函数_第4页
C语言第6章函数_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

1、123 int gac(int a,int b) int r; r=a%b; while(r!=0) a=b; b=r; r=a%b; return b; 函数函数首部首部函数体函数体45运行结果:运行结果:* * * * * * * * * * * * * * * * * * * *How do you do!How do you do!* * * * * * * * * * * * * * * * * * * *6789如:计算两个自如:计算两个自然数然数a和和b的最大的最大公约数。公约数。a和和b的值。的值。如:计算两个自如:计算两个自然数然数a和和b的最大的最大公约数。公约数。int

2、a,int b1011*void photo( )int i,j; for(i=1;i=4;i+) for(j=1;ji;j+) printf( ); for(j=1; j=7-2*(i-1); j+) printf(*); printf(n);121314151617int gac(int a,int b)int r; r=a%b; while(r!=0) a=b; b=r; r=a%b; return b;18int gac(int a,int b)int r; r=a%b; while(r!=0) a=b; b=r; r=a%b; return b;19函数定义的格式函数定义的格式类型标

3、示符类型标示符 函数名函数名(形式参数表形式参数表) 函数体函数体例:例:int sqare(int n) return n*n;参参数数有参函数有参函数各参数用各参数用逗号逗号分隔,与分隔,与变量说明变量说明方法相似方法相似无参函数无参函数“形式参数表形式参数表”可以为空,也可用可以为空,也可用void返返回回值值有返回值函数有返回值函数1、“类型标示符类型标示符”说明返回值的类型,为说明返回值的类型,为 int 时时可以省略,但不提倡可以省略,但不提倡2、“函数体函数体”中必须有:中必须有: return 表达式表达式;3、函数的返回值应与、函数的返回值应与“类型标示符类型标示符”的说明一

4、致,的说明一致, 兼容的转换,不兼容的发生编译错误兼容的转换,不兼容的发生编译错误无返回值函数无返回值函数1、“类型标示符类型标示符”必须为必须为void2、“函数体函数体”中可以有:中可以有:return; 也可不用也可不用202122#include int max(int x, int y) /*定义有参函数max */int z; z=xy ? x : y; return z;void main() int a, b, c; scanf(%d,%d, &a, &b);c = max(a, b); printf(Max is %d, c);23#include void

5、main()int max(int x, int y); /* 对max函数的声明 */ int a, b, c; scanf(%d,%d, &a, &b);c = max(a, b); printf(Max is %d, c);int max(int x, int y) /*定义有参函数max */int z; z=xy ? x : y; return z;2425262728float add(float, float);float add(float x, float y);29# include void main( ) float add(float x, float

6、 y); float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); printf(“sum is %f n“,c);float add(float x,float y) float z; z=x+y; return(z); 30# include void main( ) float add(float x, float y); float a,b,c; scanf(“%f,%f”,&a,&b); c=sub(a,b); printf(“sum is %f n”,c);float sub(float x,float y) fl

7、oat z; z=x-y; return(z); 3132main()fun()返回返回计算实参计算实参形实结合形实结合返回到返回到调用位置调用位置调调fun()结束结束33如果按如果按自左至右自左至右顺序求实顺序求实参的值,则函数调用相当参的值,则函数调用相当于于f(2,2) 。如果按如果按自右至左自右至左顺序求实顺序求实参的值,则函数调用相当参的值,则函数调用相当于于f(3,2) 。 对于函数调用对于函数调用 int i=2,p;p=f(i, i+); 34x5y10a b 5 10t510 5x=5 y=10结论:结论: 实参向形参的数实参向形参的数据传递是据传递是: 单向值传递单向值传

8、递35函数语句函数语句 把函数调用作为一个语句。如把函数调用作为一个语句。如printstar(),这时,这时不要求函数带回值,只要求函数完成一定的操作。不要求函数带回值,只要求函数完成一定的操作。 要求:要求:无无返回值返回值函数函数函数表达式函数表达式 函数出现在一个表达式中,这种表达式称为函数出现在一个表达式中,这种表达式称为函数函数表达式表达式。 要求:要求:有返回值函数。有返回值函数。36373839)0()!1()0(1!nnnnn4041) 1() 1(2) 1(10)(nnagennage42可以用一个函数来描述上述递归过程:int age(int n) /* 求年龄的递归函数

9、 */ int ; /* c用作存放函数的返回值的变量 */ if (n=1) c=10; else c=age(n-1)+2; return c;用一个主函数调用age函数,求得第5人的年龄。#include void main()printf(%d, age(5); 44古代有一个梵塔,塔内有3个座A、B、C,开始时座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求编程序打印出移动的步骤。ABCABCABCABCABCABCABCABCA

10、BCABCABCABC62静态动态存储方式程序整个运行期间函数调用开始至结束生存期编译时赋初值,只赋一次每次函数调用时赋初值自动赋初值0或空字符不确定未赋初值静态存储区动态区存储区寄存器局部变量外部变量作用域定义变量的函数或复合语句内本文件其它文件u局部变量默认为auto型u局部static变量具有全局寿命和局部可见性u局部static变量具有可继承性uextern不是变量定义,可扩展外部变量作用域register局部staticauto外部static外部存储类别6465666768(1) 主函数中定义的变量主函数中定义的变量(m,n)也只在主函数中有也只在主函数中有效效, 主函数不能使用其

11、他函数中定义的变量。主函数不能使用其他函数中定义的变量。(4) 不同函数中可以使用相同名字的变量不同函数中可以使用相同名字的变量,它们代它们代表不同的对象表不同的对象,互不干扰。互不干扰。(2) 形式参数也是局部变量。形式参数也是局部变量。(3) 在一个函数内部在一个函数内部,可以在复合语句中定义变量可以在复合语句中定义变量,这些变量只在本复合语句中有效这些变量只在本复合语句中有效, 。69全局变量可以在函数之间定义全局变量可以在函数之间定义 作用域从声明点开始至源文件尾结束作用域从声明点开始至源文件尾结束(4) 在不必要时不要使用全局变量在不必要时不要使用全局变量:(2) 全局变量可以与局部

12、变量同名全局变量可以与局部变量同名 作用域重叠时,局部变量可见。作用域重叠时,局部变量可见。(3)使用全局变量可以在不同的函数中传递数据。使用全局变量可以在不同的函数中传递数据。(5) 全局变量定义时,若不初始化,值全局变量定义时,若不初始化,值 为为0.7072例6.13#include int f(int a)auto b=0; static c=3; b=b+1; c=c+1; return(a+b+c);void main()int a=2,i; for(i=0;i3;i+) printf(%d,f(a);73747576文件file2.c中的内容为:#include #include

13、 #include file1.cint main() extern a,b; a=1,b=2; printf(%d,%dn,a,b); system(pause);int a;main( ) . . f2; . f1; .f1( ) auto int b; f2; .f2( ) static int c; C作用域b作用域a作用域mainf2f1mainf1f2maina生存期:b生存期:c生存期:main() int x=1; void prt(void); int x=3; prt(); printf(“2nd x=%dn”,x); printf(“1st x=%dn”,x);void prt(void) int x=5; printf(

温馨提示

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

评论

0/150

提交评论