1、1008姓名:张三性别:男工资:25001009李四女2600参考程序:/*2012 IMIS C+ Practice 4 (Object oriented programming)Task 1Programmed byYE HuanzhuoLakesideNov.28, 2012*/#include stringusing namespace std;class Employeeprotected: int num; char name18; char sex3; int wage; static int count; static int totalWage;public: Employe
2、e(int nu, char * nm, char * sx, int wg); Employee(); void ShowBase(); static void ShowStatic();int Employee:count=0;totalWage=0;Employee:Employee(int nu, char * nm, char * sx, int wg) num=nu; strcpy(name, nm); strcpy(sex, sx); wage=wg; count+; totalWage+=wg;Employee() count-; totalWage-=wage;void Em
3、ployee:ShowBase() coutn;numendl;namesexwageShowStatic()counttotalWagen; Employee *a=new Employee* n; for(i=0; inunmsxwg; ai=new Employee(nu, nm, sx, wg); Employee:ShowStatic(); ai-ShowBase(); delete ai; if(i!=n-1) coutclass Date int year; int month; int day; Date(int y, int m, int d); void show();Da
4、te:Date(int y, int m, int d) year=y; month=m; day=d;void Date:show()setfill(0)year-setw(2)monthdayymd) if(y=0&y=9999&=1&m=12) leap=y%4=0&y%100!=0|y%400=0; if(m=2&d=mdm+leap)|(m!=2&=mdm) Date D(y, m, d); D.show(); else couty1x2y2; /输入4个数据,分别表示进行运算的两个复数的实部和虚部 Imaginary imag1(x1,y1),imag2(x2,y2); /用x1、
5、y1创建Imaginary类对象imag1 Add(imag1,imag2); /调用友元函数求两个复数之和,按abi的格式显示运算结果(a和b均为实数) Sub(imag1,imag2); /求两个复数之差并显示运算结果 输入4个数据,分别表示进行运算的两个复数的实部和虚部 2行,分别显示两个复数进行加、减运算的结果 1 3 2 5 3+8i-1-2i Task 3class Imaginaryprivate: float a, b; Imaginary(float x, float y):a(x), b(y) void print() if(a)a; if(b0)+ else if(b=0
6、)0; return; if(b=1)i else if(b=-1)-i else if(b)b friend void Add(Imaginary c, Imaginary d); friend void Sub(Imaginary c, Imaginary d);void Add(Imaginary c, Imaginary d) Imaginary e(c.a+d.a, c.b+d.b); e.print();void Sub(Imaginary c, Imaginary d) Imaginary e(c.a-d.a, c.b-d.b);4. 二进制类(1)运算符重载将一个16位二进制数
7、表示成0和1的字符序列,即用一个字符数组来存放这个二进制数。在这个类中设置两个构造函数,一个是传递整数参数的,另一个是传递字符串参数的。因为用户在创建对象时传递的二进制数,可能是以整数形式给出,也可能是以数字串形式给出,系统应该都能接受。另外有一个类型转换函数int(),用来将类类型向整型转换。两个重载运算符“+”,“-”,用来完成两个二进制数之间的加减运算。class binary /定义二进制类 char bits16; /二进制字模数组 binary(char *); /字符串参数构造函数 binary(int); /整型参数构造函数 friend binary operator +(b
8、inary,binary); /重载“+” friend binary operator -(binary,binary); /重载“-” operator int(); /类类型转换函数 void print();主函数设计如下: binary n1=1011 binary n2=int(n1)+15; binary n3=n1-binary(7); n1.print(); n2.print(); n3.print();int(n2)+5n2-binary(5)n3+binary(5)int(n3)-5string.h/using namespace std; void print();bi
9、nary:binary(char *b) int i, slen=strlen(b);slen; i+) /you can choose different order bitsi=bslen-1-i- /you may use int or char for(;16; i+) /fill the rest with zero bitsi=0;binary(int a) int i=0; while(a) bitsi+=a%2; a/=2; /a=1;operator int() int a=0, b=1, i; if(bitsi) a+=b; b=0; i-) cout(int)bitsi;
10、binary operator +(binary x,binary y) binary z(0); int i, a=0; z.bitsi=x.bitsi+y.bitsi+a; a=z.bitsi/2; z.bitsi%=2; return z;binary operator -(binary x,binary y) z.bitsi=x.bitsi-y.bitsi-a; if(z.bitsi a=1; z.bitsi+=2; a=0;5. 二进制类(2)运算符重载在上一题的基础上,将 + 、 - 运算符定义为binary类的成员函数。并且重载运算符 、 & 、 | ,分别将二进制数按位取反、数按位与及按位或。 binary n4=n1&n2; binary n5=n1|n2; binary n6=n1; n4.print(); n5.print(); n6.print();00000000000010100000000000011011111111*0Task 5 binary operator +(binary); binary operator -(binary); binary operator (); /重载“” binary operator &(binary); /重载“&” binary operator |(binary); /重载“|”
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1