c数据结构上机题及实现代码_第1页
c数据结构上机题及实现代码_第2页
c数据结构上机题及实现代码_第3页
c数据结构上机题及实现代码_第4页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

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

文档简介

1:时钟类与对象的定义2:平均数3:定义学生类4:打卡机5:找出每组数据中的最大值(函数重载)6:长方形类与对象的定义7:圆的面积8:输出类对象9:构造函数的重载10:构造函数重载”:实现自定义的析构函数12:构造函数一定义矩形13:对象数组14:构造函数与拷贝构造函数ーー定义圆柱体类15:构造函数、拷贝构造和析构函数ーー定义学生类16:统计学生人数和成绩17:拷贝构造函数18:三角形面积19:类的静态与友元ーー职エ薪水20:统计学生信息21:学生成绩等级22:类的继承ーー定义学生类及其派生类23:类的继承ーー定义点类及其派生的圆类24:长方形的面积和长方体的体积25:多继承 Time类和Date类派生出Birthtime类26:RoundTable类27:类的继承28:奇葩后代29:ATM30:虚基类ー在职读书的教师类31:类的虚基类ーー客货两用汽车32:类的虚基类ーー主任工程师类33:NBA2K0L34:总价多少35:时钟类36:平均数37:社会保障卡38:运算符重载ーー重载+和ー对复数类对象进行加减运算39:复数类的运算符重载40:三角形面积之和41:运算符重载ーーT重载运算符“>”,用于对给定的两个字符串进行比较42:复数43:计数器44:复整数相加45:运算符重载矩阵相加46:数列中n个整数排序47:运算符重载ーー重载赋值运算符二用于字符串赋值48:字符串类49:图形的面积50:求矩阵之和51:矩阵取反1:时钟类与对象的定义

Tlme/MemoryLimit:1000MS/32768K

Submitted:60Accepted:45定义ー个时钟类,它的数据成员包括:时、分、秒,它的函数成员有设置时间和显示时间,如果设置时钟的时、分、秒超过有效的范围(24小时制),则输出“error!”。编程并测试这个类。Input输入数据有多组,每组占一行,每行中有三个数,分别代表时、分、秒,用空格分隔。Output对于每组输入数据,输出一行,每个数据间用:分隔。SampleInput1250SampleOutput12:5:0#include<iostream>usingnamespacestd;classTIME(private:intH,M,S;public:TIME(inth=0,intm=0,ints=0)(H=h;M=m;S=s;)voidshow()(if(H<0||H>=24||M<0||M>60||S<0||S>60)cout«Merror!n«endl;elsecout«H«',:,,«M«,,:n«S«endl;));intmain()(inth,m,s;while(cin»h»m»s)TIMEone(h,m,s);one.show();}return0;)2:平均数Time/MemoryLimit:1000MS/32768KSubmitted:59Accepted:45ProblemDescription定义一个学生类记录学生的学号、姓名、成绩。要求使用用静态成员变量和静态成员函数求若干个学生的平均成绩。Input输入数据有多行。每行一个浮点数。Output输出数据有多行,每行输出当前分数总和除以当前总人数的结果(保留两位小数);SampleInput1000zhangsan851001lisi741002wangwu921003zhaoliu671004zhaoqian56SampleOutput85.0079.5083.6779.5074.80#include<iostream>#include<iomanip>#include<string>usingnamespacestd;classstudentprivate:stringname;stringnum;doublescore;staticdoubleave;staticdoublesum;staticintcount;public:student(stringnum=,,n,stringname=,,n,doubles=0){this->num=num;this->name=name;score=s;count++;sum=sum+score;ave=sum/count;)staticvoidshow()(cout«setiosflags(ios::fixed);cout«setprecision(2)«ave«endl;}};doublestudent::sum=0.0;doublestudent::ave=0.0;intstudent::count=0;intmain(){doubles;stringnum;stringname;while(cin»num»name»s)(studentone(num,name.s);student::show();)return0;)3:定义学生类Time/MemoryLimit:1000MS/32768KSubmitted:67Accepted:46定义学生类student,类的结构如下classstudent(public:student(int,char*,int,float);//需提不Constructing...student();//需提不Destructing...z,voidprintstuO;private:intid;char*name;intage;floatscore;);将类定义完整,并在主函数中进行测试。Input输入数据有多行。Output对于每个测试数据,输出有多行。SampleInputzhangsan1980lisi2091wangwu1885SampleOutputConstructing...Num:1Name:zhangsanAge:19Score:80Destructing...Constructing...Num:2Name:lisiAge:20Score:91Destructing.•.Constructing...Num:3Name:wangwuAge:18Score:85Destructing...#include<iostream>#include<string.h>usingnamespacestd;classstudent

