C、C++编程题目和代码4_第1页
C、C++编程题目和代码4_第2页
C、C++编程题目和代码4_第3页
C、C++编程题目和代码4_第4页
C、C++编程题目和代码4_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

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

文档简介

C、C++编程题目和代码4C、C++编程题目和代码4/NUMPAGES175C、C++编程题目和代码4C、C++编程题目和代码4目录8667手机服务(构造+拷贝构造+堆) 314614Point&Circle(类与对象) 624866任意鸡任意钱问题(构造与析构) 109401距离计算(友元函数) 1322515样例输出 1428852复数运算(友元函数) 1518901旅馆顾客统计(静态成员) 1825656三维空间的点(继承) 2113293圆和圆柱体计算(继承) 2330629时钟模拟(继承) 269636在职研究生(多重继承) 2815141交通工具(多重继承) 3215190商旅信用卡(多重继承) 3523314电视机与遥控器1 3913220图形面积(虚函数与多态) 4430862动物园(虚函数与多态) 477196员工工资(虚函数与多态) 502在职研究生(多重继承) 5414416复数运算(运算符重载) 5813398分数的加减乘除(运算符重载) 607840时钟调整(运算符前后增量) 637456字符串的加减(运算符重载) 668247食品管理系统 69=======================================================================================================================二级指针指向二维数组:=======================================================================================================================手机服务(构造+拷贝构造+堆)时间限制:

1Sec

内存限制:

128MB

提交:

234

解决:

95

[提交][状态][讨论版]题目描述设计一个类来实现手机的功能。它包含私有属性:号码类型、号码、号码状态、停机日期;包含方法:构造、拷贝构造、打印、停机。1、号码类型表示用户类别,只用单个字母,A表示政府,B表示企业、C表示个人2、号码是11位整数,用一个字符串表示3、号码状态用一个数字表示,1、2、3分别表示在用、未用、停用4、停机日期是一个日期对象指针,在初始化时该成员指向空,该日期类包含私有属性年月日,以及构造函数和打印函数等5、构造函数的作用就是接受外来参数,并设置各个属性值,并输出提示信息,看示例输出6、拷贝构造的作用是复制已有对象的信息,并输出提示信息,看示例输出。

想一下停机日期该如何复制,没有停机如何复制??已经停机又如何复制??7、打印功能是把对象的所有属性都输出,输出格式看示例8、停机功能是停用当前号码,参数是停机日期,无返回值,操作是把状态改成停用,并停机日期指针创建为动态对象,并根据参数来设置停机日期,最后输出提示信息,看示例输出要求:在主函数中实现号码备份的功能,对已有的虚拟手机号的所有信息进行复制,并将号码类型改成D表示备份;将手机号码末尾加字母X主函数的参考代码如下:假设号码类名为PNO(为避免代码重复,自己的代码请不要用这个类名)PNOp1();//创建号码并初始化p1.Print();

//输出原号码信息PNOp2(p1);

//实现号码备份p2.Print();

//输出备份号码信息p1.Stop(td);

//原号码停机,td是日期对象p1.Print();

//输出停机后号码信息输入第一行输入t表示有t个号码第二行输入6个参数,包括号码类型、号码、状态、停机的年、月、日,用空格隔开依次输入t行输出每个示例输出三行,依次输出原号码信息、备份号码信息和原号码停机后的信息每个示例之间用短划线(四个)分割开,看示例输出样例输入2A157123456781201511B13287654321220121212样例输出Constructanewphon型=机构||号码|State=在用Constructacopyofphon型=备份||号码||State=在用Stopthephon型=机构||号码|State=停用||停机日期=2015.1.1Constructanewphon型=企业||号码|State=未用Constructacopyofphon型=备份||号码||State=未用Stopthephon型=企业||号码|State=停用||停机日期=2012.12.12#include<iostream>#include<string>usingnamespacestd;

