专业C6讲函数ppt课件.ppt

上传人:豆**** 文档编号:33409248 上传时间:2022-08-10 格式:PPT 页数:33 大小:684.50KB
返回 下载 相关 举报
专业C6讲函数ppt课件.ppt_第1页
第1页 / 共33页
专业C6讲函数ppt课件.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《专业C6讲函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《专业C6讲函数ppt课件.ppt(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、专业C6讲函数ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life, there is hope。有生命必有希望。有生命必有希望 (1)函数)函数 两种形式参数两种形式参数 返回值类型返回值类型 (2)运算表达式)运算表达式 (3)语句)语句第六讲第六讲 函数函数2/33概述概述 函数是程序按功能划分的基本单位,俗称子程序函数是程序按功能划分的基本单位,俗称子程序 函数有三个方面的内容:函数有三个方面的内容: 函数原型函数原型编译器检查程序中调用函数语句语法正确性的依据编译器检查程序中调用函数语句语法正确性的依据程序

2、员编写调用函数语句的依据程序员编写调用函数语句的依据 函数定义函数定义函数功能的具体实现函数功能的具体实现是连接器链接目标代码、函数库的依据是连接器链接目标代码、函数库的依据 函数调用函数调用实际使用函数,必要时需提供待加工的实际数据(被称为实际实际使用函数,必要时需提供待加工的实际数据(被称为实际参数)参数)3/33函数原型函数原型 语法格式语法格式 返回类型返回类型 函数名函数名(形式参数表形式参数表) ; 例如:例如:int rand();/ 产生随机数产生随机数double sqrt(double x);/ 算术平方根算术平方根double pow(double x, double y

3、);/ x的的y次幂次幂或只指出形参的数据类型或只指出形参的数据类型 int rand(void);/ 无形式参数无形式参数double sqrt(double);/ 一个形参一个形参(一元函数一元函数)double pow(double, double);/ 两个形参两个形参(二元函数二元函数)4/33函数定义函数定义 系统所提供的函数(标准函数)系统所提供的函数(标准函数) 已经定义且被编译成函数库文件已经定义且被编译成函数库文件 函数原型在相应的头文件中函数原型在相应的头文件中 只要包含相应的头文件,便可使用这些函数只要包含相应的头文件,便可使用这些函数但这些函数的具体定义成为黑箱但这些

4、函数的具体定义成为黑箱 例如:例如: double x=2.0, y; y = sqrt(x);sqrt函数到底是如何将函数到底是如何将2.0加工成加工成1.414的,不必关心。的,不必关心。 用户自定义函数用户自定义函数函数实现函数实现 根据算法实现具体的功能;根据算法实现具体的功能;是求解问题算法的程序语言表达。是求解问题算法的程序语言表达。5/33函数调用函数调用 将实际参数交给函数进行加工,返回一定的结果将实际参数交给函数进行加工,返回一定的结果函数的形式参数决定了对实际参数的使用方式函数的形式参数决定了对实际参数的使用方式 无参数无参数 仅某个表达式的值(包括某变量的值)传递给函数仅

5、某个表达式的值(包括某变量的值)传递给函数 将变量本身传递给函数将变量本身传递给函数函数的返回类型函数的返回类型 无返回无返回(void) 仅返回一个数值仅返回一个数值(存放在临时变量中存放在临时变量中) 返回一个变量返回一个变量 (已经存在的变量已经存在的变量) 6/333.2.1 函数的形式参数函数的形式参数 (1)无形式参数)无形式参数 调用函数时无须提供实际参数,但是表示函数调调用函数时无须提供实际参数,但是表示函数调用的圆括号不能缺少。用的圆括号不能缺少。 例如:例如:n = rand();/ 产生一个随机数产生一个随机数 (2)传值型(形式参数为定义变量)传值型(形式参数为定义变量

6、) 函数调用时,将创建形参变量,意味着函数调用时,将创建形参变量,意味着 为形式参数变量分配为形式参数变量分配自己的自己的内存空间;内存空间; 用实际参数(表达式)的值初始化形参变量;用实际参数(表达式)的值初始化形参变量; 新创建的形参变量存放在栈空间中,函数返回时销毁新创建的形参变量存放在栈空间中,函数返回时销毁(与自动变量类似);(与自动变量类似); 函数体内对形参的操作函数体内对形参的操作与实参无关与实参无关。7/333.2.1 函数的形式参数函数的形式参数 (3)引用型(形式参数为声明引用)引用型(形式参数为声明引用)函数调用时,不创建变量,形参为实参的别名,函数调用时,不创建变量,