private:intid;char*name;intage;floatscore;public:student(inti=0,char*na=NULL,inta=0,floats=0.0)(id=i;if(na!=NULL){name=newchar[strlen(na)+l];strcpy(name,na);}elsename=NULL;age=a;score=s;coutく<"Constructing…"vvendl;}~student()(if(name!=NULL)delete[Jname;cout«"Destructing..."«endl;}voidprintstu()(if(name!=NULL)Age:"«age«"cout«"Num:"«id«" Name:"«name«"Age:"«age«"Score:"«score«endl;));intmain()(inti,a;floats;charn[3OJ;while(cin»i»n»a»s)(studentone(i,n,a,s);one.printstu();return0;

4:打卡机Time/MemoryLimit:1000MS/32768KSubmitted:42Accepted:27ProblemDescriptionLPRJ小工厂是刚兴起不久的标准工厂,每天早上八点开始上班,每天工作ハ小时,但是由于LPRJ小工厂近来员エ懈怠于工作,经常迟到,于是经理LP决定用考勤打卡机来记录员エ的上班时间,经理为了整顿ー下员エ的上班态度,决定员エ每迟到半小时将扣除10元的工资,若不迟到员エ每天的工资有80元,计算每位员エ在今天可获得的工资。(要求用类完成)Input输入数据有多组,每组第一行输入ー个整数T,代表接下去有T行员エ测试数据每位员エ的资料包含エ号,姓名,打卡时间(hh:mm);Output输出每位员エ的信息以及当天可获得的工资。SampleInput312078LP07:4512080shik08:0012012junl08:31212078LP07:4512080shik08:00SampleOutput12078LP07:458012080shik08:008012012junl08:316012078LP07:458012080shik08:0080#include<iostream>#include<string>usingnamespacestd;classstu

private:stringnum;stringname;intH,M;public:stu(stringnum=,,H,stringname="”,inthh=O,intmm=O){this->num=num;this->name=name;H=hh;M=mm;)intSS()(intsalary;if(H<8||(H==8&&M==0))salary=80;else(if(M%30!=0)salary=80・(H-8)*2*10-(M/30+1)*10;elsesalary=80-(H-8)*2*10-M/30*l0;)if(salary<=0)salary=0;returnsalary;)voidshow()(cout«this->num«""«this->name«"if(H<10)cout«"0";cout«H«":";if(M<10)cout«"0";cout«M«""«SS()«endl;));intmain()(intT,hh,mm;stringnum;stringname;charcl,c2;while(cin»T)(while(T—)(cin»num»name»hh;cin.get();cin»mm;stuone(num,name,hh,mm);one.show();))return0;1 5:找出每组数据中的最大值(函数重载)Time/MemoryLimit:1000MS/32768K

Submitted:68Accepted:46ProblemDescription定义函数Max实现找出每组测试数据中的最大值,在主函数中进行调用,要求Max函数能够实现分别在2个int型数据、2个字符串(不包括空格,长度不超过50)、3个double型数据中找到最大值。Input输入数据有三组,每组占一行。Output对于每组输入数据,输出一行。SampleInput1255.625.788.8goodmorningSampleOutputmax:2max:88.8max:morning#include<iostream>#include<string.h>usingnamespacestd;voidMax(inta,inib)intmax;if(a>=b)max=a;elsemax=b;cout«"max:H«max«endl;)voidMax(doublex,doubley,doublez)(doublemax;if(x>=y)max=x;elsemax=y;if(max<z)max=z;cout«Hmax:n«max«endl;}voidMax(charn1[50],charn2[50])(charmax3[50];if(strcmp(nl,n2)>0)strcpy(max3,n1);elsestrcpy(max3,n2);cout«,'max:,,«max3«endl;)intmain()(doublex,y,z;inta,b;charnl[50],n2[50];cin»a»b;cin»x»y»z;cin»nl»n2;Max(a,b);Max(x,y,z);Max(nl,n2);return0;

6:长方形类与对象的定义Time/MemoryLimit:1000MS/32768KSubmitted:57Accepted:54ProblemDescription定义ー个类area,它有两个整形的私有数据代表长方形的长和宽,有三个成员函数init、print、areas,init用来给长方形初始化,print用来输出长方形的面积,areas用来计算长方形的面积,要求将类定义完整,并通过main函数定义相应的长方形对象,输出对象的面积。Input输入数据有多组,每组占一行,每行中有两个数,用空格分隔。Output对于每组输入数据,输出一行SampleInput2452SampleOutputio243516#include<iostream>usingnamespacestd;classArea(private:intl,w;public:voidinit(int11jntwl)1=11;w=wl;

)intSS()(ints;s=l*w;returns;)voidprint(););voidArea::print()(cout«SS()«endl;1intmain()(Areaa;int12,w2;while(cin»12»w2)(a.init(12,w2);a.print();)return0;)7:圆的面积Time/MemoryLimit:1000MS/32768KSubmitted:100Accepted:48ProblemDescription设计ー个Circle类,可以求圆的面积。Input输入数据有多组,每组占一行,每行包括ー个实数r,表示圆的半径。Output输出圆的面积。其中PI=3.14。SampleInputSampleOutput3.14#include<iostream>usingnamespacestd;classCircle(private:doubler;public:voidinit(doublerl)(r=rl;)doubleSS()(doubles;s=r*r*3.14;returns;)voidprint(););voidCircle::print()(cout«SS()«endl;1intmain()(Circlex;doubler2;while(cin»r2)(x.init(r2);x.print();}return0;)8:输出类对象Time/MemoryLimit:1000MS/32768K

Submitted:59Accepted:47ProblemDescription

定义ー个类Student,用成员变量name、no、age描述ー个学生的姓名、学号和年龄的信息。现从键盘获取三个不同学生的信息。按输入的顺序将它们存入相应的对象中,并显示它们(一行一条记录)。Input数据之间用空格分割,每行输入ー个记录。共3条记录。Output数据之间用ー个空格分割,每行输出ー个记录。共3条记录。SampleInputzhangsan121lishi219wangwu321SampleOutputzhangsan121lishi219wangwu321#include<iostream>#include<string.h>usingnamespacestd;classStudent(private:charname[20];intno,age;public:voidinit(charn1[20],intnol,intage1)(strcpy(name,nl);no=nol;age=age1;}voidprint()(cout«name«Mu«no«nM«age«endl;));intmain()

Studentx;charname2[20];intn,a,j=O;while(cin»name2»n»a){x.init(name2,n,a);x.print();)return0;}#include<iostream>#include<string.h>usingnamespacestd;classstudent(private:intno,age;char*name;public:student(char♦na=,,,',intn=O,inta=0)(intlen=0;len=strlen(na);if(len!=O){name=newchar[len4-l];strcpy(name,na);)elsename=NULL;no=n;age=a;)~student()(if(strlen(name)!=O)delete[]name;)voidshow()(cout«name«M,,«no«*'n«age«endl;}};intmain()charn[20]=>,n;intnl,al;while(cin»n»n1»al)(students(n,nl,al);s.show();}return0;)9:构造函数的重载Time/MemoryLimit:1000MS/32768K

Submitted:71Accepted:50ProblemDescription为日期类定义4个构造函数,分别是:不带参数,日期为2000/1/1;带一个参数,仅初始化日数据,年数据为2000,月数据为1;带两个参数,初始化月、日数据,年数据为2000;带三个参数,初始化年、月、日;此外日期类还有一个输出成员函数,用来输出年月日。在主函数中进行测试。Input输入数据有3行,第一行只有一个数据,代表日的数值;第二行有两个数据,代表月与日的数值,第三行有三个数据,代表年、月、日的数值。Output输出有4行,每行代表一个日期。SampleInput1io1201211SampleOutput2000/1/12000/10/12012/1/12000/1/1#include<iostream>usingnamespacestd;classDATE(private:intyear,month,day;public:DATE()(year=2OOO;month=l;day=l;)DATE(intda){ year=2000;month=l;day=da;)DATE(intm,intd)(year=2OOO;month=m;day=d;)DATE(inty,intm,intd)(year=y;month=m;day=d;)voidshow()(cout«year«,7,,«month«,7,,«day«endl;));intmain()(inty,m,d;cin»d;DATEdate2(d);date2.show();cin»m»d;DATEdate3(m,d);date3.show();cin»y»m»d;DATEdate4(y,m,d);date4.show();DATEdatel;datel.show();return0;)10:构造函数重载Time/MemoryLimit:1000MS/32768K

Submitted:60Accepted:54ProblemDescription自定义类ー个类Audiengce,类Audiengce内仅有一个整型、ー个字符数组数据成员,请分别定义两个构造函数,ー个仅以整型数据作为行参,另外一个仅以字符指针作为行参。从键盘输入一个字符串和一个整型数据,用这些数据去创建两个对象,使其分别调用两个不同的构造函数。并分别把对象中的数据显示出来。Input任意ー个字符串,空格之后紧跟ー个整数。Output第一个对象中字符串,第二个对象中整数,各占一行。SampleInputguest7SampleOutputguest7#include<iostream>usingnamespacestd;classAudiengce(private:intx;char*str;public:Audiengce(char*q)intlen=O;len=strlen(q);if(len!=O)str=newchar[len+l];strcpy(str,q);)elsestr=NULL;x=0;)Audiengce(inty)(x=y;str=NULL;}-Audiengce()(if(str!=NULL)delete[]str;)voidshowone()(cout«str«endl;)voidshowtwo()(cout«x«endl;));intmain()(intx;charstrflOO];while(cin»str»x)(Audiengceone(str);one.showone();Audiengcetwo(x);two.showtwo();)return0;11:实现自定义的析构函数Time/MemoryLimit:1000MS/32768K

Submitted:66Accepted:48ProblemDescription自定义一个类Person,类中仅有一个字符指针成员变量name,用于保存从键盘接收ー任意长度的字符串。要求根据该串的大小在创建对象时候动态申请一片空间,在析构该类的每个对象之前释放该对象拥有的堆中内存。请编写类析构函数以实现这一意图。(为了观察,请在析构对象时候显示deleted。)Input输入一字符串,不含空格。Output该对象中字符串内容deletedSampleInputabedSampleOutputabeddeleted#include<iostream>usingnamespacestd;classPerson(private:char*name;public:Person(char*str=',M){intlen=0;len=strlen(str);if(len!=0)(name=newchar[len+lJ;strcpy(name,str);elsestr=NULL;)-Person。(if(name!=NULL)delete[]name;cout«ndeletedn«endl;)voidshow。(cout«name«endl;)I;intmain。(charnflOOO];while(cin»n)(Personone(n);one.show。;)return0;12:构造函数.定义矩形Time/MemoryLimit:1000MS/32768KSubmitted:53Accepted:50ProblemDescription定义ー个矩形类,要求定义成员函数实现:构造长方形、计算长方形的面积、周长,假定长和宽分别由两个整型变量high和width表示。Input输入数据有多行,每行有两个数据,代表矩形的长和宽。Output每组输出占一行,为矩形的面积和周长并用空格隔开.SampleInput21020100200SampleOutput62006020000600#include<iostream>usingnamespacestd;classRectangle(private:doublehigh,width;public:Rectangle(doubleh=0,doublew=0)(high=h;width=w;}voidarea();voidperimeter();};voidRectangle::area()(doubles;s=high*width;cout«s«"H;)voidRectangle::perimeter(){double1;l=2*(high+width);cout«l«endl;)intmain()(doubleh,w;while(cin»h»w)(Rectangleone(h,w);one.area();one.perimeter();

)return0;}13:对象数组Time/MemoryLimit:1000MS/32768KSubmitted:77Accepted:50ProblemDescription定义ー个学生类,数据成员包括:学号(整数),姓名,年龄,成绩;成员函数包括设置值和输出显示。在主函数中定义学生数组,表示多个学生,给每个学生设置值,然后输出显示。Input输入数据有多行,第一行为整数n,表示一共有n个学生数据,接下来的n行为学生数据信息,每行一个学生。Output输出有n行,每行代表ー个学生,输出要有相应的提示,每行的信息之间用空格分隔。SampleInput4"wang"1886"li"1872nzhao"1780"guo"1884SampleOutputId:1Name:"wang"Age:18Score:86Id:2Name:"li"Age:18Score:72Id:3Name:"zhao"Age:17Score:80Id:4Name:"guo"Age:18Score:84#include<iostream>#include<string>usingnamespacestd;classstudentprivate:

intnum,age,score;stringname;public:student(intn1=0,stringname=,H',inta1=0,intsl=0)(num=n1;this->name=name;age=al;score=sl;)voidshow()(cout«',Id:,,«num«n Name:,'«this->name«u Age:',«age«nScore:n«score«endl;));intmain()(studentone[100];intno,n,a,s,i;stringname;cin»n;for(i=0;i<n;i++)(cin»no»name»a»s;one[i]=student(no,name,a,s);)for(i=0;i<n;i++)one[i].show();return0;14:构造函数与拷贝构造函数——定义圆柱体

类Time/MemoryLimit:1000MS/32768K

Submitted:57Accepted:44ProblemDescription为圆柱体编写ー个Cylinder类,圆柱体由底面半径和高描述(float型),这个类具有如下的函数:a)得出圆柱体的体积:圆柱的体积=底面积X高b)得出圆柱体的表面积:圆柱的表面积=上下底面面积+侧面积c)能以如下方式创建一个圆柱体对象:Cylindercl:〃构造ー个默认底面半径为10,高为10的圆柱体Cylinderc2(20,100)5〃构造ー个底面半径为20,高为100的圆柱体

Cylinderc3(cl);〃用ー个已有的圆柱体构造ー个新的圆柱体在主函数中进行测试。Input输入数据有多行,每行有两个数据,代表圆柱体的底面半径和高。Output输出有多行,每行有两个数据,代表圆柱体的体积和表面积,最后两行分别表示调用默认构造函数和拷贝构造函数的圆柱体对象的体积和表面积。SampleInput20100457SampleOutput12560015072251.2226.0887.92113.043140125631401256#include<iostream>usingnamespacestd;classCylinder(private:floath,r;public:Cylinder()(r=10;h=10;)Cylinder(floatrl,floathl)(r=rl;h=hl;)floatVV()(floatv;v=3.14*r*r*h;

floatSS()(floats;s=2*3.14*r*h+2*3.14*r*r;returns;}voidshow(){cout«VV()«nn«SS()«endl;));intmain()(Cylinderc2(20,100);Cylindercl;Cylinderc3(cl);floath2,r2;while(cin»r2»h2)(Cylinderc2(r2,h2);c2.show();)c1.show();c3.show();return0;)15:构造函数、拷贝构造和析构函数——定义

学生类Time/MemoryLimit:1000MS/32768K

Submitted:57Accepted:40ProblemDescription定义学生类,该类包含的数据成员有:学生编号,姓名,年龄,成绩;成员函数有:构造函数,拷贝构造函数,析构函数,输出学生信息函数。其中构造函数要输出"Constructing...”提示;拷贝构造函数要输出"CopyConstructing..."提示;析构函数要输出"Destructing..."提示。在主函数中进行测试:主函数中先定义ー个学生对象si,数据从键盘中输入,再定义ー个对象s2,用对象si对s2进行初始化。Input输入数据只有一行,分别代表学生的编号,姓名,年龄,成绩。Output输出两个学生对象的信息,具体如下所示。SampleInput10wang1988SampleOutputConstructing...CopyConstructing...Id:10Name:wangAge:19Score:88Id:10Name:wangAge:19Score:88Destructing...Destructing...#include<iostream>#include<string>usingnamespacestd;classstudent(private:intnum,age,score;char*name;public:student(intn1=0,char*na="",inta1=0,intsl=0)(num=nl;name=newchar[strlen(na)+l];strcpy(name,na);age=al;score=sl;cout«,,Constructing...,,«endl;)student(student&p)(num=p.num;name=newchar[strlen()+l];strcpy(name,);age=p.age;score=p.score;cout«MCopyConstructing...n«endl;)~student()

delete[]name;cout«MDestructing..."«endl;)voidshow(){coutvv"Id:“vvnumvv"Name:'^«name«^^Age:n«age«HScore:"«score«endl;));intmain()(intn,a,s;charna[20];cin»n»na»a»s;studentsl(n,na,a,s);students2(sl);sl.show();s2.show();return0;' 16:统计学生人数和成绩Time/MemoryLimit:1000MS/32768KSubmitted:57Accepted:47ProblemDescription定义ー个Student类记录学生的学号和C++课程的成绩。要求使用静态成员变量和静态成员函数计算全班学生C++课程的总成绩和平均成绩。Input输入每个学生的学号和成绩,每个学生的信息占一行,直到文件结束。Output输出包括两行,第一行全班人数和总成绩,用空格隔开;第二行平均成绩。SampleInput1013010250103901046010570SampleOutput530060#include<iostream>#include<string>usingnamespacestd;classstudent(private:doublescore;stringnum;staticintcount;staticdoublesum;staticdoubleave;public:student(stringnum,doublescore)(this->num=num;this->score=score;count++;sum=sum+score;ave=double(sum/count);)staticvoidshow()(cout«count«Hn«sum«endl;cout«ave«endl;));intstudent::count=0;doublestudent::sum=0.0;doublestudent::ave=0.0;intmain()(doubles;stringnum;while(cin»num»s)(studentstu(num,s);)student::show();17:拷贝构造函数Time/MemoryLimit:1000MS/32768K

Submitted:52Accepted:40ProblemDescription自定义一个类User,类中有两int型成员变量no、grade〇请定义ー个拷贝构造函数,以实现用ー个已经存在的对象去初始化一个新建的对象。为了方便观察,在拷贝构造函数被调用时显示"copyctrcalled”,在普通构造函数被调用时显示"ctrcalled"(":此处纯粹用于表示定界,实际输出时不必显示它,另外相邻的两个单词之间有一个空格)。现从键盘获取2个int数据,先用它们创建ー个对象,然后用该对象再创建出一个新对象。Input两个数据之间用空格分割,回车结束。Output第一次创建对象时显示输出,占一行。第二次调用拷贝构造函数时显示输出,占一行。SampleInput123SampleOutputctrcalledcopyctrcalled#include<iostream>usingnamespacestd;classUser(private:intno,grade;public:User(intn1=0,intgl=0)(no=n1;grade=g1;cout«Hctrcalled"«endl;)User(User&p)(no=p.no;grade=p.grade;cout«ncopyctrcalled"«endl;)};intmain()(intn,g;while(cin»n»g)(Userstul(n,g);Userstu2(stul);)return0;)18:三角形面积Time/MemoryLimit:1000MS/32768KSubmitted:66Accepted:48ProblemDescription设计ー个三角形类Triangle,包含三角形三条边长的私有数据成员。定义ー个友元函数,以实现求两个三角形对象的面积之和。Input输入数据有多组,每组占二行,每行包括3个整数,表示三角形的三条边(保证能构成三角形)。Output对于每组数据,输出占一行。先是第1个三角形的面积,然后是第2个三角形的面积,接下来是两个面积之和。中间用空格隔开。SampleInput4556SampleOutput

