计算机基础与C语言程序设计第7章_函数_第1页
计算机基础与C语言程序设计第7章_函数_第2页
计算机基础与C语言程序设计第7章_函数_第3页
计算机基础与C语言程序设计第7章_函数_第4页
计算机基础与C语言程序设计第7章_函数_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

第 7章 函 数 第 7章 函 数 函数定义和函数调用 函数的嵌套调用和递归调用 局部变量和全局变量 变量的存储类别 内部函数和外部函数 函数定义和函数调用 数定义 【 例 已知五边形各边及对角线的长度,求面积。 a b c d e f g s1 s2 #x,y,z) s,a; s=(x+y+z)/2; a=s*(; a; 分析: a,b,f) ; c,g,f) ; d,e,g) ; a,b,c,d,e,f,g; s1,s2,s3,s; %f%f%f%f%f,&a,&b,&c,&d,&e); %f%f,&f,&g); a,b,f) ; c,g,f) ; d,e,g) ; s=s1+s2+s=%fn,s); a b c d e f g s1 s2 般形式: 类型 函数名 ( 类型 形参,类型 形参, ) 定义部分 语句序列 x,y,z) s,a; s=(x+y+z)/2; a=s*(; a; 【 例 编写函数,在一行上输出 10个 * 字符。 # i; i=0;iy?x:y; a,b,c,m; %f%f%f,&a,&b,&c); m=a,b), c); m=%fn,m); 一般形式: 类型标识符 函数名 (类型 形参 ,类型 形参 , ); 或 类型标识符 函数名 (类型 ,类型 , ) ; 数声明 例如: x,y); 或 【例 被调函数声明的例子 # x,y); a,b,c; %f,%f,&a,&b); c=a,b); f,c); x,y) z; z=x+y; z); c=a,b); /* 在 */ x, y) /* 函数定义 */ z; z=xy?x:y; z); 函 数 调 用 开 始 建 立 形 参 变 量 实 参 值 复 制 给 形 参 执 行 函 数 体带 回 函 数 值 、 返 回 调 用 处 、 撤 销 形 参函 数 调 用 结 束【 例 求末尾数非 0的正整数的逆序数,如 21)的值是: 123 # a, %&a); %ldn, a) ) ; a=%ldn,a); n) k=0; n) k=k*10+n%10; n/=10; k; 21); k=0; 当 n=321时 k=0*10+321%10=1; n=321/10=32; 当 n=32时 k=1*10+32%10=12; n=32/10=3; 当 n=3时 k=12*10+3%10=123; n=3/10=0; 当 n=0时结束循环 分析: n=321, k=0 k=1; k=k*10+2; k=k*10+3; 数的嵌套调用和递归调用 数的嵌套调用 m a i n 函 数调 用 a 函 数结 束a 函 数调 用 b 函 数b 函 数( 1 )( 2 )( 3 )( 4 )( 5 )( 6 )( 7 )( 8 )( 9 )【 例 编写程序,输入 n, m,求组合数 )!(!# n,m; %d%d,&n,&m); ldn, n,m) ); jc(n) i; t=1; i=1;i 3!=3*2! - 2!=2*1! - 1!=1*0! - 0!=1 4!=4*6 jc(n) f; if(n=1|n=0) f=1; f=n* f; y; n; %d”,&n); y=jc(n); %d!=%n,y); y=) f=3*) f=2*) f=1 1 ! 1例 十进制整数按相反的顺序将各位数字打 印出来。 如: 23456); 输出: 654321 #n) if(n=0) %d,n%10); n/10); n; %&n); n); 运行结果如下: 123456 654321 部变量和全局变量 a; a=10; %d”,a); 内存 000 2001 部变量(内部变量) 定义: 在函数内定义的变量。 作用域: 在本函数内有效。 说明: (1) (2) 形参属于 局部 变量。 (3) 不同函数中 同名 变量,占不同内存单 元。 (4) 在 复合语句 中定义的变量,只在本复合语句中有效。 x ) a; a=x0?x:a; m,n; %f”,&m); n=m); %fn”,n); a, n;a); a); v id a,b,c;a=1;b=2; c=a+b; c; c= %dn”,c); dn”,c); 输出: 局变量 ( 外部变量 ) 定义: 在函数外部定义的变量 。 作用域: 从定义的位置到本文件结束 。 x, i, j a,b,c,d m, n c2 a2 ,; f1(x) i,j; . . c1, f2(a, b) c,d; . . m,n; . . 【例 写函数求两个数的和与积。 # x, y) x+y; x*y; a,b; %f%f, &a,&b); a,b); %n, 注意: (1) 设置全局变量的作用是增加了函数间数据传递的通道。 (2) 全局变量定义时未初始化,系统为其赋初值 0。 (3) 若全局变量与局部变量同名,则在局部变量的作用范围内,同名的全局变量不起作用 。 x+y; x*y; 运行情况如下: 3 8 行情况如下:3 8 例 用 展它在程序文件中的作用域 #x, y) z; z=xy?x:y; z); %d, , B); =8, B=2; (4) 当全局变量定义在后,引用在前时,应在引用它的函数中用 此全局变量进行声明(说明)。 【 例 】 用 声明外部变量,扩展它在程序文件中的, B; 【 例 用 展它在程序文件中的作用域 #in in ax(x, y) in z; z=xy?x:y; t r (z); , B; d , , B); , B=2; (5) 当一个程序由多个源文件组成时,如果想在一个文件中引用另一个文件中的已定义的外部变量,要用 【 例 用 文件 a; n) i,y=1; i=1;i a; d,m; a n); %d,%d, &a, &m); d=m); %d*%d=%d,a,m,d); 计算: a的 a*m=行情况如下: 2, 3 2*3=8 变量的属性: 数据类型:如 。 存储类型 :是指数据在内存中 的存储方式。 分两大类: 动态存储类 静态存储类 变量的存储类 型 用户内存空间 动态存储区 静态存储区 程序存储区 变量定义的形式: 存储类型标识符 类型标识符 变量名; 动的 静态的 寄存器 外部的 i,j,k; c; . . 等价于 i,j,k; c; . . 动)变量 态)变量 静态变量分为: 静态 局部 变量 静态 全局 变量 静态全局变量只能被所定义的文件中所有函数引用。 例如在例 a; 【 例 察静态局部变量的值。 #a) b=0; c=1; b=b+1; c=c+1; a+b+c); a=2,i; i=0;i3;i+) %d,a); 分析: i=0时: b: 0 c: 1 b: 1 c: 2 a+b+c=2+1+2=5; 运行结果: 5 6 7 1: 2: 33 62: 3: 44 7 寄存器变量被存放在寄存器中, 比自动变量存取速度快得多。 存器)变量 n) i, f=1; i=1;i=n;i+) f=f*i; f); 注意: (1) 寄存器的数量有限,因此寄存器变量不能定义太多。 (2) 只有局部自动变量和形式参数可作为寄存器变量。 1. 内部函数 内部函数 只能被本文件中的

温馨提示

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

评论

0/150

提交评论