classDate{private:

intyear,month,day;public:

Date(inty,intm,intd):year(y),month(m),day(d)

{}

intgety(){returnyear;}

intgetm(){returnmonth;}

intgetd(){returnday;}

voidprint(){}};classphone{private:

chartype;

stringnumber;

intstatus;

Date*date;public:

phone(chart,stringn,ints):type(t),number(n),status(s)

{

cout<<"Constructanewphone"<<number<<endl;

if(type=='A')

cout<<"类型=机构||";

elseif(type=='B')

cout<<"类型=企业||";

cout<<"号码="<<number;

if(status==1)

cout<<"||State=在用"<<endl;

elseif(status==2)

cout<<"||State=未用"<<endl;

elseif(status==3)

cout<<"||State=停用"<<endl;

}

phone(phone&s)

{

type=s.type;

status=s.status;

number=s.number;

cout<<"Constructacopyofphone"<<number<<endl;

cout<<"类型=备份||号码="<<number<<"X";

if(status==1)

cout<<"||State=在用"<<endl;

elseif(status==2)

cout<<"||State=未用"<<endl;

elseif(status==3)

cout<<"||State=停用"<<endl;

}

voidstop(Date&s)

{

cout<<"Stopthephone"<<number<<endl;

if(type=='A')

cout<<"类型=机构||";

elseif(type=='B')

cout<<"类型=企业||";

cout<<"号码="<<number;

cout<<"||State=停用||停机日期="

<<s.gety()<<"."

<<s.getm()<<"."

<<s.getd()<<endl;

cout<<""<<endl;

}};

intmain(){

intyear,month,day,status,t;

chartype;

stringnumber;

cin>>t;

while(t--)

{

cin>>type>>number>>status>>year>>month>>day;

phonesb1(type,number,status);

Datesb2(year,month,day);

phonesb3(sb1);

sb1.stop(sb2);

}}=======================================================================================================================Point&Circle(类与对象)时间限制:

1Sec

内存限制:

128MB

提交:

161

解决:

103

[提交][状态][讨论版]题目描述类Point是我们写过的一个类,类Circle是一个新的类,Point作为其成员对象,请完成类Circle的成员函数的实现。在主函数中生成一个圆和若干个点,判断这些点与圆的位置关系,如果点在圆内(包括在圆的边上),输出“inside”,否则输出"outside";然后移动圆心的位置,再次判断这些点与圆的位置关系。输入圆的x坐标y坐标半径点的个数n第一个点的x坐标y坐标第二个点的x坐标y坐标第n个点的x坐标y坐标圆心移动到的新的x坐标y坐标输出第一个点与圆的关系第二个点与圆的关系第n个点与圆的关系aftermovethecentreofcircle圆心移动后第一个点与圆的关系圆心移动后第二个点与圆的关系圆心移动后第n个点与圆的关系样例输入0054112250-60-10样例输出insideinsideinsideoutsideaftermovethecentreofcircle:insideinsideoutsideinside#include<iostream>#include<cmath>usingnamespacestd;classpoint{private:

doublex,y;public:

point(){}

point(doublex_value,doubley_value){}

doublegetx(){returnx;}

doublegety(){returny;}

voidsetxy(doublex1,doubley1){x=x1,y=y1;}

voidset(doublex_value){x=x_value;}

voidsety(doubley_value){y=y_value;}

doublegetdisto(point&p);

~point(){}};doublepoint::getdisto(point&p){

doublex1,y1,dis,n;

x1=p.getx();

y1=p.gety();

n=(x-x1)*(x-x1)+(y-y1)*(y-y1);

dis=sqrt(n);

returndis;}classcircle{private:

pointcenter;

doubleradius;public:

circle(){}

circle(doublex1,doubley1,doubler):radius(r)

{center.setxy(x1,y1);}

doublegetarea(){}

voidmovecenterto(doublex1,doubley1){center.setxy(x1,y1);}

intcontain(point&p);

~circle(){}};intcircle::contain(point&p){

doubledis;

dis=p.getdisto(center);

if(dis<=radius)

return1;

return0;}

intmain(){

doublea,b,r,x,y,xx,yy;

inti,n,k;

cin>>a>>b>>r>>n;

circlefuck(a,b,r);

point*sb;

sb=newpoint[n];

for(i=0;i<n;i++)

{

cin>>x>>y;

sb[i].setxy(x,y);

k=fuck.contain(sb[i]);

if(k==1)

cout<<"inside"<<endl;

else

cout<<"outside"<<endl;

}

cin>>xx>>yy;

fuck.movecenterto(xx,yy);

cout<<"aftermovethecentreofcircle:"<<endl;

for(i=0;i<n;i++)

{

k=fuck.contain(sb[i]);

if(k==1)

cout<<"inside"<<endl;

else

cout<<"outside"<<endl;

}}=======================================================================================================================任意鸡任意钱问题(构造与析构)时间限制:

1Sec

内存限制:

128MB

提交:

179

解决:

130

[提交][状态][讨论版]题目描述百鸡百钱问题描述为:用100元钱买100只鸡,已知每只公鸡5元,每只母鸡3元,3只小鸡1元,问能买多少只公鸡、母鸡和小鸡?试将该类问题用一个类来表示,百鸡百钱问题只是这个类如CChickProblem的一个实例,假设各种鸡的价格不变,类中数据成员有总钱数、要买的总的鸡数、能买到的母鸡、小鸡和公鸡的数量。成员函数有构造和析构函数,求问题解的函数findSolution,打印问题解的函数printSolution。(要求用动态数组保存问题的所有解)编写程序求解该类问题。输入测试数据的组数t第一组鸡数钱数第二组鸡数钱数输出第一组解个数第一组第一个解公鸡数母鸡数小鸡数第一组第二个解公鸡数母鸡数小鸡数

第二组解个数第二组第一个解公鸡数母鸡数小鸡数第二组第二个解公鸡数母鸡数小鸡数样例输入2100100200200样例输出34187881181124847443153836156122915916221622015165248168281171#include<iostream>usingnamespacestd;classfuck{private:

intqian,ji,x,y,z;public:

fuck(intq,intj):qian(q),ji(j){}

~fuck(){

}

int*find();

voidprint(int*sb);};

int*fuck::find(){

inti,j,k,o,p,q,n=1,m=0;

o=qian/5;

p=qian/3;

q=qian*3;

int*sb;

sb=newint[100];

for(i=1;i<o;i++)

for(j=1;j<p;j++)

for(k=0;k<q;k+=3)

if(i+j+k==ji&&5*i+3*j+k/3==qian)

{

m+=3;

sb[n]=i;

n++;

sb[n]=j;

n++;

sb[n]=k;

n++;

}

sb[0]=m;

returnsb;}

voidfuck::print(int*sb){

inti,n;

n=sb[0];

cout<<n/3<<endl;

for(i=1;i<=n;i++)

{

if(i%3==0)

cout<<sb[i]<<endl;

else

cout<<sb[i]<<"";

}}

intmain(){

intqian,ji,t;

cin>>t;

while(t--)

{

cin>>qian>>ji;

fucksb(qian,ji);

int*a=sb.find();

sb.print(a);

}}=======================================================================================================================距离计算(友元函数)时间限制:

1Sec

内存限制:

128MB

提交:

536

解决:

444

[提交][状态][讨论版]题目描述Point类的基本形式如下:请完成如下要求:1.实现Point类;2.为Point类增加一个友元函数doubleDistance(Point&a,Point&b),用于计算两点之间的距离。直接访问Point对象的私有数据进行计算。3.编写main函数,输入两点坐标值,计算两点之间的距离。输入第1行:输入需计算距离的点对的数目第2行开始,每行依次输入两个点的x和y坐标输出每行依次输出一组点对之间的距离(结果直接取整数部分,不四舍五入)样例输入210212324样例输出11#include<iostream>#include<cmath>usingnamespacestd;classpoint{private:

doublex,y;public:

point(doublexx,doubleyy):x(xx),y(yy){}

frienddoubledistence(point&a,point&b);};doubledistence(point&a,point&b){

doublem,n;

m=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);

n=sqrt(m);

returnn;}intmain(){

intt;

doublex1,y1,x2,y2;

cin>>t;

while(t--)

{

cin>>x1>>y1>>x2>>y2;

pointaa(x1,y1),bb(x2,y2);

cout<<int(distence(aa,bb))<<endl;

}}=======================================================================================================================复数运算(友元函数)时间限制:

1Sec

内存限制:

128MB

提交:

512

解决:

397

[提交][状态][讨论版]题目描述复数类的声明如下:要求如下:1.

实现复数类和友元函数addCom和outCom。2.

