专业C6讲函数课件研究报告

上传人:yuzo****123 文档编号:139449469 上传时间:2020-07-21 格式:PPT 页数:33 大小:691KB
返回 下载 相关 举报
专业C6讲函数课件研究报告_第1页
第1页 / 共33页
专业C6讲函数课件研究报告_第2页
第2页 / 共33页
专业C6讲函数课件研究报告_第3页
第3页 / 共33页
专业C6讲函数课件研究报告_第4页
第4页 / 共33页
专业C6讲函数课件研究报告_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《专业C6讲函数课件研究报告》由会员分享,可在线阅读,更多相关《专业C6讲函数课件研究报告(33页珍藏版)》请在金锄头文库上搜索。

1、(1)函数 两种形式参数 返回值类型 (2)运算表达式 (3)语句,第六讲 函数,概述,函数是程序按功能划分的基本单位,俗称子程序 函数有三个方面的内容: 函数原型 编译器检查程序中调用函数语句语法正确性的依据 程序员编写调用函数语句的依据 函数定义 函数功能的具体实现 是连接器链接目标代码、函数库的依据 函数调用 实际使用函数,必要时需提供待加工的实际数据(被称为实际参数),函数原型,语法格式 返回类型 函数名(形式参数表) ; 例如: int rand();/ 产生随机数 double sqrt(double x);/ 算术平方根 double pow(double x, double y

2、);/ x的y次幂 或只指出形参的数据类型 int rand(void);/ 无形式参数 double sqrt(double);/ 一个形参(一元函数) double pow(double, double);/ 两个形参(二元函数),函数调用,将实际参数交给函数进行加工,返回一定的结果 函数的形式参数决定了对实际参数的使用方式 无参数 仅某个表达式的值(包括某变量的值)传递给函数 将变量本身传递给函数 函数的返回类型 无返回(void) 仅返回一个数值(存放在临时变量中) 返回一个变量(已经存在的变量),3.2.1 函数的形式参数,(1)无形式参数 调用函数时无须提供实际参数,但是表示函数调

3、用的圆括号不能缺少。 例如:n = rand();/ 产生一个随机数 (2)传值型(形式参数为定义变量) 函数调用时,将创建形参变量,意味着 为形式参数变量分配自己的内存空间; 用实际参数(表达式)的值初始化形参变量; 新创建的形参变量存放在栈空间中,函数返回时销毁(与自动变量类似); 函数体内对形参的操作与实参无关。,3.2.1 函数的形式参数,(3)引用型(形式参数为声明引用) 函数调用时,不创建变量,形参为实参的别名,意味着: 形参不另外占用内存空间; 用实参初始化形参的引用声明; 引用型形参“绑定”实参,直至函数返回; 函数体内对形参的操作,就是对实参的操作(与实参相关)。,3.2.1

4、 函数的形式参数,综上所述 函数在调用时,其形式参数变量的定义及初始化,遵循变量定义及初始化的规定; 函数在调用时,其形式参数引用的声明及初始化,遵循引用声明及初始化的规定; 形式参数的生命期从函数调用时起,至函数返回时止。 函数原型中形式参数名称可以缺省,不能缺省的 数据类型 传值型 数据类型 double power(double x, int n); int main() cout 5的2次方为:power(5,2)endl; return 0; double power(double x, int n) double val=1.0; while(n-) val = val*x; re

5、turn(val); ,编写一个求x的n次方的函数,3.2.2 函数的返回类型,函数的返回类型 (1)无返回类型(void) (2)数值返回 数据类型 函数名(参数表); 函数结果存放在一个临时变量中,该临时变量用函数调用表达式本身表示; 该临时变量在参与一次运算后被销毁。 (3)引用返回 数据类型 返回一个已经存在的变量,该变量用函数调用表达式本身表示。,例3.2 求解一元二次方程,问题描述 由于一元二次方程ax2+bx+c=0由其系数唯一确定,可将方程抽象为3个系数a,b,c(数据类型为double); 在实数域中,一元二次方程可能: 无实数根(类型0) 有两个相同的根(类型1) 有两个不

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