7、形参为实参的别名,意味着:意味着: 形参不另外占用内存空间;形参不另外占用内存空间; 用实参初始化形参的引用声明;用实参初始化形参的引用声明; 引用型形参引用型形参“绑定绑定”实参实参,直至函数返回;,直至函数返回; 函数体内对形参的操作,就是对实参的操作函数体内对形参的操作,就是对实参的操作(与实参相关)。(与实参相关)。8/333.2.1 函数的形式参数函数的形式参数 综上所述综上所述函数在调用时函数在调用时,其形式参数变量的,其形式参数变量的定义定义及及初始化初始化,遵循变,遵循变量定义及初始化的规定;量定义及初始化的规定;函数在调用时函数在调用时,其形式参数引用的,其形式参数引用的声明

8、声明及及初始化初始化,遵循引,遵循引用声明及初始化的规定;用声明及初始化的规定;形式参数的生命期从函数调用时起,至函数返回时止。形式参数的生命期从函数调用时起,至函数返回时止。 函数原型中形式参数名称可以缺省,不能缺省的函数原型中形式参数名称可以缺省,不能缺省的 数据类型数据类型 传值型传值型 数据类型数据类型 & 引用型引用型9/33#include using namespace std;double power(double x, int n);int main()cout 5的的2次方为:次方为:power(5,2)endl; return 0;double power(double

9、x, int n)double val=1.0;while(n-) val = val*x;return(val);编写一个求编写一个求x的的n次方的函数次方的函数10/333.2.2 函数的返回类型函数的返回类型 函数的返回类型函数的返回类型 (1)无返回类型()无返回类型(void) (2)数值返回)数值返回数据类型数据类型 函数名函数名(参数表参数表); 函数结果存放在一个函数结果存放在一个临时变量临时变量中,该临时变量用函数调用表达式中,该临时变量用函数调用表达式本身表示;本身表示; 该临时变量在参与一次运算后被销毁。该临时变量在参与一次运算后被销毁。 (3)引用返回)引用返回数据类型

10、数据类型 & 函数名函数名(参数表参数表); 返回一个返回一个已经存在的变量已经存在的变量,该变量用函数调用表达式本身表示。,该变量用函数调用表达式本身表示。11/33例例3.2 求解一元二次方程求解一元二次方程 问题描述问题描述由于一元二次方程由于一元二次方程ax2+bx+c=0由其系数唯一确定,可由其系数唯一确定,可将方程抽象为将方程抽象为3个系数个系数a,b,c(数据类型为(数据类型为double););在实数域中,一元二次方程可能在实数域中,一元二次方程可能: 无实数根无实数根(类型类型0) 有两个相同的根有两个相同的根(类型类型1) 有两个不同的根有两个不同的根(类型类型2)需两个变

11、量需两个变量x1,x2(double型)存放方程可能的根;型)存放方程可能的根;还需要一个变量还需要一个变量flag(数据类型(数据类型int)表示方程的类型,以)表示方程的类型,以便确定便确定x1与与x2是否有意义(是否有意义(x1与与x2总是联系某内存单元总是联系某内存单元,总是有其数值的)。,总是有其数值的)。 要求设计一个函数要求设计一个函数(黑箱黑箱)根据根据a,b,c(假定(假定a0)确定确定x1,x2及及flag的值。的值。12/33函数原型设计函数原型设计 函数原型设计方案一函数原型设计方案一返回类型返回类型void。6个参数个参数 a,b,c传值型;传值型;x1,x2,fla

12、g引用型引用型void Solver(double a, double b, double c, double &x1, double& x2, int & flag); 函数原型设计方案二函数原型设计方案二返回类型返回类型int。5个参数个参数int Solver(double a, double b, double c, double &x1, double &x2);返回方程的类型返回方程的类型符号符号 & 的书写位置自由的书写位置自由 13/33函数定义(以方案二为例)函数定义(以方案二为例) #include using namespace std; int Solver(doubl

13、e a, double b, double c, double &x1, double &x2) / 函数首部函数首部 / 函数体函数体 double d = b*b 4*a*c;/ 定义变量定义变量 if(d0) return 2;/ 判别式大于判别式大于0,返回,返回2 else return 1;/ 判别式等于判别式等于0,返回,返回1 14/33 #include / 测试函数的功能测试函数的功能 using namespace std; int Solver(double a, double b, double c, double &x1, double &x2); / 函数声明函数

14、声明 int main() int flag;/ 定义变量定义变量 double x1, x2;/ 定义变量定义变量 flag = Solver(1, 2, -3, x1, x2); / 函数调用函数调用 cout ”方程方程 x2 + 2x - 3 = 0 ”; switch(flag) case 0: cout ”无实数根。无实数根。”; break; case 1: cout ”有重根有重根x1=x2=” x1; break; case 2: cout ”有两个相异实根有两个相异实根x1=” x1 ”, x2=” x2; break; cout endl; return 0; 可以是常量

15、,可以是常量,变量或表达式变量或表达式必须是已经必须是已经存在的变量存在的变量15/33关于参数单向关于参数单向/双向传递双向传递 函数的黑箱特性函数的黑箱特性 接收输入接收输入 实现功能实现功能 返回结果返回结果 形式参数形式参数 传值型传值型接收实参(输入:单向传递给函数)接收实参(输入:单向传递给函数) 引用型引用型接收实参并接收实参并“返回返回”结果(输入结果(输入/输出:双向输出:双向) 返回类型返回类型 返回结果返回结果返回一个数据(输出:单向)返回一个数据(输出:单向) int Solver(double, double, double, double &, double & )

16、;返回结果返回结果单向传递单向传递双向传递双向传递“返回返回”结结果果16/33返回与返回与“返回返回” 利用函数的返回类型只能返回一种数据类型利用函数的返回类型只能返回一种数据类型的结果;的结果; 利用引用型形式参数能利用引用型形式参数能“返回返回”多个多种数多个多种数据类型的计算结果;据类型的计算结果; 注意:注意:对应于引用型形式参数的实际参数必须是可以对应于引用型形式参数的实际参数必须是可以被引用的量被引用的量 如:如:flag = Solver(1, 2, -3, 4, 5);是错误的(不是错误的(不能将常量能将常量4、5作为变量)。作为变量)。17/33例例3.3 交换两个实参的值

17、交换两个实参的值 #include using namespace std; void swap(int &a, int &b) int temp; temp = a; a = b; b = temp; int main() int x=3, y=5; cout ”x = ” x ”, y = ” y endl; swap(x, y); cout ”x = ” x ”, y = ” y endl; return 0; 希望输出希望输出x = 3, y = 5x = 5, y = 3如何设计如何设计swap函数?函数?分析:分析:函数返回类型函数返回类型void,要求要求“返回返回”2个数值个数

18、值int &a, int &bint temp;temp = a; a = b; b = temp;18/33 #include using namespace std; void swap1(int a, int b) int temp; temp = a; a = b; b = temp; int main() int x=3, y=5; cout ”x = ” x ”, y = ” y endl; swap1(x, y); cout ”x = ” x ”, y = ” y endl; return 0; 输出结果输出结果x = 3, y = 5x = 3, y = 5Swap1是个无用的

19、函数是个无用的函数19/33函数返回类型举例函数返回类型举例 无类型(无类型(void)返回)返回 void greeting() cout ”Hello.” endl; return;/ 此语句可省略此语句可省略 数值返回(例数值返回(例3.4) 函数调用表达式表示一个临时变量,不能作左值;函数调用表达式表示一个临时变量,不能作左值; 引用返回(例引用返回(例3.5) 函数调用表达式表示所返回的变量,可作左值。函数调用表达式表示所返回的变量,可作左值。20/33例例3.4 加法运算函数加法运算函数 #include using namespace std; int Add(int a, in

20、t b) a += b; return a; int main() int a=3, b; b = Add(a, 2); cout a ”, ” b endl; return 0; 希望输出希望输出 3, 5注意:不能改变两个加数的值,注意:不能改变两个加数的值,且得到一个新结果且得到一个新结果(第第3个量个量)。 系统提供的临时变量系统提供的临时变量; ; 这个变量是无名的,用函数这个变量是无名的,用函数调用表达式表示。调用表达式表示。临时的无名变量,临时的无名变量,其生命期随即结束其生命期随即结束a += b;return a;21/33例例3.5 迭加计算函数迭加计算函数 #includ

21、e using namespace std; int & AddAssign(int &a, int b) a += b; return a; int main() int a=3; AddAssign(a, 2); cout a endl;/ 输出输出 5 AddAssign(a, 2)+;/ 引用返回,可作左值引用返回,可作左值 cout a 及及=0) return x; else return x; 或或 double abs(double x) return x=0 ? x : -x; 25/333.3.7 逗号运算逗号运算 一系列用逗号连接起来的表达式。格式一系列用逗号连接起来的表

22、达式。格式 表达式表达式1,表达式,表达式2,表达式,表达式n 依次计算各表达式的值依次计算各表达式的值 整个逗号表达式的值为整个逗号表达式的值为表达式表达式n的值的值 区分作用域区分作用域 :全局变量名全局变量名 std:cout “OK” std:endl; cin, cout, endl等属于等属于std名字空间。名字空间。 编写语句编写语句 using namespace std; 之后可以省略之后可以省略 std:26/333.4 语句语句 语句是对程序某动作的完整表达语句是对程序某动作的完整表达表达式语句(赋值语句、输入语句、输出语句、函数调用表达式语句(赋值语句、输入语句、输出语

23、句、函数调用语句)。其格式为:语句)。其格式为: 表达式表达式;(表达式后加分号)(表达式后加分号)流程控制语句(条件分支语句、开关语句、循环语句、跳流程控制语句(条件分支语句、开关语句、循环语句、跳转语句、返回语句)转语句、返回语句)复合语句复合语句 用一对花括号用一对花括号 包围起来的若干条(包围起来的若干条(0条、一条或多条)语句;条、一条或多条)语句; 在语法上作为一个单语句使用;在语法上作为一个单语句使用;空语句空语句 ;(一个分号)(一个分号)27/33int sum(int n) int i, sum = 0; for(i=1; i=n; ) sum += i; i+; retu

24、rn sum;int sum(int n) int i, sum = 0; for(i=1; i=n; sum+=i+) ; return sum;int sum(int n) int i, sum = 0; for(i=1; i=n; i+) sum += i; return sum;累加计算函数累加计算函数(1+2+3+n) 循环体语句分别是循环体语句分别是单语句单语句复合语句复合语句空语句空语句 3种方法等效种方法等效28/33课堂实战课堂实战 P103-(5) 编程求编程求“水仙花数水仙花数”。水仙花数是指一个三位数,。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,其各

25、位数字的立方和等于该数本身。例如,153是是一个水仙花数,因为一个水仙花数,因为153=13+53+33。29/33#include /5-3.cpp#include using namespace std;int main()int i,j,k,x,y;for(i=1;i10;i+)for(j=0;j10;j+)for(k=0;k10;k+)x=100*i+10*j+k;y=pow(i,3)+pow(j,3)+pow(k,3);if(x=y) coutx=i3+j3+k3endl; return 0;30/33课后实战课后实战 编程输出如下编程输出如下“下三角下三角”形式和形式和“上三角上三

26、角”形式的形式的“九九乘法表九九乘法表”。上三角图省略上三角图省略31/33本讲小结本讲小结 调试程序是程序员的基本工作内容。调试程序是程序员的基本工作内容。 调试程序磨砺程序员的意志,锻炼程序员的思维。调试程序磨砺程序员的意志,锻炼程序员的思维。 小结小结变量存储类型的继续深入了解变量存储类型的继续深入了解函数的定义、参数、返回值等的理解函数的定义、参数、返回值等的理解各类运算表达式的规定、优先级关系等各类运算表达式的规定、优先级关系等语句的分类及使用语句的分类及使用32/33作业及实验作业及实验 第三章作业:第三章作业:HZAU-专业专业C+作业作业3 第二次实验:第二次实验:HZAU-专业专业C+实验实验2(计算机计算机1-2班班) 抓紧时间!抓紧时间!33/33

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com