参考addCom函数为复数类增加一个友元函数minusCom,用于实现两个复数的减法3.

在main函数中,通过友元函数,实现复数的加减法和复数的输出。输入第1行:第1个复数的实部和虚部第2行:需进行运算的次数,注意:是连续运算。具体结果可参考样例

第3行开始,每行输入运算类型,以及参与运算的复数的实部与虚部。“+”表示复数相加,“-”表示复数相减。输出

每行输出复数运算后的结果,复数输出格式为“(实部,虚部)”。样例输入10103+2010-155+525样例输出(30,20)(15,15)(20,40)#include<iostream>usingnamespacestd;classComplex{private:

doublereal;

doubleimag;public:

Complex(){}

Complex(doubler,doublei):real(r),imag(i){}

voidset(doubler,doublei){real=r;imag=i;}

friendComplexadd(Complexc1,Complexc2);

friendComplexminuscom(Complexc1,Complexc2);

friendvoidout(Complexc);};Complexadd(Complexc1,Complexc2){

Complexc3;

c3.real=c1.real+c2.real;

c3.imag=c1.imag+c2.imag;

returnc3;}Complexminuscom(Complexc1,Complexc2){

Complexc3;

c3.real=c1.real-c2.real;

c3.imag=c1.imag-c2.imag;

returnc3;}voidout(Complexc){

cout<<"("<<c.real<<","<<c.imag<<")"<<endl;}intmain(){

intn,i=0;

charch;

doubler1,i1,r2,i2;

cin>>r1>>i1;

Complexa(r1,i1);

cin>>n;

Complex*sb=newComplex[n];

while(n--)

{

cin>>ch>>r2>>i2;

sb[i].set(r2,i2);

if(ch=='+')

a=add(a,sb[i]);

elseif(ch=='-')

a=minuscom(a,sb[i]);

out(a);

}

}==============================================================================================================================================================================================================================================旅馆顾客统计(静态成员)时间限制:

1Sec

内存限制:

128MB

提交:

429

解决:

214

[提交][状态][讨论版]题目描述编写程序,统计某旅馆住宿客人的总数和收入总额。要求输入客人的姓名,输出客人编号(2015+顺序号,顺序号4位,如第1位为0001,第2位为0002,依此类推)、姓名、总人数以及收入总额。总人数和收入总额用静态成员,其他属性采用普通的数据成员。旅馆类声明如下:输入第1行:输入旅馆单个顾客房租第2行开始,依次输入顾客姓名,0表示输入结束。输出每行依次输出顾客信息和当前旅馆信息。包括顾客姓名,顾客编号,旅馆当前总人数,旅馆当前总收入。样例输入150张三李四王五0样例输出张三201500011150李四201500022300王五201500033450#include<iostream>#include<cstring>usingnamespacestd;classhotel{private:

staticintcustnum;

staticfloatearning;

staticfloatrent;

char*name;

intid;public:

hotel(char*a);

~hotel(){}

voidset_num(){custnum=1;}

voidset_id(){id=20150001;}

voidincrease_custnum(){custnum++;}

voidset_earning(){earning=rent;}

voidset_rent(floatr1){rent=r1;}

voidincrease_id(){id++;}

voidincrease_earning(){earning=earning+rent;}

voiddisplay();};///inthotel::custnum=0;floathotel::earning=0;floathotel::rent=0;///hotel::hotel(char*a){

name=newchar[50];

strcpy(name,a);}voidhotel::display(){

cout<<name<<""<<id<<""<<custnum<<""<<earning<<endl;}intmain(){

floatr,e;

intnum,id1,i=0,k=0;

charn[50];

cin>>r;

while(1)

{

cin>>n;

if(n[0]=='0')

break;

hotelsb(n);

if(k==0)

{

sb.set_num();

sb.set_rent(r);

sb.set_earning();

sb.set_id();

}

else

{

sb.increase_custnum();

sb.increase_id();

sb.increase_earning();

}

sb.display();

i++;

k++;

}

}=======================================================================================================================三维空间的点(继承)时间限制:

1Sec

内存限制:

128MB

提交:

562

解决:

509

