}
float Convert(float TempFer) {
float TempCel;
TempCel = ((TempFer - 32) * 5) / 9; return TempCel; }
2.分别编写四个同名函数max1,实现函数重载,在main()函数中测试函数功能。示例程序lab3_2.cpp如下:
#include
return (x>y?x:y); }
int max1(int x, int y, int z) {
int t=max1(x,y); return (t>z?t:z); }
float max1(float x, float y) {
return (x>y?x:y); }
float max1(float x, float y, float z) {
float t=max1(x,y); return (t>z?t:z); }
void main() {
int x1, x2; float d1, d2; x1 = max1(5,6); x2 = max1(2,3,4);
d1 = max1(float(2.1), float(5.6));
d2 = max1(float(12.3), float(3.4),float(7.8)); cout << \ cout << \
15
}
cout << \cout << \
3.在main()函数中提示输入两个整数x、y,使用cin语句得到x、y的值,调用pow(x,y)函数计算xy的结果,再显示出来。示例程序lab3_3.cpp如下:
#include
#include
int x, y;
cout << \输入x的值:\ cin >> x;
cout << \输入y的值:\ cin >> y;
cout << x << \的\次幂为:\}
4.编写递归函数int fun(int n),在主程序中输入n的值,调用fun函数计算机n!的值。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。 示例程序lab3_4.cpp如下:
#include
int fun(int n) {
int f;
if(n==1)f=1;
else f=fun(n-1)*n; return f; }
void main(void) {
int n,answer;
cout<<\请输入一个整数0
answer=fun(n);
cout< 5.使用debug中的Step Into追踪到函数内部,观察函数的调用过程。调 16 试操作步骤如下: 1)选择菜单命令Build|Start Debug|Step in,或按下快捷键F11,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时Visual Studio中光标停在main()函数的入口处。 2)把光标移到语句answer=fun(n)前,从Debug菜单单击Run to Cursor,在程序运行的DOS窗口中按提示输入数字(如5),回到Visual Studio中,光标将停在该语句所在行,观察n及其他变量的值(观察方法见实验二)。 3)从Debug菜单或Debug工具栏中单击Step Into,或按下F11,程序进入fun函数,观察n,f及其他相关变量的值。重复上述操作,直到退出fun函数,分析程序的执行过程,加深对函数调用和递归调用的理解。 4)再试试Debug菜单栏中的菜单项,熟悉Debug的各种方法。 17 实验四 类与对象 一、实验目的 1.掌握类的定义和使用。 2.掌握类的对象的声明。 3.复习具有不同访问属性的成员的访问方式。 4.观察构造函数和析构函数的执行过程。 5.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 二、实验课时 4学时 三、实验任务 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。 2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。 3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义见实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。 18 4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、拷贝构造函数、设置与获取X和Y的值的函数,并测试之。 四、实验步骤 1.首先定义枚举类型CPU_Rank,再定义CPU类,包含等级、频率、电压等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。示例程序lab4_1.cpp代码如下: #include enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { private: CPU_Rank rank; int frequency; float voltage; public: CPU (CPU_Rank r, int f, float v) { rank = r; frequency = f; voltage = v; cout << \构造了一个CPU!\ } ~CPU () { cout << \析构了一个CPU!\ void Run() {cout << \开始运行!\ void Stop() {cout << \停止运行!\}; void main() { CPU a(P6,300,2.8); a.Run(); a.Stop(); } 19