李长河 (教授)

教授 博士生导师 硕士生导师

性别:男

毕业院校:莱斯特大学

学历:研究生(博士)毕业

学位:工学博士学位

所在单位:自动化学院

职务:Professor

学科:自动化

办公地点:中国地质大学(武汉)自动化学院710室,湖北省武汉市洪山区鲁磨路388号

联系方式:027-8717 5083

Email:

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


实验目的

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、设计两个重载函数,分别求两个整数相除的余数和两个实数相除的余数。两个实数求余定义为实数四舍五入取整后相除的余数。