6.009.9215.92Hints提示:已知三角形三条边求面积,一般采用海仑公式:S=sqrt(p(p-a)(p-b)(p-c));a,b,c, 三角形边长p=(a+b+c)/2#include<iostream>#include<iomanip>#include<cmath>usingnamespacestd;classTriangle(private:inta,b,c;public:Triangle(intx=O,inty=O,intz=O)(a=x;b=y;c=z;)friendvoidCalculate(constTriangle&pl,constTriangle&p2););voidCalculate(constTriangle&pl,constTriangle&p2)(doublec1=0.0,c2=0.0,sl=0.0,s2=0.0;c1=double((pl.a+pl.b+p1.c)/2.0);c2=double((p2.a+p2.b+p2.c)/2.0);si=double(sqrt(cl*(c1-pl.a)*(c1-p1.b)*(c1-pl.c)));s2=double(sqrt(c2*(c2-p2.a)*(c2-p2.b)*(c2-p2.c)));cout«setiosflags(ios::fixed);cout«setprecision(2)«sl«M,,«s2«H,,«sl+s2«endl;)intmain()(intxl,yl,zl;intx2,y2,z2;while(cin»x1»y1»z1)(cin»x2»y2»z2;rriangleone(xl,yl,zl);Triangletwo(x2,y2,z2);Calculate(one,two);

)return0;1 19:类的静态与友元——职エ薪水Time/MemoryLimit:1000MS/32768KSubmitted:65Accepted:48ProblemDescription设计ー个职エ类,职エ类中包括职エ姓名、薪水和所有职工薪水总和(静态成员)三个数据成员,成员函数包括有构造函数、析构函数、及返回所有职エ薪水总和的静态成员函数,此外还包含有一个友元函数,用来比较两个员エ的薪水,结果返回薪水大的那个员エ。要求将类定义完整并且用主函数进行测试。Input输入包括3个测试数据Output输出包括5行,分别是3个职エ的信息,总的薪水总和,还有薪水最高的那个职ェ的信息。SampleInputZhangsan1200Lisi2400Wangwu1800SampleOutputZhangsan1200Lisi2400Wangwu1800Allsalaryis:5400Thehighestsalaryis:Lisi2400#include<iostream>#include<string.h>usingnamespacestd;classSTAFF(private:intsalary;char*name;staticintsum;public:STAFF(char*n=NULL,ints=0)(if(n!=NULL)(name=newchar[strlen(n)+l];strcpy(name,n);salary=s;sum=sum+salary;)elsename=NULL;)STAFF(STAFF&x){name=newchar[strlen()+1];strcpy(name,);salary=x.salary;}〜STAFF。(if(name!=NULL)delete[]name;)voidshow1()(if(name!=NULL)cout«name«HM«salary«endl;)staticvoidshow2(){cout«HAllsalaryis:n«sum«endl;)friendSTAFFJUDGE(STAFF&pl,STAFF&p2);voidshow3(){if(name!=NULL)cout«"Thehighestsalaryis:"«name«n"«salary«endl;));intSTAFF::sum=0;STAFFJUDGE(STAFF&p1,STAFF&p2)if(p1.salary>=p2.salary)returnpl;elsereturnp2;}intmain()(ints;charn[30];cin»n»s;STAFFone(n,s);cin»n»s;STAFFtwo(n,s);cin»n»s;STAFFthree(n,s);one.showl();two.show1();three.showl();STAFF::show2();STAFFA=JUDGE(one,two);STAFFB=JUDGE(A,three);B.show3();return0;1 20:统计学生信息Time/MemoryLimit:1000MS/32768KSubmitted:78Accepted:49ProblemDescription现如今人人都已经统计完了综测分而轻松,然而LP却接到学委赋予的伟大任务而手忙脚乱:统计班级综测分的情况,好吧,你懂的,他在向你求助。Input输入的数据有多行,每行为ー个同学的姓名,学号及个人综测分,输入至文件尾结束。Output对于每行输入的数据都进行输出,每次输出的数据有2行:第一行为该同学的姓名,学号及综测分;

第二行为当前已统计的同学人数及当前已统计的所有同学的平均综测分。(具体输出详见Sample)SampleInputLinping120000862580Jinkun1200008645100SampleOutputName:LinpingNo:1200008625Score:80Count:1Ave:80Name:JinkunNo:1200008645Score:100Count:2Ave:90#include<iostream>#include<string>usingnamespacestd;classstudent(private:stringname;stringnum;doublescore;staticintcount;staticdoublesum;staticdoubleave;public:student(stringname=,,H,stringnum='M,,doublescore=0.0){this->name=name;this->num=num;this->score=score;count++;sum=sum+this->score;ave=sum/count;)voidshowone()(cout«,,Name:',«this->name<<"No:',«this->num«"Score:M«this->score«endl;)staticvoidshowtwo()cout«MCount:,,«count«,'Ave:H«ave«endl;

);intstudent::count=0;doublestudent::sum=0.0;doublestudent::ave=0.0;intmain()(stringnum;stringname;doubles;while(cin»name»num»s)(studentone(name,num,s);one.showone();student::showtwo();)return0;21:学生成绩等级

Time/MemoryLimit:1000MS/32768K

Submitted:56Accepted:47ProblemDescription有一个学生类student,包括学生姓名、成绩,设计ー个友元函数,输出成绩对应的等级:大于等于90:A;8〇、90:B;7〇〜79:C;6〇〜69:D;小于60:E。Input先输入数据n,表示有n个学生,接下是n个学生信息,包括姓名和成绩。Output对于所有的输入数据,输出学生数据(包括姓名、成绩和等级)。SampleInput5stl67st280st390st456st588

SampleOutputstl67Dst280Bst390Ast456Est588B#include<iostream>#include<string>usingnamespacestd;classstudent(private:stringname;doublescore;public:student(stringname=,n,,doublescore=0.0)(this->name=name;this->score=score;}voidshowone()(cout«this->name<v""vvthis->score〈v"}friendvoidJUDGE(student&););voidJUDGE(student&p)(if(p.score>=90)cout«',A"«endl;elseif(p.score>=80)cout«,,B,'«endl;elseif(p.score>=70)cout«,,C"«endl;elseif(p.score>=60)cout«MDn«endl;elsecout«',E''«endl;}intmain()(stringname;doubles;

intn;cin»n;while(n—)cin»name»s;studentone(name,s);one.showone();JUDGE(one);)return0;22:类的继承——定义学生类及其派生类Time/MemoryLimit:1000MS/32768KSubmitted:85Accepted:49ProblemDescription定义ー个学生类Student,它包括学生名、住址和出生年份等私有数据以及输出函数show(),从它派生出ー个大学生Academician类及ー个小学生类Primary_scholar0在大学生类中增加数据成员大学校名university-name,在小学生奖中所增加的数据成员是两门课的成绩,两个派生类所有有关后输出都由函数show()来实现。Input输入数据有多行,第一行有两个整数n和m,分别代表大学生对象的个数n和小学生对象的个数m,接下来的n行为大学生的数据信息,m行为小学生的数据信息Output输出每个学生的信息,一个学生一行SampleInput3zhangFuzhou1988ZhangzhouNormalUniversityliXiamen1987FuzhouUniversitywangZhangzhou19987589suQuanzhou19979090wuPutian19967887

