nullnull第六讲 函数(1)函数
两种形式参数
返回值类型
(2)运算表达式
(3)语句第六讲 函数概述概述 函数是程序按功能划分的基本单位,俗称子程序
函数有三个方面的内容:
函数原型
编译器检查程序中调用函数语句语法正确性的依据
程序员编写调用函数语句的依据
函数定义
函数功能的具体实现
是连接器链接目标代码、函数库的依据
函数调用
实际使用函数,必要时需提供待加工的实际数据(被称为实际参数)函数原型函数原型 语法
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
返回类型 函数名(形式参数表) ;
例如:
int rand(); // 产生随机数
double sqrt(double x); // 算术平方根
double pow(double x, double y); // x的y次幂
或只指出形参的数据类型
int rand(void); // 无形式参数
double sqrt(double); // 一个形参(一元函数)
double pow(double, double);// 两个形参(二元函数)函数定义函数定义 系统所提供的函数(
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
函数)
已经定义且被编译成函数库文件
函数原型在相应的头文件中
只要包含相应的头文件,便可使用这些函数
但这些函数的具体定义成为黑箱
例如: double x=2.0, y; y = sqrt(x); sqrt函数到底是如何将2.0加工成1.414的,不必关心。
用户自定义函数
函数实现 ——— 根据算法实现具体的功能;
是求解问题算法的程序语言表达。函数调用函数调用 将实际参数交给函数进行加工,返回一定的结果
函数的形式参数决定了对实际参数的使用方式
无参数
仅某个表达式的值(包括某变量的值)传递给函数
将变量本身传递给函数
函数的返回类型
无返回 (void)
仅返回一个数值 (存放在临时变量中)
返回一个变量 (已经存在的变量) 3.2.1 函数的形式参数3.2.1 函数的形式参数 (1)无形式参数
调用函数时无须提供实际参数,但是表示函数调用的圆括号不能缺少。
例如:n = rand(); // 产生一个随机数
(2)传值型(形式参数为定义变量)
函数调用时,将创建形参变量,意味着
为形式参数变量分配自己的内存空间;
用实际参数(表达式)的值初始化形参变量;
新创建的形参变量存放在栈空间中,函数返回时销毁 (与自动变量类似);
函数体内对形参的操作与实参无关。3.2.1 函数的形式参数3.2.1 函数的形式参数 (3)引用型(形式参数为声明引用)
函数调用时,不创建变量,形参为实参的别名,意味着:
形参不另外占用内存空间;
用实参初始化形参的引用声明;
引用型形参“绑定”实参,直至函数返回;
函数体内对形参的操作,就是对实参的操作 (与实参相关)。3.2.1 函数的形式参数3.2.1 函数的形式参数 综上所述
函数在调用时,其形式参数变量的定义及初始化,遵循变量定义及初始化的
规定
关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定
;
函数在调用时,其形式参数引用的声明及初始化,遵循引用声明及初始化的规定;
形式参数的生命期从函数调用时起,至函数返回时止。
函数原型中形式参数名称可以缺省,不能缺省的
数据类型 ———— 传值型
数据类型 & ———— 引用型编写一个求x的n次方的函数#include
using namespace std;
double power(double x, int n);
int main()
{ cout<< "5的2次方为:" <
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
一个函数(黑箱)根据a,b,c(假定a≠0)确定x1,x2及flag的值。函数原型设计函数原型设计 函数原型设计方案一
返回类型void。6个参数
a,b,c传值型;x1,x2,flag引用型
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);
返回方程的类型符号 & 的
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
写位置自由 函数定义(以方案二为例)函数定义(以方案二为例) #include using namespace std;
int Solver(double a, double b, double c,
double &x1, double &x2) // 函数首部
{ // 函数体
double d = b*b – 4*a*c; // 定义变量
if(d<0) return 0; // 判别式小于0,返回0
d = sqrt(d); // 调用标准函数
x1 = (-b-d)/(2*a); // 根据求根公式计算
x2 = (-b+d)/(2*a);
if(d>0) return 2; // 判别式大于0,返回2
else return 1; // 判别式等于0,返回1
}null #include // 测试函数的功能 using namespace std;
int Solver(double a, double b, double c, double &x1, double &x2); // 函数声明
int main() { int flag; // 定义变量 double x1, x2; // 定义变量
flag = Solver(1, 2, -3, x1, x2); // 函数调用
cout << ”方程 x^2 + 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; }关于参数单向/双向传递关于参数单向/双向传递 函数的黑箱特性
接收输入 ─→ 实现功能 ─→ 返回结果
形式参数
传值型————接收实参(输入:单向传递给函数)
引用型————接收实参并“返回”结果(输入/输出:双向)
返回类型
返回结果————返回一个数据(输出:单向)
int Solver(double, double, double,
double &, double & );返回结果单向传递双向传递
“返回”结果返回与“返回”返回与“返回”利用函数的返回类型只能返回一种数据类型的结果;
利用引用型形式参数能“返回”多个多种数据类型的计算结果;
注意:
对应于引用型形式参数的实际参数必须是可以被引用的量
如:flag = Solver(1, 2, -3, 4, 5);是错误的(不能将常量4、5作为变量)。例3.3 交换两个实参的值例3.3 交换两个实参的值 #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 < 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 < 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个量)。
系统提供的临时变量;
这个变量是无名的,用函数
调用表达式表示。a += b;
return a;例3.5 迭加计算函数例3.5 迭加计算函数 #include 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 << endl; // 输出 8
return 0; }两个函数的比较两个函数的比较 int Add(int a, int b)
{
a += b; // 仅修改了形参变量,与实参无关
return a; // 返回a的值,存放到一临时变量中
} // a及b的生命期即将结束
int & AddAssign(int &a, int b)
{
a += b; // 修改了引用a所绑定的实参变量
return a; // 引用返回a所绑定的实参变量
} 3.3 运算表达式3.3 运算表达式 3.3.1 C++运算符汇总 (表3-3)
优先级、结合方向
3.3.2 单目运算 (只有一个操作数)
3.3.3 二进制位运算 (~,&,^,|)
3.3.4 迭代赋值运算 (位运算迭代赋值)
3.3.5 抽取及插入运算 (>>及<<)
3.3.6 三目条件运算 (? :)
3.3.7 逗号运算 (,)
3.3.8 区分作用域 (::)3.3.6 三目条件运算3.3.6 三目条件运算 C++中唯一的三目运算符,需要3个操作数。格式
表达式1 ? 表达式2 : 表达式3
若表达式1为真(非零),则整个三目条件运算表达式的值为表达式2的值;否则为表达式3的值。 double abs(double x)
{
if(x>=0) return x;
else return –x;
}
或
double abs(double x)
{
return x>=0 ? x : -x;
}3.3.7 逗号运算3.3.7 逗号运算 一系列用逗号连接起来的表达式。格式
表达式1,表达式2,…,表达式n
依次计算各表达式的值
整个逗号表达式的值为表达式n的值
区分作用域
::全局变量名
std::cout << “OK” << std::endl;
cin, cout, endl等属于std名字空间。
编写语句 using namespace std; 之后可以省略 std::3.4 语句3.4 语句 语句是对程序某动作的完整表达
表达式语句(赋值语句、输入语句、输出语句、函数调用语句)。其格式为:
表达式; (表达式后加分号)
流程控制语句(条件分支语句、开关语句、循环语句、跳转语句、返回语句)
复合语句
用一对花括号 {} 包围起来的若干条(0条、一条或多条)语句;
在语法上作为一个单语句使用;
空语句
; (一个分号)累加计算函数(1+2+3+…+n)累加计算函数(1+2+3+…+n)循环体语句分别是
单语句
复合语句
空语句
3种方法等效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;
}课堂实战课堂实战P103-(5)
编程求“水仙花数”。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为153=1^3+5^3+3^3。null#include //5-3.cpp
#include
using namespace std;
int main()
{
int i,j,k,x,y;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
x=100*i+10*j+k;
y=pow(i,3)+pow(j,3)+pow(k,3);
if(x==y)
cout<
本文档为【专业C++第6讲-函数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。