[提交][状态][讨论版]题目描述定义一个平面上的点C2D类,它含有一个getDistance()的成员函数,计算该点到原点的距离;从C2D类派生出三维空间的点C3D类,它的getDistance()成员函数计算该点到原点的距离。试分别生成一个C2D和C3D的对象,计算它们到原点的距离。三维空间的两点(x,y,z)和(x1,y1,z1)的距离公式如下:[(x-x1)^2+(y-y1)^2+(z-z1)^2]^(1/2)

输入第一行二维坐标点位置第二行三维坐标点位置1第三行三维坐标点位置2输出第一行二维坐标点位置到原点的距离第二行三维坐标点位置1到原点的距离第三行三维坐标点位置2到原点的距离第四行三维坐标点位置2赋值给二维坐标点变量后,二维坐标点到原点的距离样例输入34345688样例输出57.0710712.806210#include<iostream>#include<cmath>usingnamespacestd;classC2D{protected:

doublex,y;public:

C2D(){}

C2D(double_x,double_y):x(_x),y(_y){}

~C2D(){}

doublegetDistance()

{

doublem,n;

m=pow(x,2)+pow(y,2);

n=sqrt(m);

returnn;

}};//////////////////////////////classC3D:publicC2D{protected:

doublez;public:

C3D(){}

C3D(double_x,double_y,double_z):C2D(_x,_y),z(_z){}

~C3D(){}

doublegetDistance()

{

doublem,n;

m=pow(x,2)+pow(y,2)+pow(z,2);

n=sqrt(m);

returnn;

}};intmain(){

doublex,y,x1,y1,z1,x2,y2,z2;

cin>>x>>y>>x1>>y1>>z1>>x2>>y2>>z2;

C2Dsb1(x,y);

C3Dsb2(x1,y1,z1),sb3(x2,y2,z2);

cout<<sb1.C2D::getDistance()<<endl;

cout<<sb2.C3D::getDistance()<<endl;

cout<<sb3.C3D::getDistance()<<endl;

C2Dsb4(sb3);

cout<<sb4.C2D::getDistance()<<endl;}=======================================================================================================================圆和圆柱体计算(继承)时间限制:

1Sec

内存限制:

128MB

提交:

721

解决:

502

[提交][状态][讨论版]题目描述定义一个CPoint点类,包含数据成员x,y(坐标点)。以CPoint为基类,派生出一个圆形类CCircle,增加数据成员r(半径)和一个计算圆面积的成员函数。再以CCircle做为直接基类,派生出一个圆柱体类CCylinder,增加数据成员h(高)和一个计算体积的成员函数。生成圆和圆柱体对象,调用成员函数计算面积或体积并输出结果。输入输入圆的圆心位置、半径输入圆柱体圆心位置、半径、高输出输出圆的圆心位置半径输出圆面积输出圆柱体的圆心位置半径高输出圆柱体体积样例输入0011123样例输出Circle:(0,0),1Area:3.14Cylinder:(1,1),2,3Volume:37.68#include<iostream>usingnamespacestd;classCPoint{protected:

doublex,y;public:

CPoint(){}

CPoint(double_x,double_y):x(_x),y(_y){}

~CPoint(){}};classCCircle:publicCPoint{protected:

doubler;public:

CCircle(doublexx,doubleyy,double_r):CPoint(xx,yy),r(_r){}

~CCircle(){}

doubleArea()

{

return3.14*r*r;

}

voidprintf()

{

cout<<"Circle:("<<x<<","<<y<<"),"<<r<<endl;

cout<<"Area:"<<Area()<<endl;

}};classCCylinder:publicCCircle{protected:

doubleh;public:

CCylinder(doublex2,doubley2,doubler1,double_h):CCircle(x2,y2,r1),h(_h){}

~CCylinder(){}

doubleVolume()

{

return3.14*r*r*h;

}

voidprintf()

{

cout<<"Cylinder:("<<x<<","<<y<<"),"<<r<<","<<h<<endl;

cout<<"Volume:"<<Volume()<<endl;

}};intmain(){

doublex,y,r,x1,y1,r1,h;

cin>>x>>y>>r>>x1>>y1>>r1>>h;

CCirclesb1(x,y,r);

CCylindersb2(x1,y1,r1,h);

sb1.printf();

sb2.printf();}=======================================================================================================================时钟模拟(继承)时间限制:

1Sec

内存限制:

128MB

提交:

755

解决:

365

[提交][状态][讨论版]题目描述定义计数器类,包含保护数据成员value,公有函数increment计数加1。定义循环计算器继承计数器类,增加私有数据成员:最小值min_value,max_value,重写公有函数increment,使得value在min_value~max_value区间内循环+1。定义时钟类,数据成员是私有循环计数器对象小时hour、分钟minute、秒second,公有函数time(ints)计算当前时间经过s秒之后的时间,即hour,minute,second的新value值。定义时钟类对象,输入当前时间和经过的秒数,调用time函数计算新时间。根据题目要求,增加必要的构造函数、析构函数和其他所需函数。输入第一行测试次数n2行一组,第一行为当前时间(小时分钟秒),第二行为经过的秒数。输出输出n行每行对应每组当前时间和经过秒数后计算得到的新时间(小时:分钟:秒)。样例输入28192020233001801样例输出8:19:400:0:1#include<iostream>usingnamespacestd;classCounter{protected:

intvalue;public:

Counter(intva):value(va){}

intincrement()

{

value++;

if(value==60)

value=0;

returnvalue;

}};classCalculater:publicCounter{private:

intmin_value;

intmax_value;public:

Calculater(intv,intminv,intmaxv):Counter(v),min_value(minv),max_value(maxv){}

intincrement()

{

value++;

if(value==max_value)

value=0;

returnvalue;

}

intGetValue()

{returnvalue;}};classClock{private:

Calculaterhour,minute,second;public:

Clock(int_h,int_m,int_s):hour(_h,0,24),minute(_m,0,60),second(_s,0,60){}

voidtime(intn)

{

inth,m,s,i;

h=hour.GetValue();

m=minute.GetValue();

s=second.GetValue();

for(i=0;i<n;i++)

{

s=second.increment();

if(s==0)

{

m=minute.increment();

if(m==0)

h=hour.increment();

}

}

cout<<h<<":"<<m<<":"<<s<<endl;

}};intmain(){

inthh,mm,ss,nn,t;//

freopen("c:\\123.txt","r",stdin);

cin>>t;

while(t--)

{

cin>>hh>>mm>>ss>>nn;

Clocksb(hh,mm,ss);

sb.time(nn);

}}=======================================================================================================================在职研究生(多重继承)时间限制:

1Sec

内存限制:

128MB

提交:

1332

解决:

470

[提交][状态][讨论版]题目描述1、建立如下的类继承结构:1)

定义一个人员类CPeople,其属性(保护类型)有:姓名、性别、年龄;2)

从CPeople类派生出学生类CStudent,添加属性:学号和入学成绩;3)

从CPeople类再派生出教师类CTeacher,添加属性:职务、部门;4)

从CStudent和CTeacher类共同派生出在职研究生类CGradOnWork,添加属性:研究方向、导师;2、分别定义以上类的构造函数、输出函数print及其他函数(如需要)。3、在主函数中定义各种类的对象,并测试之。输入第一行:姓名性别年龄第二行:学号成绩第三行:职务部门第四行:研究方向导师输出第一行:People:第二行及以后各行:格式见Sample样例输入wang-lim23201210036592.5assistantcomputerrobotzhao-jun样例输出People:Name:wang-liSex:mAge:23Student:Name:wang-liSex:mAge:23No.:2012100365Score:92.5Teacher:Name:wang-liSex:mAge:23Position:assistantDepartment:computerGradOnWork:Name:wang-liSex:mAge:23No.:2012100365Score:92.5Position:assistantDepartment:computerDirection:robotTutor:zhao-jun#include<iostream>#include<string>usingnamespacestd;classCPeople{protected:

stringname,sex;

intsui;public:

CPeople(){}

CPeople(stringn,stringse,intsu):name(n),sex(se),sui(su)

{}

voidprint()

{

cout<<"People:"<<endl;

cout<<"Name:"<<name<<endl;

cout<<"Sex:"<<sex<<endl;

cout<<"Age:"<<sui<<endl;

cout<<endl;

}};////////////////////classCStudent:virtualpublicCPeople{protected:

stringno;

floatgpa;public:

CStudent(stringn,floatg,stringna,stringse,intsu):CPeople(na,se,su),no(n),gpa(g){}

voidprint()

{

cout<<"Student:"<<endl;

cout<<"Name:"<<name<<endl;

cout<<"Sex:"<<sex<<endl;

cout<<"Age:"<<sui<<endl;

cout<<"No.:"<<no<<endl;

cout<<"Score:"<<gpa<<endl;

cout<<endl;

}

};//////////////////classCTeacher:virtualpublicCPeople{protected:

stringzhiwei,bumen;public:

CTeacher(stringzhi,stringbu,stringna,stringse,intsu):CPeople(na,se,su),zhiwei(zhi),bumen(bu)

{}

voidprint()

{

cout<<"Teacher:"<<endl;

cout<<"Name:"<<name<<endl;

cout<<"Sex:"<<sex<<endl;

cout<<"Age:"<<sui<<endl;

cout<<"Position:"<<zhiwei<<endl;

cout<<"Department:"<<bumen<<endl;

cout<<endl;

}};///////////////////classCGradOnWork:publicCStudent,publicCTeacher{protected:

stringfangxiang,daoshi;public:

CGradOnWork(stringn,stringse,intsu,stringna,floatg,stringzhi,stringbu,stringfang,stringdao):CStudent(n,g,na,se,su),CTeacher(zhi,bu,na,se,su),CPeople(na,se,su),fangxiang(fang),daoshi(dao)

{}

voidprint()

{

cout<<"GradOnWork:"<<endl;

cout<<"Name:"<<name<<endl;

cout<<"Sex:"<<sex<<endl;

cout<<"Age:"<<sui<<endl;

cout<<"No.:"<<no<<endl;

cout<<"Score:"<<gpa<<endl;

cout<<"Position:"<<zhiwei<<endl;

cout<<"Department:"<<bumen<<endl;

cout<<"Direction:"<<fangxiang<<endl;

cout<<"Tutor:"<<daoshi<<endl;

}};////////////////////intmain(){

stringcname,csex,cno,czhiwei,cbumen,cfangxiang,cdaoshi;

intcsui;

floatcgpa;

cin>>cname>>csex>>csui>>cno>>cgpa>>czhiwei>>cbumen>>cfangxiang>>cdaoshi;

CGradOnWorksb(cno,csex,csui,cname,cgpa,czhiwei,cbumen,cfangxiang,cdaoshi);

sb.CPeople::print();

sb.CStudent::print();

sb.CTeacher::print();

sb.CGradOnWork::print();

return0;

}=======================================================================================================================交通工具(多重继承)时间限制:

1Sec

内存限制:

128MB

提交:

734

解决:

443

[提交][状态][讨论版]题目描述1、建立如下的类继承结构:1)一个车类CVehicle作为基类,具有max_speed、speed、weight等数据成员,display()等成员函数2)从CVehicle类派生出自行车类CBicycle,添加属性:高度height3)从CVehicle类派生出汽车类CMotocar,添加属性:座位数seat_num4)从CBicycle和CMotocar派生出摩托车类CMotocycle2、分别定义以上类的构造函数、输出函数display及其他函数(如需要)。3、在主函数中定义各种类的对象,并测试之,通过对象调用display函数产生输出。输入第一行:最高速度速度重量第二行:高度第三行:座位数输出第一行:Vehicle:第二行及以后各行:格式见Sample样例输入1006020282样例输出Vehicle:max_speed:100speed:60weight:20Bicycle:max_speed:100speed:60weight:20height:28Motocar:max_speed:100speed:60weight:20seat_num:2Motocycle:max_speed:100speed:60weight:20height:28seat_num:2#include<iostream>#include<string>usingnamespacestd;classCVehicle{protected:

intmax_speed,speed,weight;public:

CVehicle(intms,ints,intw):max_speed(ms),speed(s),weight(w)

{}

~CVehicle(){}

voiddisplay()

{

cout<<"Vehicle:"<<endl;

cout<<"max_speed:"<<max_speed<<endl;

cout<<"speed:"<<speed<<endl;

cout<<"weight:"<<weight<<endl;

cout<<endl;

}};/////////////////////////classCBicycle:virtualpublicCVehicle{protected:

intheight;public:

CBicycle(inth,intms,ints,intw):height(h),CVehicle(ms,s,w)

{}

~CBicycle(){}

voiddisplay()

{

cout<<"Bicycle:"<<endl;

cout<<"max_speed:"<<max_speed<<endl;

cout<<"speed:"<<speed<<endl;

cout<<"weight:"<<weight<<endl;

cout<<"height:"<<height<<endl;

cout<<endl;

}};////////////////////////////classCMotocar:virtualpublicCVehicle{protected:

intseat_num;public:

CMotocar(intsn,intms,ints,intw):seat_num(sn),CVehicle(ms,s,w)

{}

~CMotocar(){}

voiddisplay()

{

cout<<"Motocar:"<<endl;

cout<<"max_speed:"<<max_speed<<endl;

cout<<"speed:"<<speed<<endl;

cout<<"weight:"<<weight<<endl;

cout<<"seat_num:"<<seat_num<<endl;

cout<<endl;

}};////////////////////////////classCMotocycle:publicCBicycle,publicCMotocar{protected:

public:

CMotocycle(inth,intsn,intms,ints,intw):CVehicle(ms,s,w),CBicycle(h,ms,s,w),CMotocar(sn,ms,s,w)

{}

~CMotocycle(){}

voiddisplay()

{

cout<<"Motocycle:"<<endl;

cout<<"max_speed:"<<max_speed<<endl;

cout<<"speed:"<<speed<<endl;

cout<<"weight:"<<weight<<endl;

cout<<"height:"<<height<<endl;

cout<<"seat_num:"<<seat_num<<endl;

}};///////////////////intmain(){

intmax_speed,speed,weight,height,seat_num;

cin>>max_speed>>speed>>weight>>height>>seat_num;

CMotocyclesb(height,seat_num,max_speed,speed,weight);

sb.CVehicle::display();

sb.CBicycle::display();

sb.CMotocar::display();

sb.CMotocycle::display();

return0;}=======================================================================================================================商旅信用卡(多重继承)时间限制:

1Sec

内存限制:

128MB

提交:

1299

解决:

348

[提交][状态][讨论版]题目描述某旅游网站(假设旅程网)和某银行推出旅游综合服务联名卡—旅程信用卡,兼具旅程会员卡和银行信用卡功能。旅程会员卡,有会员卡号(int)、旅程积分(int),通过会员卡下订单,按订单金额累计旅程积分。信用卡,有卡号(int)、姓名(char[10])、额度(int)、账单金额(float)、信用卡积分(int)。请注意数据类型信用卡消费金额m,若超额度,则不做操作;否则,账单金额+m,信用卡积分按消费金额累加。信用卡退款m,账单金额-m,信用卡积分减去退款金额。通过旅程信用卡在旅程网下单,旅程积分和信用卡积分双重积分(即旅程积分和信用卡积分同时增加)。旅程信用卡可以按

旅程积分:信用卡积分=1:2

的比例将信用卡积分兑换为旅程积分。初始假设信用卡积分、旅程积分、账单金额为0。根据上述内容,定义旅程会员卡类、信用卡类,从两者派生出旅程信用卡类并定义三个类的构造函数和其它所需函数。生成旅程信用卡对象,输入卡信息,调用对象成员函数完成旅程网下单、信用卡刷卡、信用卡退款、信用卡积分兑换为旅程积分等操作。输入第一行:输入旅程会员卡号信用卡号姓名额度第二行:测试次数n第三行到第n+2行,每行:操作金额或积分o

m(旅程网下订单,订单金额m)c

m(信用卡消费,消费金额m)q

m(信用卡退款,退款金额m)t

m(积分兑换,m信用卡积分兑换为旅程积分)输出输出所有操作后旅程信用卡的信息:旅程号

旅程积分信用卡号

姓名

账单金额

信用卡积分样例输入10002002lili30004o212.5c300q117.4t200样例输出10003122002lili395.1195#include<iostream>#include<string>usingnamespacestd;//////////////////////////classhuiyuan{protected:

intno1,jifen1;public:

huiyuan(intn):no1(n)

{jifen1=0;}

~huiyuan(){}};////////////////////////////class

温馨提示

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

评论

0/150

提交评论