C++考试模拟编程题.docx
- 文档编号:30719618
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:31
- 大小:21.61KB
C++考试模拟编程题.docx
《C++考试模拟编程题.docx》由会员分享,可在线阅读,更多相关《C++考试模拟编程题.docx(31页珍藏版)》请在冰豆网上搜索。
C++考试模拟编程题
【编程题】选做
1、定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。
答案:
#include
#include
#include
classbase//定义一个基类
{protected:
charname[20];//姓名
charsex[3];//性别
intage;//年龄
…………
};
classteacher:
publicbase//基类派生出教师类
{intsno;//工号
charzc[20];//职称
doublewages;//工资
…………
};
classstudent:
publicbase//基类派生出学生类
{intsno;//学号
charbj[10];//班级
charzy[10];//专业
doublescore;//入学成绩
…………
};
2、声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。
答案:
#include
classMammal
{public:
Mammal(){cout<<"callMammal"< ~Mammal(){cout<<"Deletebaseclass"< }; classDog: publicMammal {public: Dog(){cout<<"callDog\n";} ~Dog(){cout<<"DeleteDogclass\n";} }; voidmain() {Dogb;} 3、声明一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积。 使用Rectangle类创建一个派生类Square。 答案: #include #definePI3.1415926 classshape {protected: doubles; public: voidshow() {cout<<"s="< } }; classRectangle: publicshape {doublex,y; public: Rectangle(doublex1=0,doubley1=0){x=x1;y=y1;} voidGetArea(){s=x*y;} }; classCircle: publicshape {doubler; public: Circle(doubler1=0){r=r1;} voidGetArea(){s=r*r*PI;} }; classSquare: publicRectangle {doublea; public: Square(doublea1=0){a=a1;} voidGetArea(){s=a*a;} }; 【编程解答题】 4、定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。 答案: #include #include #include classbase//定义一个基类 {protected: charname[20];//姓名 charsex[3];//性别 intage;//年龄 ………… }; classteacher: publicbase//基类派生出教师类 {intsno;//工号 charzc[20];//职称 doublewages;//工资 ………… }; classstudent: publicbase//基类派生出学生类 {intsno;//学号 charbj[10];//班级 charzy[10];//专业 doublescore;//入学成绩 ………… }; 5、声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。 答案: #include classMammal {public: Mammal(){cout<<"callMammal"< ~Mammal(){cout<<"Deletebaseclass"< }; classDog: publicMammal {public: Dog(){cout<<"callDog\n";} ~Dog(){cout<<"DeleteDogclass\n";} }; voidmain() {Dogb;} 6、声明一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积。 使用Rectangle类创建一个派生类Square。 答案: #include #definePI3.1415926 classshape {protected: doubles; public: voidshow() {cout<<"s="< } }; classRectangle: publicshape {doublex,y; public: Rectangle(doublex1=0,doubley1=0){x=x1;y=y1;} voidGetArea(){s=x*y;} }; classCircle: publicshape {doubler; public: Circle(doubler1=0){r=r1;} voidGetArea(){s=r*r*PI;} }; classSquare: publicRectangle {doublea; public: Square(doublea1=0){a=a1;} voidGetArea(){s=a*a;} }; 7、建立一个基类Building,用来存储一座楼房的层数、房间数以及它的总平方英尺数。 建立派生类Housing,继承Building,并存储下面的内容: 卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。 然后,编制应用程序,建立住宅楼对象和办公楼对象,并输出它们的有关数据。 答案: 程序代码: #include classBuilding {public: Building(intf,intr,doubleft) {floors=f; rooms=r; footage=ft; } voidshow() {cout<<"floors: "< cout<<"rooms: "< cout<<"totalarea: "< } protected: intfloors; introoms; doublefootage; }; classHousing: publicBuilding {public: Housing(intf,intr,doubleft,intbd,intbth): Building(f,r,ft) {bedrooms=bd; bathrooms=bth; } voidshow() {cout<<"\nHOUSING: \n"; Building: : show(); cout<<"bedrooms: "< cout<<"bathrooms: "< } private: intbedrooms; intbathrooms; }; classOffice: publicBuilding {public: Office(intf,intr,doubleft,intph,intex): Building(f,r,ft) {phones=ph; extinguishers=ex; } voidshow() {cout<<"\nHOUSING: \n"; Building: : show(); cout<<"phones: "< cout<<"extinguishers: "< } private: intphones; intextinguishers; }; voidmain() {Housinghob(5,7,140,2,2); Officeoob(8,12,500,12,2); hob.show(); oob.show(); } 【编程题】 1、定义Point类,有数据成员X和Y,重载++和--运算符,要求同时重载前缀方式和后缀方式。 答案: #include classPoint {public: Point(){X=Y=0;} intGetX(){returnX;} intGetY(){returnY;} Point&operator++(); Pointoperator++(int); Point&operator--(); Pointoperator--(int); voidPrint(){cout<<"Thepointis("< private: intX,Y; }; Point&Point: : operator++() {X++; Y++; return*this; } PointPoint: : operator++(int) {Pointtemp=*this; ++*this; returntemp; } Point&Point: : operator--() {X--; Y--; return*this; } PointPoint: : operator--(int) {Pointtemp=*this; --*this; returntemp; } voidmain() {Pointobj; obj.Print(); obj++; obj.Print(); ++obj; obj.Print(); obj--; obj.Print(); --obj; obj.Print(); } 分值: 12 难度: 4 知识点: 评析: 注意重载前缀单目运算符和后缀单目运算符的区别。 前缀单目运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参;而后缀单目运算符重载为类的成员函数时,函数要带有一个整型形参。 2、分别用成员函数和友元函数重载运算符,使对实型的运算符=、+、-、*、/适用于复数运算。 答案: 程序如下 #include classcomplex//复数类声明 {public: //外部接口 complex(doubler=0.0,doublei=0.0)//构造函数 {real=r,imag=i;} complexoperator+(complexc2);//运算符"+"重载成员函数 complexoperator-(complexc2);//运算符"-"重载成员函数 complexoperator*(complex); complexoperator/(complex); complexoperator=(complexc2) {real=c2.real;imag=c2.imag; returncomplex(real,imag); } voiddisplay();//输出复数 private: //私有数据成员 doublereal;//复数实部 doubleimag;//复数虚部 }; complexcomplex: : operator+(complexc2)//重载运算符函数实现 {returncomplex(real+c2.real,imag+c2.imag);} //创建-个临时无名对象作为返回值 complexcomplex: : operator-(complexc2)//重载运算符函数实现 {returncomplex(real-c2.real,imag-c2.imag);} complexcomplex: : operator*(complexc2) {doublex,y; x=real*c2.real-imag*c2.imag; y=real*c2.imag+imag*c2.real; returncomplex(x,y); } complexcomplex: : operator/(complexc2) {doublex,y,z; x=real*c2.real+imag*c2.imag; y=real*c2.imag-imag*c2.real; z=real*c2.real+imag*c2.imag; returncomplex(x/z,y/z); } voidcomplex: : display() {cout<<"("< } 分值: 12 难度: 4 知识点: 评析: 3、应用抽象类,求圆、圆内接正方形和圆外切正方形的面积和周长。 答案: #include #definePI3.1415926 #include classbase//抽象基类B0声明 {public: //外部接口 virtualvoiddisplay()=0;//纯虚函数成员 }; classcircle: publicbase//公有派生 {protected: doubler,s,p; public: circle(doublex=0){r=x;} voiddisplay()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 考试 模拟 编程