C++期末考试试题.docx

上传人:b****6 文档编号:6720087 上传时间:2023-01-09 格式:DOCX 页数:12 大小:18.29KB
下载 相关 举报
C++期末考试试题.docx_第1页
第1页 / 共12页
C++期末考试试题.docx_第2页
第2页 / 共12页
C++期末考试试题.docx_第3页
第3页 / 共12页
C++期末考试试题.docx_第4页
第4页 / 共12页
C++期末考试试题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C++期末考试试题.docx

《C++期末考试试题.docx》由会员分享,可在线阅读,更多相关《C++期末考试试题.docx(12页珍藏版)》请在冰豆网上搜索。

C++期末考试试题.docx

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;}

展开阅读全文
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1