7、, double / 判别式等于0,返回1 ,#include / 测试函数的功能 using namespace std; int Solver(double a, double b, double c, double ,关于参数单向/双向传递,函数的黑箱特性 接收输入 实现功能 返回结果 形式参数 传值型接收实参(输入:单向传递给函数) 引用型接收实参并“返回”结果(输入/输出:双向) 返回类型 返回结果返回一个数据(输出:单向) int Solver(double, double, double, double ,返回结果,单向传递,双向传递 “返回”结果,返回与“返回”,利用函数的返回

8、类型只能返回一种数据类型的结果; 利用引用型形式参数能“返回”多个多种数据类型的计算结果; 注意: 对应于引用型形式参数的实际参数必须是可以被引用的量 如:flag = Solver(1, 2, -3, 4, 5);是错误的(不能将常量4、5作为变量)。,例3.3 交换两个实参的值,#include using namespace std; void swap(int ,希望输出 x = 3, y = 5 x = 5, y = 3 如何设计swap函数?,分析: 函数返回类型void, 要求“返回”2个数值,int temp = a; a = b; b = temp;,#include usi

9、ng 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 = 5 x = 3, y = 5 Swap1是个无用的函数,函数返回类型举例,无类型(void)返回 void greeting() cout ”Hello.” endl; return;/

10、 此语句可省略 数值返回(例3.4) 函数调用表达式表示一个临时变量,不能作左值; 引用返回(例3.5) 函数调用表达式表示所返回的变量,可作左值。,例3.4 加法运算函数,#include using namespace std; int Add(int a, int b) a += b; return a; int main() int a=3, b; b = Add(a, 2); cout a ”, ” b endl; return 0; ,希望输出 3, 5 注意:不能改变两个加数的值, 且得到一个新结果(第3个量)。 系统提供的临时变量; 这个变量是无名的,用函数 调用表达式表示。,

11、a += b; return a;,例3.5 迭加计算函数,#include using namespace std; int ,两个函数的比较,int Add(int a, int b) a += b;/ 仅修改了形参变量,与实参无关 return a;/ 返回a的值,存放到一临时变量中 / a及b的生命期即将结束 int / 引用返回a所绑定的实参变量 ,3.3 运算表达式,3.3.1 C+运算符汇总(表3-3) 优先级、结合方向 3.3.2 单目运算(只有一个操作数) 3.3.3 二进制位运算(, else return x; 或 double abs(double x) return

12、x=0 ? x : -x; ,3.3.7 逗号运算,一系列用逗号连接起来的表达式。格式 表达式1,表达式2,表达式n 依次计算各表达式的值 整个逗号表达式的值为表达式n的值 区分作用域 :全局变量名 std:cout “OK” std:endl; cin, cout, endl等属于std名字空间。 编写语句 using namespace std; 之后可以省略 std:,3.4 语句,语句是对程序某动作的完整表达 表达式语句(赋值语句、输入语句、输出语句、函数调用语句)。其格式为: 表达式;(表达式后加分号) 流程控制语句(条件分支语句、开关语句、循环语句、跳转语句、返回语句) 复合语句

13、用一对花括号 包围起来的若干条(0条、一条或多条)语句; 在语法上作为一个单语句使用; 空语句 ;(一个分号),int sum(int n) int i, sum = 0; for(i=1; i=n; ) sum += i; i+; return 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),循环体语句分别是 单语句

14、复合语句 空语句 3种方法等效,课堂实战,P103-(5) 编程求“水仙花数”。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+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; ,课后实战,编程输出如下“下三角”形式和“上三角”形式的“九九乘法表”。,上三角图省略,本讲小结,调试程序是程序员的基本工作内容。 调试程序磨砺程序员的意志,锻炼程序员的思维。 小结 变量存储类型的继续深入了解 函数的定义、参数、返回值等的理解 各类运算表达式的规定、优先级关系等 语句的分类及使用,作业及实验,第三章作业:HZAU-专业C+作业3 第二次实验:HZAU-专业C+实验2(计算机1-2班) 抓紧时间!,see you!,

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号