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";
}

C++ primer plus C++的编程模块(1)-LMLPHP

 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)

要求
  1. 文件存放在 /home/project 下,源代码文件名为 7-1.cpp
  2. 代码必须编译为可执行文件,可执行文件名称为 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;
}
11-21 17:44