第五章 类与对象习题
case Y2000:cout<<\break; case Y2001:cout<<\break; case Y2002:cout<<\break; case Y2003:cout<<\break; case Y2004:cout<<\break; case Y2005:cout<<\break; }
switch(month){//,,,,,,,,
case Jan:cout<<'/'<<\break; case Feb:cout<<'/'<<\break; case Mar:cout<<'/'<<\break; case Apr:cout<<'/'<<\break; case May:cout<<'/'<<\break; case Jun:cout<<'/'<<\break; case Jul:cout<<'/'<<\break; case Aug:cout<<'/'<<\break; case Sep:cout<<'/'<<\break; case Oct:cout<<'/'<<\break; case Nov:cout<<'/'<<\break; case Dec:cout<<'/'<<\break; }
cout<<'/'< cout<<\ cout< int main(){ Timedate A(Y2004,Mar,3),B; A.list(); B.list(); B.putdate(Y2005,Oct,18); B.puttime(17,30,00); B.list(); } 5.4 设计并测试一个矩形类(Rectangle),属性为矩形的左下与右上角的坐标,矩形水平放 置。操作为计算矩形周长与面积。测试包括用成员函数和普通函数。 解:这里的矩形的4边分别与x轴y轴平行,为最简单的情况。注意参数有缺省值的函数 的声明和定义格式。 #include double left, top ; double right, bottom; 5 第五章 类与对象习题 public: Rectangle(double l=0, double t=0, double r=0, double b=0);//变量名可省略 ~Rectangle(){}; //析构函数,在此函数体为空 void Assign(double l,double t,double r,double b); double getLeft(){ return left;}下四个函数皆为内联成员函数 double getRight(){ return right;} double getTop(){return top;} double getBottom(){return bottom;} void Show(); double Area(); double Perimeter(); }; // 构造函数,带缺省参数,缺省值为全0,在声明中指定 Rectangle::Rectangle(double l , double t, double r, double b) { left = l; top = t; right = r; bottom = b; } void Rectangle::Assign(double l, double t, double r, double b){//赋值 left = l; top = t; right = r; bottom = b; } void Rectangle::Show(){ cout<<\ cout<<\} double Rectangle::Area(){ return fabs((right-left)*(bottom-top)); } double Rectangle::Perimeter(){ return 2*(fabs(right-left)+fabs(bottom-top)); } void print(Rectangle rt){//普通函数 cout<<\ cout<<\ (\} void main(){ Rectangle rect; rect.Show(); rect.Assign(100,200,300,400); rect.Show(); Rectangle rect1(0,0,200,200); rect1.Show(); 6 第五章 类与对象习题 Rectangle rect2(rect1); rect2.Show(); print(rect); cout<<\面积\周长\} 5.5 定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计 算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。 解:通常所有数据成员都在构造函数中赋初值。拷贝构造函数以本类的引用为参数。#include double r,Area,Circumference; public: Circle(double a=0); Circle(Circle &); void SetR(double R); double GetR(){return r;} double GetAreaCircle(){return Area;} double GetCircumference(){return Circumference;} }; Circle::Circle(double a){ r=a; Area=r*r*3.14159265; Circumference=2*r*3.14159265; } Circle::Circle(Circle & cl){ r=cl.r; Area=cl.Area; Circumference=cl.Circumference; } void Circle::SetR(double R){ r=R; Area=r*r*3.14159265; Circumference=2*r*3.14159265; } void main(){ Circle cl1(2),cl2,cl3=cl1; cout<<\圆半径:\圆周长:\ <<'\\t'<<\圆面积:\ cl2.SetR(4); 7 第五章 类与对象习题 cout<<\圆半径:\圆周长:\ <<'\\t'<<\圆面积:\} 5.6 设计一个学校在册人员类(Person)。数据成员包括:身份证号(IdPerson),姓名(Name), 性别(Sex),生日(Birthday)和家庭住址(HomeAddress)。成员函数包括人员信息的录入和显示。还包括构造函数与拷贝构造函数。设计一个合适的初始值。 解:本题为指出构造函数等的调用,加了一些提示语句。 #include enum Tsex{mid,man,woman}; class Person{ char IdPerson[19]; //身份证号,18位数字 char Name[20]; //姓名 Tsex Sex; //性别 int Birthday; //生日,格式1986年8月18日写作19860818 char HomeAddress[50]; //家庭地址 public: Person(char *,char *,Tsex,int,char *); Person(Person &); Person(); ~Person(); void PrintPersonInfo(); void inputPerson(); //其他接口函数 }; Person::Person(char *id,char *name,Tsex sex,int birthday,char *homeadd){ cout<<\构造Person\ strcpy(IdPerson,id); strcpy(Name,name); Sex=sex; Birthday=birthday; strcpy(HomeAddress,homeadd); } Person::Person(){ cout<<\缺省构造Person\ IdPerson[0]='\\0';Name[0]='\\0';Sex=mid; Birthday=0;HomeAddress[0]='\\0'; } Person::Person(Person & Ps){ cout<<\拷贝构造Person\ strcpy(IdPerson,Ps.IdPerson); strcpy(Name,Ps.Name); Sex=Ps.Sex; 8
相关推荐: