//1) 编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。
#include double Max1(double x,double y) { if(x>=y) return x; if(x double Max1(double x,double y,double z) { while(x>=y) { if(y>=z) return x; if(y void main() { int x,y,z; cout<<\"请输入x,y,z的值\"< cout<<\"请输出最大值:\"< 、 定义//2) 写一个函数,具有一个引用作为形参参数,在函数中改变引用变量的值,观察实参变量的变化。 #include void swap2(int &x,int y) { int temp; temp=x; x=y; y=temp; } void swap3(int x,int y) { int temp; temp=x; x=y; y=temp; } void main() { } int a=5,b=7; swap1(a,b); cout<<\"a=\"<cout<<\"i=\"<cout<<\"x=\"< 3) 一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有 成员函数run、stop。其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 #include enumCPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { private: CPU_Rank rank; int frequency; float voltage; public: CPU(intnewrank,intnewfrequency,floatnewvoltage); void run(); void stop(); ~CPU(){cout<<\"成功调用析构函数\"< void CPU::run() { cout<<\"程序开始执行\"< cout<<\"程序结束\"< rank=(CPU_Rank)newrank; frequency=newfrequency; voltage=newvoltage; cout<<\"成功调用构造函数\"< CPU cpu(2,60,220); cpu.run(); cpu.stop(); return 0; } /*4) 定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。 cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象, 定义并实现这个类,为以上的类编写构造和析构函数,观察组合类和内嵌类的构造函数和析构函数的调用顺序。*/ #include { cout<<\"程序结束\"< cpu=newcpu; ram=newram; cdrom=newcdrom; cout<<\"成功调用构造函数\"< Computer computer(2,6,2); computer.run(); computer.stop(); return 0; } 5) 为题目2)的类编写复制构造函数,在主函数中利用复制构造的方式创建新的对象,观察对象的状态。 #include class Point{ public: Point(int xx=0,int yy=0){ x=xx; y=yy; } Point(Point &p); intgetX(){ return x; } intgetY(){ return y; } private: intx,y; }; Point::Point(Point &p){ x=p.x; y=p.y; cout<<\"复制构造函数\"< int main(){ Point a(4,5); Point b=a; cout< 1) 实现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称; 整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。 #include class CLIENT{ public: CLIENT(){ ClientNum++; } void showname(){ cout<<\"已定义的客户数量为:\"< cout<<\"改变后的名字为:\"< private: static char ServerName; static int ClientNum; }; int CLIENT::ClientNum=0; char CLIENT::ServerName='m'; int main(){ CLIENT a; a.showname(); a.ChangServerName(); CLIENT b(a); b.showname(); b.ChangServerName(); return 0; } 2)利用多文件结构实现题目1),在头文件client.h中定义类,在文件client.cpp中实现该类,在文件test.cpp 中测试这个类,观察相应的成员变量取值的变化情况,要求ClientNum能够实时记录客户机对象的数量。 //Client.h: class CLIENT{ public: CLIENT(){ClientNum++;} void showname(); static ChangServerName(); ~CLIENT(){ClientNum--;} private: static char ServerName; static int ClientNum; }; //Client.cpp: #include\"client.h\" #include char CLIENT::ServerName='m'; void CLIENT::showname(){ cout<<\"已定义的客户数量为:\"< ServerName=newName; cout<<\"改变后的名字为:\"< #include\"client.h\" #include return 0; } 运行结果相同,只是写成了多文件形式 3)思考并回答以下概念: 类的静态数据成员,类的静态函数成员,多文件结构,文件包含。 类的静态数据成员:如果某个属性为整个类所共有,不属于任何一个具体对象,则采用static关键字来声明为静态数据成员。 类的静态函数成员:就是使用static关键字声明的函数成员,静态成员函数也属于整个类,由同一个类的所有对象共同拥有,为这些类所共享。 多文件结构:在规模较大的项目中,往往需要多个源程序文件,每个源程序文件成为一个编译单元,可以通过不同的文件实现要求。 文件包含:一个文件包含在另一个文件当中。 实验三 1) 编写一个类用于处理3×3矩阵转置,测试转置的效果,输出转置前后的矩阵。 #include public: Matrix(int a1[3][3]) { for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { a[i][j]=a1[i][j]; } } } void change(Matrix &m1); void output(); private: int a[3][3]; }; void Matrix::change(Matrix &m1) { for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { m1.a[j][i]=a[i][j]; } } }