聊城大学《面向对象程序设计》复习题及参考答案_第1页
聊城大学《面向对象程序设计》复习题及参考答案_第2页
聊城大学《面向对象程序设计》复习题及参考答案_第3页
聊城大学《面向对象程序设计》复习题及参考答案_第4页
聊城大学《面向对象程序设计》复习题及参考答案_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《面向对象程序设计》练习题及参考答案一、单选题1、下列关于C++模板的描述中,正确的是:A.模板是一种用于实现泛型编程的机制B.模板可以被继承C.模板必须在编译期间被实例化D.模板中可以包含任何类型的成员函数2、在C++中,以下关键字用于实现继承关系:()A.BaseB.extendC.inheritD.:(冒号)3、下列关于C++虚函数的描述中,错误的是:A.虚函数是用于实现多态的一种机制B.虚函数必须在派生类中也必须加virtual声明为虚函数C.子类中可以重新定义基类中的虚函数D.虚函数在运行时动态绑定4、在C++中,以下哪种情况下会自动生成默认构造函数:()A.类中没有任何构造函数B.类中有至少一个构造函数C.类中只有私有构造函数D.类中只有静态成员5、下列关于C++构造函数的描述中,正确的是:A.构造函数的名字必须与类的名字相同B.构造函数没有返回值C.构造函数不能被重载D.构造函数可以被继承6、在C++中,以下关键字用于定义类的构造函数:()A.ClassB.VirtualC.ConstructorD.static二、程序设计题1、编写一个简单的图形类层次结构,包括一个基类Shape和两个派生类Circle和Rectangle。其中,Shape类具有以下成员函数和数据成员:成员函数:doublegetArea()const,返回图形的面积。数据成员:无。Circle类和Rectangle类继承自Shape类,分别具有以下成员函数和数据成员:Circle类:成员函数:doublegetRadius()const,返回圆的半径。数据成员:doubleradius,表示圆的半径。Rectangle类:成员函数:doublegetWidth()const,返回矩形的宽度;doublegetHeight()const,返回矩形的高度。数据成员:doublewidth,表示矩形的宽度;doubleheight,表示矩形的高度。请编写上述类的完整实现,并在main()函数中创建对象进行测试。2、设计一个简单的几何图形类(Shape),包含计算面积和周长的虚函数。从Shape类派生出两个子类:矩形类(Rectangle)和圆形类(Circle),并分别实现其计算面积和周长的函数。在main函数中创建一个矩形对象和一个圆形对象,并输出其面积和周长。3、首先创建了一个BankAccount类对象account1,传入了账号、账户名和初始余额的值。调用account1的display()函数,输出了账号信息和初始余额。接着调用account1的deposit(500.0)函数,将500.0存入账户,并输出"Deposited:$500"。然后调用account1的withdraw(200.0)函数,从账户中取出200.0,并输出"Withdrawn:$200"。调用account1的display()函数,输出账户信息和剩余余额。接着调用account1的withdraw(1500.0)函数,尝试从账户中取出1500.0,但由于账户余额不足,输出"Invalidamountforwithdrawal"。调用account1的deposit(-100.0)函数,尝试将负数存入账户,但由于存款金额不合法,输出"Invalidamountfordeposit"。最后调用account1的display()函数,输出最终的账户信息和余额。根据上面的描述写出BankAccount类的定义,并在主函数中按照上述描述进行调用。4、设计一个简单的学生信息管理系统,包括学生的姓名、学号、年龄、性别和成绩。要求通过类的方式实现学生信息的录入、查询和显示功能。要求:(1)设计一个Student类,包含学生的姓名、学号、年龄、性别和成绩等属性。(2)实现学生信息的录入功能,可以输入学生的姓名、学号、年龄、性别和成绩。(3)实现学生信息的查询功能,可以根据学号或姓名查询学生的信息。(4)实现学生信息的显示功能,可以显示所有学生的信息。参考答案一、单选题ADBABC二、程序设计题1、答:#include<iostream>classShape{public:virtualdoublegetArea()const{return0.0;}};classCircle:publicShape{public:Circle(doubler):radius(r){}doublegetRadius()const{returnradius;}doublegetArea()constoverride{return3.1415926535*radius*radius;}private:doubleradius;};classRectangle:publicShape{public:Rectangle(doublew,doubleh):width(w),height(h){}doublegetWidth()const{returnwidth;}doublegetHeight()const{returnheight;}doublegetArea()constoverride{returnwidth*height;}private:doublewidth;doubleheight;};intmain(){Circlec(5.0);Rectangler(3.0,4.0);std::cout<<"Circlewithradius"<<c.getRadius()<<"hasarea:"<<c.getArea()<<std::endl;std::cout<<"Rectanglewithwidth"<<r.getWidth()<<"andheight"<<r.getHeight()<<"hasarea:"<<r.getArea()<<std::endl;return0;}2、答:#include<iostream>usingnamespacestd;classShape{public:virtualdoublegetArea()const=0;virtualdoublegetPerimeter()const=0;};classRectangle:publicShape{public:Rectangle(doublewidth,doubleheight):width_(width),height_(height){}doublegetArea()constoverride{returnwidth_*height_;}doublegetPerimeter()constoverride{return2*(width_+height_);}private:doublewidth_;doubleheight_;};classCircle:publicShape{public:Circle(doubleradius):radius_(radius){}doublegetArea()constoverride{return3.14159265358979323846*radius_*radius_;}doublegetPerimeter()constoverride{return2*3.14159265358979323846*radius_;}private:doubleradius_;};intmain(){Rectanglerectangle(5.0,8.0);Circlecircle(3.0);cout<<"矩形的面积:"<<rectangle.getArea()<<endl;cout<<"矩形的周长:"<<rectangle.getPerimeter()<<endl;cout<<"圆形的面积:"<<circle.getArea()<<endl;cout<<"圆形的周长:"<<circle.getPerimeter()<<endl;return0;}3、答:#include<iostream>#include<string>classBankAccount{private:std::stringaccountNumber;std::stringaccountHolderName;doublebalance;public:BankAccount(conststd::string&number,conststd::string&name,doubleinitialBalance):accountNumber(number),accountHolderName(name),balance(initialBalance){}voiddeposit(doubleamount){if(amount>0){balance+=amount;std::cout<<"Deposited:$"<<amount<<std::endl;}else{std::cout<<"Invalidamountfordeposit"<<std::endl;}}voidwithdraw(doubleamount){if(amount>0&&amount<=balance){balance-=amount;std::cout<<"Withdrawn:$"<<amount<<std::endl;}else{std::cout<<"Invalidamountforwithdrawal"<<std::endl;}}voiddisplay(){std::cout<<"AccountNumber:"<<accountNumber<<std::endl;std::cout<<"AccountHolderName:"<<accountHolderName<<std::endl;std::cout<<"Balance:$"<<balance<<std::endl;}};intmain(){BankAccountaccount1("123456789","JohnDoe",1000.0);account1.display();account1.deposit(500.0);account1.withdraw(200.0);account1.display();account1.withdraw(1500.0);account1.deposit(-100.0);account1.display();return0;}4、答:#include<iostream>#include<string>usingnamespacestd;classStudent{public:Student(){}Student(stringname,intid,intage,chargender,doublescore):name_(name),id_(id),age_(age),gender_(gender),score_(score){}voidInputInfo(){cout<<"请输入学生姓名:";cin>>name_;cout<<"请输入学生学号:";cin>>id_;cout<<"请输入学生年龄:";cin>>age_;cout<<"请输入学生性别(M/F):";cin>>gender_;cout<<"请输入学生成绩:";cin>>score_;}voidQueryInfoById(intid){if(id_==id){DisplayInfo();}}voidQueryInfoByName(stringname){if(name_==name){DisplayInfo();}}voidDisplayInfo(){cout<<"学生姓名:"<<name_<<endl;cout<<"学生学号:"<<id_<<endl;cout<<"学生年龄:"<<age_<<endl;cout<<"学生性别:"<<gender_<<endl;cout<<"学生成绩:"<<score_<<endl;}pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论