7.1函数的基本知识
使用C++函数必须完成一下三步:
1.提供函数原型。
2.提供函数定义。
3.调用函数
#include<iostream>
using namespace std;
void simple();
int main()
{
cout<<"main() will call the simple() function:\n";
simple();
cout<<"main() is finished with the simple() function.\n";
return 0;
}
void simple()
{
cout<<"I'm but a simple function.\n";
}
7.1.1 定义函数
可将函数分为有返回值和无返回值,其中无返回值的为void函数。
void functionName(parameterList)
{
statement(s);
return;
}
function Name:函数名称。
parameter List:传递给函数的参数类型和数量。
statement:声明。
void函数可用于cheer(制定打印次数)
void cheers(int n)
{
for(int i=0;i<n;i++)
std::cout<<"cheers!";
std::cout<<std::endl;
}
有返回值的函数将生成一个值,例如返回一个数的平方根的值sqrt()
cin>>x;
m=sqrt(x);
cout<<m;
输入x至sqrt,传递到m,最后显示m。此时m就是x开平方后的值。
如果代码中含有多个返回值,则第一个返回值返回后代码结束。
int x,y;
if(x>y) return x;
else return y;
返回语句中可以使用表达式
int cube(int x,int y)
{
return x*x*y;
}
7.1.2 函数原型和函数调用
函数原型大多数隐藏在头文件中。
函数原型必须是一条语句,声明了函数名,返回值类型,参数类型及个数。
函数原型的最简单获取方式,就是函数头加上;
int cheers (int x,int y);
若cheers函数放在main函数后面,则需要再main前面加上此代码,进行一个声明。
原型的功能,保证以下三点:
编译器是否正确处理函数返回值;
编译器使用的参数数目是否正确:
编译器使用的参数类型是否正确;
7.2 函数参数和按值传递
double cube(double x)
{
****//内容省略
}
int main()
{
double volume = cube(side);
return 0;
}
side是一个变量。
cube函数被调用时,改函数创建一个新的名为x的double变量,并将其初始化为x原本的值。这样cube()执行的操作将不会影响main()中的数据。也可以称cube()使用的时side的副本,而不是原来的数据。
其中
用于接收传递值得变量称为:形参。
用于传递给函数的值的称为:实参。
7.2.1 多个参数
函数可以有多个参数,在调用时,使用逗号分隔即可。
void axis(int x,int y,int z)
axis(x,y,z)
double nice,nb;
for(p=nice,w=nb;p>0;p--,w--)
{
*****
}
若函数的参数类型一致,可以简写。
void zaza(float a,float b)
void zbzb(float a,b)
在结尾添加符号即可得到函数原型。
习题
目标
编写一个程序,不断要求用户输入两个数,直到其中的一个为 0。对于每两个数,程序将使用一个函数来计算它们的调和平均数,并将结果返回给 main()
,而后者将报告结果。调和平均数指的是倒数平均值的倒数,计算公式如下:
调和平均数=2.0 _ x _ y / (x + y)
要求
- 文件存放在
/home/project
下,源代码文件名为7-1.cpp
; - 代码必须编译为可执行文件,可执行文件名称为
7-1
。
提示
输入命令 g++ -o 7-1 7-1.cpp -std=c++11
进行编译,输入命令 ./7-1
运行代码。
#include<iostream>
using namespace std;
double average(double x,double y)
{
double sum;
sum=2*x*y/(x+y);
return sum;
}
int main()
{
double num1,num2;
double maa;
while(1)
{
cin>>num1>>num2;
if(num1==0||num2==0)break;
maa = average(num1,num2);
}
printf("%lf",maa);
return 0;
}