7.6.1 测验
在函数原型中声明的变量的作用域是什么?
回答:当前函数范围
传递给下述函数的值有何特征?
int Func(int &someNumber);
回答:someNumber是指向调用函数中相应变量的引用,而不是其拷贝
调用自己的函数被称为什么?
回答:递归函数
我声明了两个函数,他们的名称和返回类型相同,但参数列表不同,这被称为什么?
回答:重载函数
栈指针指向栈的顶部,中间还是底部?
回答:顶部。
7.6.2 练习
- 编写两个重载的函数,它们分别使用下述公式计算球和圆柱体的体积:
Volume of sphere = (4 * Pi * radius * radius * radius) / 3
Volume of a cylinder = Pi * radius * radius * height
#include <iostream>
using namespace std;
const double Pi = 3.14;
double Volume(double radius);
double Volume(double radius, double height);
int main()
{
cout << "请输入球的半径:";
double radiusSphere = 0.0;
cin >> radiusSphere;
cout << "球的体积是 " << Volume(radiusSphere) << endl;
cout << "请输入圆柱的半径:";
double radiusCylinder = 0.0;
cin >> radiusCylinder;
cout << "请输入圆柱的高:";
double heightCylinder = 0.0;
cin >> heightCylinder;
cout << "圆柱的体积是 " << Volume(radiusCylinder, heightCylinder);
return 0;
}
double Volume(double radius)
{
return (4 * Pi * radius * radius * radius) / 3;
}
double Volume(double radius, double height)
{
return Pi * radius * radius * height;
}
/*
* 输出
* 请输入球的半径:35
球的体积是 179503
请输入圆柱的半径:35
请输入圆柱的高:40
圆柱的体积是 153860
*
*/
编写一个函数,他将一个double数组作为参数
回答: void ProcessArray(double numbers[], int length)
查错:下述代码有什么错误?
#include <iostream>
using namespace std;
const double Pi = 3.1416;
void Area(double radius, double result)
{
result = Pi * radius * radius;
}
int main()
{
cout << "Enter radius: ";
double radius = 0;
cin >> radius;
double areaFetched = 0;
Area(radius, areaFetched);
cout << "The area is:" << areaFetched << endl;
return 0;
}
回答: 函数没有return一个值,或是使用引用将参数部分改为 void Area(double radius, double &result)
查错:下述函数声明有什么错误?
double Area(double Pi = 3.14, double radius);
回答: 要么将有默认值的参数放在列表末尾,要么给所有参数都指定默认值。
编写一个返回类型为void的函数,在提供了半径的情况下,它能帮助调用者计算圆的周长和面积
回答:
void Calculate(double radius, double &Area, double &Circumference )
{
Area = 3.14 * radius * radius;
Circumference = 2 * 3.14 * radius;
}