SampleOutputName:zhang,Address:Fuzhou,Year:1988,University_Name:ZhangzhouNormalUniversityName:li,Address:Xiamen,Year:1987,University_Name:FuzhouUniversityName:wang,Address:Zhangzhou,Year:1998,Score:7589Name:su,Address:Quanzhou,Year:1997,Score:9090Name:wu,Address:Putian,Year:1996,Score:7887#include<iostream>#include<string>usingnamespacestd;classStudent(private:stringname;stringAddress;intage;public:Student(stringname1,stringAddress1,intagel)(name=namel;Address=Address1;age=age1;)voidshow()(cout«,,Name:",«name«,,,Address:',«Address«,,,Year:,'«age«,,,n;));classAcademician:publicStudent(private:stringuniversity_name;public:Academician(string name1,string Address1,int age1,stringuniversity_namel):Student(name1,Address1,age1){university_name=university_name1;)voidshow(){Student::show();cout«,,University_Name:,'«university_name«endl;);classPrimary_scholar:publicStudent(private:doublescorel,score2;public:Primary_scholar(string name1,stringAddressl,int age1,double s1,doubles2):Student(name1,Addressl,age1)(scorel=sl;score2=s2;)voidshow()(Student::show();cout«nScore:H«score1«**n«score2«endl;));intmain()(intn,m;stringnl,Al,ul;intal;doublesl,s2;while(cin»n»m)(while(n—){cin»n1»A1»a1»u1;Academicianone(n1,A1,a1,u1);one.show();)while(m—){cin»n1»Al»al»sl»s2;Primary_scholartwo(n1,A1,a1,s1,s2);two.show();})return0;,23:类的继承——定义点类及其派生的圆类ProblemDescription定义ー个点类point,它带有两个私有数据成员:x,y(整数);还有构造函数(x和y的默认值为〇),显示坐标函数;point类共有派生出圆类circle,circle类具备point类的全部特征,同时自身也有自己的特点:圆有半径成员(可以是小数),求面积成员函数,显示成员函数,该显示函数可以显示圆的圆心坐标,半径,和圆的面积。在主函数中对circle类进行测试。Input输入数据有多行,第一行有一个整数n,表示ー共有n个圆对象,接下来的n行,每行包括ー共圆对象的圆心坐标和它的半径。Output输出有n行,每行为ー个圆对象的圆心坐标、半径和它的面积。SampleInput3002123236.5SampleOutputCentre:(0z0)Radius:2Area:12.56Centre:(1z2)Radius:3Area:28.26Centre:(2,3)Radius:6.5Area:132.665#include<iostream>usingnamespacestd;classpoint(private:intx,y;public:point(intx1=0,intyl=0)(x=xl;y=yl;)voidshow()cout«MCentre:(,,«x«,,,,,«y«,')

));classcircle:publicpoint(private:doubler;public:circle(intxl=0,inty1=0,doublerl=0.0):point(xl,yl)(r=rl;)doubleSS()(return3.14*r*r;)voidshow()(point::show();cout«,,Radius:,'«r«nArea:u«SS()«endl;}};intmain()(intn,xl,yl;doublerl;while(cin»n)(while(n—)(cin»xl»yl»rl;circleone(xl,yl,rl);one.show();))return0;)24:类的继承Time/MemoryLimit:1000MS/32768KSubmitted:67Accepted:49ProblemDescription编写ー个学生和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求设计ー个Person类,包含编号、姓名数据成员及构造和显示成员函数,该类作为学生类和教师类的基类。Input输入包括两行,第一行是学生的相关信息,第二行是教师的相关信息Output输出包括两行,第一行是学生的相关信息,第二行是教师的相关信息SampleInput2009050102MarryComputer(1) 8902017TomyLecturerComputerSampleOutputNum:2009050102Name:MarryClass:Computer(1)Score:89Num:02017Name:Tomyprofession:LecturerDepartment:Computer#include<iostream>#include<string>usingnamespacestd;classperson(private:stringnum;stringname;public:person(stringnum1,stringname1)(num=numl;name=namel;)voidshow()(coutv<"Num:"《num<v"Name:,,«name«"M;});classstudent:publicperson(private:stringno;doublescore;public:student(stringnum1,stringname1,stringno1,doubles1):person(num1,name1)(no=nol;score=sl;)voidshow()(person::show();cout«MClass:H«no«"Score:M«score«endl;}};classteacher:publicperson(private:stringpro;stringdepartment;public:teacher(stringnum1,stringname1,stringp1,stringd1):person(num1,name1)(pro=pl;department=dl;)voidshow()(person::show();cout«',profession:',«pro«HDepartment:H«department«endl;));intmain()(stringnl,nul,nol;stringn2,nu2,p,d;doubles;cin»n1»nu1»no1»s;cin»n2»nu2»p»d;studentone(n1,nul,nol,s);one.show();teachertwo(n2,nu2,p,d);two.show();return0;24:长方形的面积和长方体的体积ProblemDescription先创建一个长方形类,有带参的构造函数,能够计算长方形的面积;在派生出长方体类,有带参的构造函数,能够计算长方体的表面积和体积。Input输入数据有多组,每组包含2行数据,第1行2个实数,表示长方形的长和宽;第2行3个实数,表示长方体的长'宽和高。Output输出长方形的面积和长方体的表面积和体积;具体格式见样例。SampleInput23456SampleOutput6148120#include<iostream>usingnamespacestd;classA(protected:doublel,w;public:A(double11=0.0,doublew1=0.0)(1=11;w=wl;)doubleSS()(returnl*w;)voidshow()cout«SS()«endl;classB:publicA(private:doubleh;public:B(double11=0.0,doublew1=0.0,doublehl=0.0):A(ll,wl)(h=hl;)doubleS()(doubles;s=2*SS()+2*l*h+2*w*h;returns;}doubleVV()(returnh*SS();)voidshow()(cout«S()«nM«VV()«endl;}};intmain(){doubleIl,wl,12,w2,h2;while(cin»ll»w1)(cin»12»w2»h2;Aone(ll,wl);one.show();Btwo(12,w2,h2);two.showQ;)return0;}25:多继承——Time类和Date类派生出Birthtime类ProblemDescription定义ー个Time类,其数据成员包括时、分、秒,成员函数包括构造函数和输出函数;定义一个Date类,其数据成员包括年、月、日,成员函数包括构造函数和输出函数;定义一个派生类,它继承类Time和Date,并且增加一个数据成员childname用于表示小孩的名字;设计主程序显示孩子的姓名和出生时间。Input输入数据有多行,每行包括一个字符串和六个整数,分别表示姓名、出生年月日和出生时分秒。Output输出有多行,对应每个输入输出一行。输出格式见SampleOutput.SampleInputJack201211101010Marry2011618030SampleOutputName:JackBirthday:2012/1/1Time:10:10:10Name:MarryBirthday:2011/6/1Time:8:0:30#include<iostream>#include<string>usingnamespacestd;classTIME(private:inthour,minute,second;public:TIME(inth,intm,ints){hour=h;minute=m;second=s;}voidshow()(cout«"Time:*,«hour«,,:M«minute«,,:,,«second«endl;)};classDATEprivate:intyear,month,day;public:DATE(inty,intml,intd)(year=y;month=m1;day=d;}voidshow(){cout«,,Birthday:,,«year«7',«month«,7,'«day«MM;)};classCHILD:publicTIME,publicDATE(private:stringchildname;public:CHILD(stringn,inty,intml,intd,inth,intm,ints):DATE(y,m1,d),TIME(h,m,s)(childname=n;)voidshow()(cout«',Name:',«childname«HH;DATE::show();TIME::show();));intmain()(stringn;inty,ml,d,h,m,s;while(cin»n»y»m1»d»h»m»s)(CHILDone(n,y,m1,d,h,m,s);one.show();)return0;)26:RoundTable类ProblemDescription定义并描述ー"t*Table类,ー个Circle类和一个RoundTable类,Table类包括长、宽、高基本信息,Circle类包含有半径基本信息。RoundTable是ー个圆形桌子类。要求将相应的类定义完整,并在主函数中定义ー个RoundTable的对象,输出该对象的所有信息。Input输入包括多组测试数据Output每组测试数据输出两行SampleInput123410.5610.6SampleOutputTable*slong,width,heightare:123Table1sradiusis:4Table*slong,width,heightare:10.561Table*sradiusis:0.6Hints思考:圆桌与圆形、桌子之间是继承还是组合的关系?#include<iostream>#include<string>usingnamespacestd;classTable]private:doublel,w,h;public:Table(double11,doublew1,doubleh1)(l=ll;w=wl;h=hl;)voidshow()

coutvv"Table'slong,width,heightare:'^«l«,^M«w«MM«h«endl;classCircle(private:doubler;public:Circle(doublerl)(r=rl;)voidshow()(coutvぐ'Table'sradiusis:"«r«endl;));classRoundTable:publicTable,publicCircle(public:RoundTable(double11,doublew1,doubleh1,doubler1):Table(l1,w1,h1),Circle(r1)()voidshow()(Table::show();Circle::show();)};intmain()(doublell,wl,hl,rl;while(cin»ll»wl»hl»rl)(RoundTableone(ll,wl,hl,rl);one.show();)return0;)#include<iostream>#include<iomanip>usingnamespacestd;classTableprivate:doubleL,W,H;public:Table(double1=0.0,doublew=0.0,doubleh=0.0){L=l;W=w;H=h;}voidshow(){cout«"Table*slong,width,heightare:,,«L«n,,«W«Hn«H

温馨提示

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

评论

0/150

提交评论