已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第5讲函数函数的定义及调用 2 主要内容 函数无参无返回值函数有参无返回值函数有参有返回值函数函数间数据传递整数类型整数变量的定义整数的运算整数的输入和输出整数在函数间传递 P84 P95第4章函数 用户自定义函数 4 2 1函数定义 函数是指完成一个特定工作的独立程序模块 库函数 由C语言系统提供定义 如scanf 等函数自定义函数 用户根据需要定义 如cylinder 函数main 是一个主函数 C程序由一个main 或多个函数构成程序中一旦调用了某个函数 该函数就会完成特定功能 然后返回到调用它的地方 除主函数外一般函数都不能单独运行 函数经过运算 得到一个明确结果 并需要回送该结果 有返回值函数 例 函数cylinder 返回圆柱的体积 函数完成一系列操作步骤 不需要回送任何运算结果 无返回值函数 1 无参无返回值函数2 有参无返回值函数 P25 一般有参 用户自定义函数 函数定义 编制独立功能的程序函数声明 主调函数调用前声明函数调用 主调函数调用被调用函数函数执行 运行被调用函数注 不能独立运行 4 5 写自己的函数 用户自定义函数 voidtriangle void printf n printf n printf n 无返回值函数void函数的作用仅仅是执行一系列的指令 打印 1 无参无返回值函数定义p87一般形式 void函数名 void 函数体 6 void函数名 函数体 voidtriangle void printf n printf n printf n voidtriangle printf n printf n printf n 或 P4 无参无返回值的函数的声明p87 一般形式 void函数名 void voidtriangle void 主调函数告诉编译系统用户自定义函数的存在编译系统在检查被调函数时要知道调用信息包括 函数名 参数 返回类型 仅仅声明了 函数名 7 P4 无参无返回值的函数的调用 一般形式 函数名 上例 triangle 写一个主函数 调用 triangle 函数 打印图形 includevoidmain void voidtriangle 函数声明 triangle voidtriangle printf n printf n printf n 8 P4 aprogramtooutputatriangle includevoidtriangle void main printf Abouttoprintatriangle n triangle printf Thatwasit n voidtriangle void printf n printf n printf n 9 例 sample01 04 c 函数声明 主函数前 p84 2 函数调用 函数定义 调用自定义函数 中可不包括任何内容 但 一定要写 可放在main函数之前 也可放在main函数的后面 但不能放在main函数的函数体中 函数和函数之间地位是平等的 没有嵌套关系 只有嵌套调用 告诉编译器 存在这样一个用户自定义的函数 及它的调用方法 名称 参数 返回值 主调函数 被调函数 预处理 10 执行流程 程序的执行顺序从main函数开始执行 执行完main函数即结束执行 遇到调用函数 转向执行被调函数 执行完被调函数后 返回调用函数的调用处 继续向下执行 程序的书写顺序与执行顺序有关 顺序执行 分支或循环会改变顺序函数的书写顺序与执行顺序无关函数定义若写在函数调用之前 函数声明可省略 但不主张 includevoidmain void voidtriangle triangle voidtriangle printf n printf n printf n includevoidtriangle printf n printf n printf n voidmain void triangle 11 完成画简图 女孩 的程序 打印图形女孩房子男孩 12 sample01 03 c 完成画基本组件的函数画一个圆画一个横线画一个平行线画一个交叉线完成画三角形的函数画一个交叉线画一个横线 在main函数中调用子函数完成画小女孩画一个圆画三角形画一个交叉线 13 完成画基本组件的函数 Drawacircle voiddraw circle void printf n printf n printf n Draw绘画Circle圆 Drawintersectinglines voiddraw intersect void Use2 stoprint1 printf n printf n printf n intersectinglines相交线 14 完成画基本组件的函数 Drawsabaseline voiddraw base void printf n baseline基 横 线 Drawaparallel voiddraw parallel void printf n printf n Parallel平行线 15 完成画三角形的函数 Drawsatriangle voiddraw triangle void draw intersect 画相交线 draw base 画横线 画小女孩 include functionprototypes voiddraw circle void 圆voiddraw intersect void 相交线voiddraw base void 横线voiddraw triangle void 三角形 intmain void Drawacircle draw circle Drawatriangle draw triangle Drawintersectinglines draw intersect return0 Function函数Prototype原型 17 执行示例 18 思考 main函数中三条语句功能还不明显 可增加一个函数draw girl画小女孩请修改程序 main 19 画小女孩函数 Drawsagirl voiddraw girl void Drawacircle draw circle Drawatriangle draw triangle Drawintersectinglines draw intersect 20 完成画小女孩程序 include functionprototypes voiddraw circle void voiddraw intersect void voiddraw base void voiddraw triangle void voiddraw girl void intmain void draw girl return0 21 改错题error1 6 c voidmain printstar sayHello void printstar voidprintStar void printf voidsayHello void printf helloworld P2 includevoidmain voidprintStar void voidsayHello void printStar sayHello printStar voidprintStar void printf voidsayHello void printf helloworld 2 有参无返回值函数定义P87 void函数名 形参表 函数首部 函数实现过程 函数体 return 可以省略return 注 这类函数通常用于屏幕输出等 表示不返回结果 不能省略否则 函数类型被默认定义为int 参数 参数的作用 实现值的传递主调函数向被调函数传递值 实际参数 实参 被调函数处理所需要的数据 函数调用被调函数向主调函数传递值 形式参数 形参 被调函数向主调函数传递被调函数运行结果的数据 函数定义 3 有参有返回值函数定义程序解析 计算圆柱体积 例 输入圆柱体的高h和半径r 求圆柱体积 volume r2 h 要求定义并调用函数cylinder r h 计算圆柱体的体积 cylinder圆柱体 volume体积 计算圆柱体积 includeintmain void doubleheight radius volume doublecylinder doubler doubleh 函数声明 函数类型函数名类型名称类型名称 实参表 printf Enterradiusandheight scanf lf lf 例 源程序 Cylinder函数 函数定义 求圆柱体积 doublecylinder doubler doubleh 函数类型函数名类型名称类型名称 形参表 doubleresult result 3 1415926 r r h 计算体积 returnresult 返回结果 Enterradiusandheight 3 010Volume 282 743 注 主函数完成输入输出 1 返回运算结果的函数定义 函数类型函数名 形参表 函数首部 函数实现过程 函数体 return表达式 将函数运算的结果回送给主调函数 注 只能返回一个值 函数返回值的类型 注 没有分号 doublecylinder doubler doubleh doubleresult result 3 1415926 r r h returnresult 函数定义 形参 类型1参数1 类型2参数2 类型n参数n参数之间用逗号分隔 每个参数前面的类型都必须分别声明 函数类型函数名 形参表 函数实现过程return表达式 不能写成doubler h doublecylinder doubler doubleh doubleresult result 3 1415926 r r h returnresult P2 课堂练习 定义判断奇偶数的函数even n inteven intn 函数首部 if n 2 0 判别奇偶数 return1 偶数返回1 elsereturn0 奇数返回0 分析 功能 判断奇偶数形式参数 整数n返回值 当n为偶数时返回1 否则返回0 函数类型函数名 参数表 voidtriangle void voidpyramid intn doublecylinder doubler doubleh 函数必须先定义后调用 如果自定义函数在主调函数的后面 就需要在函数调用前 加上函数原型声明 函数声明 说明函数的类型和参数的情况 以保证程序编译时能判断对该函数的调用是否正确 书写位置 写在 main 里 函数体开始位置 写在 main 前 在主调函数前 函数 原型 声明 注 只写函数定义中的第1行 函数首部 并以分号结束 无参无返回值函数声明 有参无返回值函数声明 有参有返回值 函数调用P89 函数定义后 可以在其它函数中调用该函数 或自己调用自己 嵌套调用 调用C标准库函数时 在程序的最前面用 include命令包含相应的头文件 如 include调用自定义函数时 程序中必须有与调用函数相对应的函数声明 doublecylinder doubler doubleh volume cylinder radius height 函数调用 1 函数调用的形式和过程 使用 带 返回值 volume cylinder radius height printf f n cylinder radius height 完成操作 无返回值 pyramid 5 有参triangle 无参 常用于void类型函数的调用 常用于有返回结果的函数的调用 常量 变量 表达式 函数名 实参表 函数调用的过程 计算机在执行程序时 从主函数main开始执行 如果遇到某个函数调用 暂停执行主函数 转而执行相应的被调函数 该函数执行完后 将返回主函数 然后再从原先暂停的位置继续执行 函数遇return或最后的大括号 返回主函数 示意图 includeintmain void doubleheight radius volume doublecylinder doubler doubleh printf Enterradiusandheight scanf lf lf 调用函数 实参 形参 执行函数中的语句 返回调用它的地方 函数声明 结束 函数定义空格结束 分析函数调用的过程 2 参数传递P91 函数定义时的参数 形式参数 简称形参 doublecylinder doubler doubleh 函数调用时的参数 实际参数 简称实参 volume cylinder radius height 为形参分配存储单元实参 形参的单向传递 实参把值复制给形参实参 常量 变量或表达式形参 变量 用于接受实参传递过来的值形参和实参一一对应 数量 类型和顺序均一致调用结束后释放形参存储单元 保留实参存储单元 值 3 返回函数运行结果P94 函数返回的两种情况完成确定运算 并返回该运算结果返回给主调函数 完成指定工作 没有确定的运算结果需返回给主调函数 函数类型void 函数返回结果的一般形式 return表达式 如 returnresult return 表达式 如 return 3 1415926 r r h 先求 表达式 值 再返回 表达式值 return语句结束函数运行带着运行结果返回主调函数 doublecylinder doubler doubleh return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术转移多方协议书样本
- 2024年劳务派遣标准合同
- 工程造价评估合同范本
- 常用工具租赁合同范本
- 居间服务合同案例分析
- 招生代理合同2024年
- 天津2024年租赁协议书
- 路基稳定性课程设计
- 无子离婚财产分割协议书范本
- 个人投资合同范本参考
- 有限空间作业安全交底
- 初中数学新课标培训心得
- 护士如何处理病患的沟通和冲突问题
- 泵与泵站知识点总结
- 大班音乐《小老鼠和泡泡糖》课件
- 12、口腔科诊疗指南及技术操作规范
- 四年级上册Unit1 My classroom作业设计案例
- 孕产妇妊娠风险筛查与评估
- 走出舒适区:如何突破自我设限获得持久行动力
- 人居环境科学讲义
- 中国成人患者肠外肠内营养临床应用指南(2023版)
评论
0/150
提交评论