实验九 函数的重载和变量的作用域 

实验目的

1、 了解内联函数、重载函数、带默认参数函数的定义及使用方法。

2、 掌握作用域的概念、变量的存储类型及它们之间的差别。

3、 掌握程序的多文件组织。  

二、实验内容

1、 重载函数允许不同的函数使用相同的名字,这使得完成类似的任务时可以使用相同的函数名。

范例:编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积, 计算边长为1的正方形及其内切圆、内接等腰三角形和等腰梯形面积。

函数原型如下: double area(double radius=0);

//圆面积,参数为半径,默认参数为0,表示点面积 double area(double a, double b);

// 计算矩形面积,参数为长和宽 double area(double a, double b, double h);

//计算梯形面积,参数为两底和高 double area(double a, double b, double c, int);

//计算三角形面积,参数为三边长,int 型参数起标示作用,以区别于梯形,不参加计算。

 

【要求】

(1) 编译运行程序,并记录运行结果,注意函数调用时,实参与形参之间的关系(包括类型、个数)。

(2) 若将计算矩形面积的函数原型改为 double area(double a=0, double b=0);重新编译运行情况会怎样?为什么?

(3) 若将计算三角形面积的函数原型改为 double area(double a, double b,double c);程序还能正确运行吗?为什么?

(4) 若将计算三角形面积的函数原型改为 double area(double a, double b,double c=0,int); 程序还能正确运行吗?为什么?

 

2、 编程:将上题以多文件方式组织,在area.h 中声明各个area( )函数原型,在area.cpp中定义函数,然后在Exp9_2.cpp中包含area.h,并定义main( )函数并执行。

【注意:】VC++6.0中以c开头的头文件,如 不在标准名字空间中,所以area.cpp中不可以加 using namespace std;

 

3、范例:全局变量、局部变量和静态局部变量的应用示例。

【要求】

(1) 分析并写出下列程序的执行结果,然后输入计算机执行,比较分析结果与执行结果。如果两结果不相同请分析原因。

 

4、设计两个重载函数,分别求两个整数相除的余数和两个实数相除的余数。两个实数求余定义为实数四舍五入取整后相除的余数。