已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13讲函数的调用和变量的作用域 一 函数的嵌套及递归调用1 函数的嵌套调用2 函数的递归调用二 变量的作用范围1 局部变量2 全局变量 嵌套调用 在一个函数调用过程中又调用另一个函数 一 函数的调用 1 函数的嵌套及递归调用 例嵌套调用 qian1 intx inty intc s t s x y t x y c qian2 s t return c printf c d n c qian2 intx inty return x y main inta 1 b 2 c c 2 qian1 a b printf c d n c 例统计输入字符个数 include stdio h longcountch 利用函数原型声明函数 main longn n countch printf n ld n n longcountch longcn for cn 0 getchar n cn returncn 例连接两个字符串 include stdio h intchdu charx 函数原型声明 voidlianjie charx chary main chara 100 b 20 inti k gets a gets b lianjie a b puts a intchdu charc 100 测试字符串长度 intk for k 0 c k 0 k returnk voidlianjie charx chary 连接字符串 intk m k chdu x for m 0 y m 0 m x k m y m x k m 0 例输入两个数 求它们的和 差 积 商 main floatx y floatadd float float min float float mul float float div float float printf Pleaseinputtwonumbers scanf f f floatadd floatxx floatyy floatzz zz xx yy return zz floatmin floatxx floatyy floatzz zz xx yy return zz 2 函数的递归调用 递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身 这样的调用称为递归调用 递归调用必须可以满足一定条件时结束递归调用 否则无限地递归调用将导致程序无法结束 例计算Fibonacci 斐波纳契 数列 longfib intn if n 2 return fib n 1 fib n 2 elsereturn 1 main printf ld n fib 6 例使用递归算法编写计算n 的函数 longfac longn returnn 0 1 n fac n 1 voidmain intm scanf d 例使用递归算法求m和n的最大公约数gcd 分析 求m和n的最大公约数等价于求n与 mmodn 的最大公约数 mod模运算即整除求余 则有gcd m n 等价于gcd n mmodn 例如 求24和16的最大公约数即求与gcd 16 24mod16 的最大公约数为gcd 16 8 又等价于gcd 16 16mod8 为gcd 8 0 此时n为零 m即为最大公约数 includefloatgcd floatm floatn voidmain floatm n g printf nInputm n n scanf f f 程序如下 floatgcd floata floatb if b 0 return a elsereturn gcd b fmod a b 变量的作用范围也称变量的作用域 即变量可以存储或访问的范围 变量的作用域是指变量的 可见性 二 变量的作用范围 局部变量 在一个函数内部定义的变量 局部变量的作用范围仅限于本函数 即只有在本函数内才能使用它们 其他函数不能使用它们 说明 不同函数中可以使用相同名字的变量 它们代表不同的对象 互不干扰 形参也是局部变量 可以在一个复合语句中定义变量 这些变量只在本复合语句中有效 1 局部变量 局部变量举例 main intx y floatf1 f2 hanshu intx floaty inta b c 局部变量的使用 说出下列程序的运行结果 includevoidf2 intx inty x y voidf1 intx inty intn 0 f2 x y printf n d x d y d n n x y voidmain intn 2 a 3 b 4 f1 a b printf n d a d b d n n a b n 0 x 3 y 4n 2 a 3 b 4 全局变量 在函数外定义的变量 也称外部变量 作用范围 从其定义的地方开始直至源程序文件的结束 全局变量通常放在源程序的开始处 全局变量命名时 通常首字母大写 其余字母小写 2 全局变量 全局变量举例 intAbc D1 main floatf1 f2 floatKa Hc hanshu intx inty doublec e 全局变量Ka Hc的作用域 例 intX 3 intfunc intc 0 c X X 10 return c main intk 2 k func printf 1 d n k k func printf 2 d n k 运行结果 1 32 13 全局变量的特点 优点 利用全局变量可以从函数中得到一个以上的返回值 利用全局变量可以减少函数中实参和形参的个数 缺点 全局变量在程序运行过程中始终都占用存储单元 而不是在函数被调用时才临时分配存储单元 函数的通用性降低 在同一个源程序中 当全局变量与局部变量同名 在局部变量的作用域内 全局变量不起作用 即全局变量被 屏蔽 例 intM 5 intfun intx inty intM 10 return x y M main inta 7 b 5 printf d n fun a b M 运行结果 5 例已知一个一维数组 用一个函数求数组最大数 最小数和平均数 includeintNum Max Min intaverage intarray inti intarray aver array 0 Max Min array 0 for i 1 iMax Max array i if array i Min Min array i array av
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025无极县综合职业技术教育中心工作人员招聘考试试题
- 2025昆明市盘龙职业高级中学工作人员招聘考试试题
- 2025桂平市第一中等职业技术学校工作人员招聘考试试题
- 2026年出口方便米饭行业创新与趋势报告
- 2026年建筑行业AR设计报告
- 《农村土地整治对农业生态环境影响的生态补偿机制与政策优化》教学研究课题报告
- 2025年环保涂料生产项目技术创新与绿色涂料市场潜力评估报告
- 固收转债分析-金杨转债定价:上市转股溢价率6065
- 定期报告:业绩期过后科技成长会高低切吗
- 基于区块链的电子病历安全共享与隐私保护机制研究教学研究课题报告
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 求欧普照明员工手册
- 2023年交通银行信贷手册真题模拟汇编(共452题)
- 钢管材质证明书
- 中考语文复习专题训练-丁立梅作品阅读训练
- 清华大学出版社机械制图习题集参考答案(课堂PPT)
- 甲状腺功能减退
- 于焕新老师阳光心态与情绪压力管理讲义
- YY/T 1757-2021医用冷冻保存箱
- 平台资金存管-课后考试附答案
- GB/T 6075.2-2012机械振动在非旋转部件上测量评价机器的振动第2部分:功率50 MW以上,额定转速1 500 r/min、1 800 r/min、3 000 r/min、3 600 r/min陆地安装的汽轮机和发电机
评论
0/150
提交评论