C++期末考试试题.docx
- 文档编号:6720087
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:12
- 大小:18.29KB
C++期末考试试题.docx
《C++期末考试试题.docx》由会员分享,可在线阅读,更多相关《C++期末考试试题.docx(12页珍藏版)》请在冰豆网上搜索。
C++期末考试试题
编程题1.创建一个名为time的类,它包括分别表示小时、分钟和秒的int类型的数据成员以及两个构造函数,一个构造函数将数据成员初始化为8,另一个将数据成员初始化为一个固定的值。
另有一成员函数将时间以10:
10:
10的格式显示在屏幕上,编写成为一个完整的程序。
#include
classTime
{
private:
intx,y,z;
public:
Time(){x=y=z=8;}
Time(inta,intb,intc){x=a;y=b;z=c;}
voiddisp()
{
cout< "< "< } }; voidmain() { Timet1(10,10,10); t1.disp(); } 编程题2.设计一个学校在册人员类(Person)。 数据成员包括: 身份证号(IdPerson),姓名(Name),性别(Sex),生日(Birthday)和家庭住址(HomeAddress)。 成员函数包括人员信息的录入和显示。 还包括构造函数与拷贝构造函数。 编写成为一个完整的程序。 #include #include usingnamespacestd; enumTsex{mid,man,woman}; classPerson{ charIdPerson[19];//身份证号,18位数字 charName[20];//姓名 TsexSex;//性别 intBirthday;//生日,格式1986年8月18日写作19860818 charHomeAddress[50];//家庭地址 public: Person(char*,char*,Tsex,int,char*); Person(Person&); Person(); ~Person(); voidPrintPersonInfo(); voidinputPerson(); }; Person: : Person(char*id,char*name,Tsexsex,intbirthday,char*homeadd){ strcpy(IdPerson,id); strcpy(Name,name); Sex=sex; Birthday=birthday; strcpy(HomeAddress,homeadd); } Person: : Person(){ IdPerson[0]='\0';Name[0]='\0';Sex=mid; Birthday=0;HomeAddress[0]='\0'; } Person: : Person(Person&Ps){ strcpy(IdPerson,Ps.IdPerson); strcpy(Name,Ps.Name); Sex=Ps.Sex; Birthday=Ps.Birthday; strcpy(HomeAddress,Ps.HomeAddress); } Person: : ~Person(){ } voidPerson: : inputPerson(){ charch; cout<<"请输入身份证号,18位数字: "< cin.getline(IdPerson,19); cout<<"请输入姓名: "< cin.getline(Name,20); cout<<"请输入性别m或w: "< cin>>ch; if(ch=='m')Sex=man; elseSex=woman; cout<<"请输入生日,格式1986年8月18日写作19860818: "< cin>>Birthday; cin.get();//吸收回车符,否则地址输不进去 cout<<"请输入地址: "< cin.getline(HomeAddress,50); } voidPerson: : PrintPersonInfo(){ inti; cout<<"身份证号: "< "< "; if(Sex==man)cout<<"男"<<'\n'; elseif(Sex==woman)cout<<"女"<<'\n'; elsecout<<""<<'\n'; cout<<"出生年月日: "; i=Birthday; cout< i=i%10000; cout< "< } intmain(){ PersonPs1("340822198608181611","程利",man,19860818,"安徽省安庆市怀宁县"), Ps2(Ps1),Ps3; Ps1.PrintPersonInfo(); Ps2.PrintPersonInfo(); Ps3.inputPerson(); Ps3.PrintPersonInfo(); return0; } 编程题3.建立一个基类CBuilding,用来存储一座楼房的层数、房间数以及它的总平方英尺数。 建立派生类Chousing,继承CBuilding,并存储下面的内容: 卧室和浴室的数量。 另外再建立派生类COfficBuilding,继承CBuilding,并存储灭火器和电话的数目。 然后编写应用程序,建立住宅对象和办公楼对象,并输出它们的有关数据。 编写成为一个完整的程序。 #include #include usingnamespacestd; classcbuilding {protected: intfloor,rooms,area; public: cbuilding(intf,intr,inta) {floor=f; rooms=r; area=a; } }; classchousing: publiccbuilding {intbedrooms,bathrooms; public: chousing(intf,intr,inta,intb,intba): cbuilding(f,r,a) {bedrooms=b; bathrooms=ba; } voiddisplay() {cout<<"thenumberofflooris"< cout<<"thenumberofroomsis"< cout<<"thenumberofareais"< cout<<"thenumberofbedroomsis"< cout<<"thenumberofbathroomsis"< } }; classcofficebuildings: publiccbuilding {intfires,phones; public: cofficebuildings(intf,intr,inta,intb,intba): cbuilding(f,r,a) {fires=b; phones=ba; } voiddisplay() {cout<<"thenumberofflooris"< cout<<"thenumberofroomsis"< cout<<"thenumberofareais"< cout<<"thenumberoffiresis"< cout<<"thenumberoftelephonesis"< } }; voidmain() { chousinghouse(1,2,3,4,5); cofficebuildingsoffice(6,7,8,9,10); house.display(); office.display(); } 编程题4.某公司雇员(employee)包括技术人员(technician)和销售员(salesman)。 以employ类为虚基类派生出technician和salesman类;employee类的属性包括姓名、职工号、工资级别,月薪(实发基本工资加业绩工资)。 操作包括月薪计算函数(pay()),该函数要求输入请假天数,扣去应扣工资后,得出实发基本工资。 technician类派生的属性有每小时附加酬金和当月工作时数,及研究完成进度系数。 业绩工资为三者之积。 也包括同名的pay()函数,工资总额为基本工资加业绩工资。 salesman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。 也包括同名的pay()函数,工资总额为基本工资加业绩工资。 编写成为一个完整的程序。 #include #include usingnamespacestd; staticintGrades[]={500,600,750,1000,1400,2000,2800,4000}; classemployee{ protected: stringname;//姓名 intID;//职工号 intgrade;//工资级别 doublesalary;//月 doublebase_salary;//基本月薪 doublecareer_salary;//业绩工资 public: employee(string="",int=0,int=0); employee(employee&);//拷贝构造函数 virtualvoidpay();//月薪计算函数 voidshow(); doublegetsalary(){returnsalary;} doublegetbase_salary(){returnbase_salary;} doublegetcareer_salary(){returncareer_salary;} }; employee: : employee(stringnn,intid,intgr){ name=nn; ID=id; grade=gr; salary=0;//月薪 base_salary=0;//基本月薪 career_salary=0;//业绩工资 } employee: : employee(employee&emp){//拷贝构造函数 name=emp.name; ID=emp.ID; grade=emp.grade; salary=emp.salary;//月薪 base_salary=emp.base_salary;//基本月薪 career_salary=emp.career_salary;//业绩工资 } voidemployee: : show(){cout< voidemployee: : pay(){ intdays; cout<<"请输入请假天数: \n"; cin>>days; base_salary=Grades[grade]*(23-days)/23; career_salary=base_salary/2;//普通员工业绩工资为基本工资的一半 salary=base_salary+career_salary; } classmanager: virtualpublicemployee{//虚基类 protected: doubleprize;//固定奖金额 doublefactor;//业绩系数 public: manager(string="",int=0,int=0,double=0); manager(manager&mag);//拷贝构造函数 voidpay();}; manager: : manager(manager&mag): employee(mag){ prize=mag.prize; factor=mag.factor;} manager: : manager(stringnn,intid,intgr,doublepr): employee(nn,id,gr){ prize=pr;//固定奖金额 factor=0;} voidmanager: : pay(){ intdays; cout<<"请输入请假天数: \n"; cin>>days; cout<<"请输入业绩系数: \n"; cin>>factor; base_salary=Grades[grade]*(23-days)/23; career_salary=prize*factor*(23-days)/23; salary=base_salary+career_salary; } classtechnician: virtualpublicemployee{ protected: doublehours;//月工作时数 doubleperhour;//每小时附加酬金 doubleshfactor;//研究进度系数 public: technician(string="",int=0,int=0,double=0); technician(technician&);//拷贝构造函数 voidpay();}; technician: : technician(technician&tech): employee(tech){//拷贝构造函数 hours=tech.hours;//月工作时数 perhour=tech.perhour;//每小时附加酬金 shfactor=tech.shfactor;//研究进度系数 } technician: : technician(stringnn,intid,intgr,doublephr): employee(nn,id,gr){ hours=0; perhour=phr;//每小时附加酬金 shfactor=0;} voidtechnician: : pay(){ intdays; cout<<"请输入请假天数: \n"; cin>>days; cout<<"请输入研究进度系数: \n"; hours=8*(23-days); cin>>shfactor; base_salary=Grades[grade]*(23-days)/23; career_salary=perhour*hours*shfactor*(23-days)/23; salary=base_salary+career_salary;} classsalesman: virtualpublicemployee{ protected: doubleamount;//销售额 doubleslfactor;//提成比例 public: salesman(string="",int=0,int=0,double=0); salesman(salesman&);//拷贝构造函数 voidpay(); }; salesman: : salesman(stringnn,intid,intgr,doubleslfac): employee(nn,id,gr){ amount=0; slfactor=slfac;} salesman: : salesman(salesman&sale): employee(sale){ amount=sale.amount; slfactor=sale.slfactor;} voidsalesman: : pay(){ intdays; cout<<"请输入请假天数: \n"; cin>>days; cout<<"请输入销售额: \n"; cin>>amount; base_salary=Grades[grade]*(23-days)/23; career_salary=amount*slfactor;salary=base_salary+career_salary;} classdevelopermanager: publicmanager,publictechnician{ public: developermanager(string="",intid=0,intgr=0,doublepr=0,doublephr=0); developermanager(developermanager&);//拷贝构造函数 voidpay();}; developermanager: : developermanager(stringnn,intid,intgr,doublepr,doublephr) : manager(nn,id,gr,pr),technician(nn,id,gr,phr),employee(nn,id,gr){} developermanager: : developermanager(developermanager&deman) : manager(deman),technician(deman),employee(deman){} voiddevelopermanager: : pay(){ intdays; cout<<"请输入请假天数: \n"; cin>>days; cout<<"请输入业绩系数: \n"; cin>>factor; cout<<"请输入研究进度系数: \n"; cin>>shfactor; hours=8*(23-days); base_salary=Grades[grade]*(23-days)/23;//基本工资 career_salary=perhour*hours*shfactor*(23-days)/23;//技术人员奖金 career_salary+=prize*factor*(23-days)/23;//加经理业绩工资 career_salary/=2; salary=base_salary+career_salary; } classsalesmanager: publicmanager,publicsalesman{ public: salesmanager(string="",int=0,int=0,doublepr=0,doubleslfac=0); salesmanager(salesmanager&);//拷贝构造函数 voidpay(); }; salesmanager: : salesmanager(stringnn,intid,intgr,doublepr,doubleslfac) : manager(nn,id,gr,pr),salesman(nn,id,gr,slfac),employee(nn,id,gr){} salesmanager: : salesmanager(salesmanager&salman) : manager(salman),salesman(salman),employee(salman){}//拷贝构造函数 voidsalesmanager: : pay(){ intdays; cout<<"请输入请假天数: \n"; cin>>days; cout<<"请输入业绩系数: \n"; cin>>factor; cout<<"请输入销售额: \n"; cin>>amount; base_salary=Grades[grade]*(23-days)/23;//基本工资 career_salary=prize*factor*(23-days)/23;//经理业绩工资 career_salary/=2; career_salary+=amount*slfactor;//加销售业绩工资 salary=base_salary+career_salary;} intmain(){ employeeeml1("张伟",10012,0),*emlp; managermag1("姚婕",20005,4,1000); techniciantec1("王茜",30047,5,10); salesmansal1("朱明",40038,2,0.05); developermanagerdem1("沈俊",50069,6,1500,12); salesmanagersam1("况钟",60007,3,1000,0.05); eml1.pay();eml1.show();mag1.pay(); mag1.show();tec1.pay(); tec1.show();sal1.pay(); sal1.show();emlp=&dem1; emlp->pay();emlp->show(); emlp=&sam1;emlp->pay(); emlp->show();cout< employeeeml0(eml1); managermag0(mag1); techniciantec0(tec1); salesmansal0(sal1); developermanagerdem0(dem1); salesmanagersam0(sam1); cout<<"输出拷贝结果: "< eml0.show();mag0.show(); tec0.show();sal0.show(); emlp=&dem0;emlp->show(); emlp=&sam0;emlp->show(); return0;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 期末考试 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)