- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机与信息工程分院 第7讲 函数(1) ----函数的定义和调用 主要内容 1.函数及函数定义的一般形式(1) 1.1函数概述 说明(1) 说明(2) 示意图 例7.1简单的函数调用 1.函数及函数定义的一般形式(2) 1.2函数定义的一般形式(1) 1.函数及函数定义的一般形式(3) 1.2函数定义的一般形式(2) 2.函数参数和函数的值 形式参数和实际参数 在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称“形参”),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为”实际参数”。 例7-2调用函数时的数据传递 关于形参和实参的说明(1) 关于形参和实参的说明(2) 返回值的说明(1) 函数的值只能通过return语句返回主调函数。 返回值的说明(2) 例7-3 返回值类型与函数类型不同 3.函数的调用(1) 函数调用的一般形式 3.函数的调用(2) 4.函数的嵌套调用 1)C语言的函数定义都是相互平行、独立的,也就是说在定义函数时,一个函数内部不能包含另一个函数。 2)C语言不能嵌套定义,但可以嵌套调用函数。 图形说明 例 7-6用弦截法求方程f(x)=x3 -5x2 +16x -80=0根 例 7-6用弦截法求方程f(x)=x3 -5x2 +16x -80=0根 例 7-6用弦截法求方程f(x)=x3 -5x2 +16x -80=0根 例 7-6用弦截法求方程f(x)=x3 -5x2 +16x -80=0根 例 7-6用弦截法求方程f(x)=x3 -5x2 +16x -80=0根 例 7-6用弦截法求方程f(x)=x3 -5x2 +16x -80=0根 5.函数的递归调用(1) 递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 直接调用本函数 间接调用本函数 5.函数的递归调用(2) 例7-7 例7-8 例7-9 例 7-7(1) 例 7-7(2) 例7-7求解示意图 例7-8 用递归方法求n! 例7-9 Hanoi(汉诺)塔问题(1) 例7-9 Hanoi(汉诺)塔问题(2) 例7-9 Hanoi(汉诺)塔问题(3) 例7-9 Hanoi(汉诺)塔问题(4) 例7-9 Hanoi(汉诺)塔问题(5) 作业 思考题 函数定义和函数声明的语法规则及使用方式 例7-4 例7-5 对被调用的函数作声明 函数调用的条件 被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。 如果使用库函数,一般还应该在本文件开头用#include命令将调用有关库函数时所需用到的信息“包含”到本文件中来。 如使用用户自己定义的函数,而且该函数与调用函数在同一文件中,一般应在主调函数中对被调用的函数作声明。 注意:定义和声明不是一回事。 “定义”是对函数功能的确立,包括指定函数名,函数值类型、形参及类型等,是一个完整、独立的函数单位。 “声明”是把函数的名字、函数类型和形参的类型、个数以及顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。 说 明 以前的C版本的函数声明方式不是采用函数原型,而只声明函数名和函数类型。 如在函数调用之前,没有对函数作说明,则编译系统会把第一次遇到的该函数形式(函数定义或函数调用)作为函数的声明,并将函数类型默认为int型。 如果被调用函数的定义出现在主调用函数之前,可不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必对所调用的函数再作声明。 例7-5-1 举 例 例7-5-2 举 例 求第五个人年龄的过程 age(int n) /*求年龄的递归函数*/ {int c; /*c用作存放函数的返回 值的变量*/ if(n==1) c=10; else c=age(n-1)+2; return(c); } main() {printf(“%d”,age(5)); } 求解过程示意图 运行结果: 18 age(5) =age(4)+2 age(4) =age(3)+2 age(3) =age(2)+2 age(2) =age(1)+2 age(1) 10 age(2) =12 age(3) =14 age(4) =16 age(5) =18 1 (n=0,1) n!= n·(n-1)! (n1) float fac(int n) {float f; if(n0){print(“n0
您可能关注的文档
最近下载
- 07564唐宋词研究(广东)通关宝典.pdf
- 幼儿园书法练字启蒙第五讲、第六讲完整课件.pptx VIP
- 五年级数学集体备课(初稿) (1).doc
- 人教精通版2024三年级英语上册Unit 2 达标检测卷+答案.doc
- 重庆市第一中学校2024-2025学年九年级上学期期初检测数学试题(解析版).docx VIP
- 2022-2023学年合肥市庐阳区寿春中学九年级上学期期中数学试卷(含答案解析).docx
- 国家开放大学《西方行政学说》章节测试参考答案.pdf
- 保安人员基本信息登记表.docx
- ExponentialandLogarithmicFunctions.ppt
- 17松鼠(任务二) 大单元公开课课件 部编版五年级语文上册.ppt
文档评论(0)