c++数据结构上机题及实现代码.doc

上传人:牧羊曲112 文档编号:3957033 上传时间:2023-03-28 格式:DOC 页数:118 大小:539.50KB
返回 下载 相关 举报
c++数据结构上机题及实现代码.doc_第1页
第1页 / 共118页
c++数据结构上机题及实现代码.doc_第2页
第2页 / 共118页
c++数据结构上机题及实现代码.doc_第3页
第3页 / 共118页
c++数据结构上机题及实现代码.doc_第4页
第4页 / 共118页
c++数据结构上机题及实现代码.doc_第5页
第5页 / 共118页
点击查看更多>>
资源描述

《c++数据结构上机题及实现代码.doc》由会员分享,可在线阅读,更多相关《c++数据结构上机题及实现代码.doc(118页珍藏版)》请在三一办公上搜索。

1、1:时钟类与对象的定义 2:平均数3:定义学生类 4:打卡机5:找出每组数据中的最大值(函数重载) 6:长方形类与对象的定义 7:圆的面积8:输出类对象 9:构造函数的重载10:构造函数重载 11:实现自定义的析构函数12:构造函数-定义矩形 13:对象数组14:构造函数与拷贝构造函数定义圆柱体类15:构造函数、拷贝构造和析构函数定义学生类16:统计学生人数和成绩 17:拷贝构造函数18:三角形面积19:类的静态与友元职工薪水20:统计学生信息 21:学生成绩等级22:类的继承定义学生类及其派生类23:类的继承定义点类及其派生的圆类24:长方形的面积和长方体的体积25:多继承Time类和Dat

2、e类派生出Birthtime类26:RoundTable类 27:类的继承28:奇葩后代 29:ATM30:虚基类-在职读书的教师类31:类的虚基类客货两用汽车32:类的虚基类主任工程师类33:NBA2KOL 34:总价多少 35:时钟类36:平均数 37:社会保障卡38:运算符重载重载+和-对复数类对象进行加减运算39:复数类的运算符重载40:三角形面积之和41:运算符重载T重载运算符“”,用于对给定的两个字符串进行比较42:复数43:计数器44:复整数相加45:运算符重载矩阵相加46:数列中n个整数排序47:运算符重载重载赋值运算符=用于字符串赋值48:字符串类 49:图形的面积50:求矩

3、阵之和51:矩阵取反1:时钟类与对象的定义Time/Memory Limit:1000 MS/32768 K Submitted: 60 Accepted: 45 Problem Description定义一个时钟类,它的数据成员包括:时、分、秒,它的函数成员有设置时间和显示时间,如果设置时钟的时、分、秒超过有效的范围(24小时制),则输出“error!”。编程并测试这个类。Input输入数据有多组,每组占一行,每行中有三个数,分别代表时、分、秒,用空格分隔。Output对于每组输入数据,输出一行,每个数据间用:分隔。Sample Input12 5 0Sample Output12:5:0#

4、includeusing namespace std;class TIMEprivate:int H,M,S;public:TIME(int h=0,int m=0,int s=0)H=h;M=m;S=s;void show()if(H=24|M60|S60)couterror!endl;elsecoutH:M:Shms)TIME one(h,m,s);one.show();return 0;2:平均数Time/Memory Limit:1000 MS/32768 K Submitted: 59 Accepted: 45 Problem Description定义一个学生类记录学生的学号、姓名

5、、成绩。要求使用用静态成员变量和静态成员函数求若干个学生的平均成绩。Input输入数据有多行。每行一个浮点数。 Output输出数据有多行,每行输出当前分数总和除以当前总人数的结果(保留两位小数);Sample Input1000 zhangsan 851001 lisi 741002 wangwu 921003 zhaoliu 671004 zhaoqian 56Sample Output85.0079.5083.6779.5074.80#include#include#includeusing namespace std;class studentprivate:string name;s

6、tring num;double score;static double ave;static double sum;static int count;public:student(string num=,string name=,double s=0)this-num=num;this-name=name;score=s;count+;sum=sum+score;ave=sum/count;static void show()coutsetiosflags(ios:fixed);coutsetprecision(2)avenumnames)student one(num,name,s);st

7、udent:show();return 0;3:定义学生类Time/Memory Limit:1000 MS/32768 K Submitted: 67 Accepted: 46 Problem Description定义学生类student,类的结构如下class studentpublic:student(int,char *,int,float);/需提示Constructing.student();/需提示Destructing.void printstu();private:int id;char *name;int age;float score;将类定义完整,并在主函数中进行测试

8、。 Input输入数据有多行。Output对于每个测试数据,输出有多行。Sample Input1 zhangsan 19 802 lisi 20 913 wangwu 18 85Sample OutputConstructing.Num:1 Name:zhangsan Age:19 Score:80Destructing.Constructing.Num:2 Name:lisi Age:20 Score:91Destructing.Constructing.Num:3 Name:wangwu Age:18 Score:85Destructing.#include#includeusing n

9、amespace std;class studentprivate:int id;char *name;int age;float score;public:student(int i=0,char *na=NULL,int a=0,float s=0.0) id=i;if(na!=NULL)name=new charstrlen(na)+1;strcpy(name,na);elsename=NULL;age=a;score=s;coutConstructing.endl;student()if(name!=NULL)delete name;coutDestructing.endl;void

10、printstu()if(name!=NULL)coutNum:id Name:name Age:age Score:scoreinas)student one(i,n,a,s); one.printstu();return 0;4:打卡机Time/Memory Limit:1000 MS/32768 K Submitted: 42 Accepted: 27 Problem DescriptionLPRJ小工厂是刚兴起不久的标准工厂,每天早上八点开始上班,每天工作八小时,但是由于LPRJ小工厂近来员工懈怠于工作,经常迟到,于是经理LP决定用考勤打卡机来记录员工的上班时间,经理为了整顿一下员工的

11、上班态度,决定员工每迟到半小时将扣除10元的工资,若不迟到员工每天的工资有80元,计算每位员工在今天可获得的工资。(要求用类完成)Input输入数据有多组,每组第一行输入一个整数T,代表接下去有T行员工测试数据每位员工的资料包含工号,姓名,打卡时间(hh:mm);Output输出每位员工的信息以及当天可获得的工资。 Sample Input312078 LP 07:4512080 shik 08:0012012 junl 08:31212078 LP 07:4512080 shik 08:00Sample Output12078 LP 07:45 8012080 shik 08:00 8012

12、012 junl 08:31 6012078 LP 07:45 8012080 shik 08:00 80#include#includeusing namespace std;class stuprivate:string num;string name;int H,M;public:stu(string num=,string name=,int hh=0,int mm=0) this-num=num;this-name=name;H=hh;M=mm;int SS()int salary;if(H8|(H=8&M=0)salary=80;elseif(M%30!=0)salary=80-(

13、H-8)*2*10-(M/30+1)*10;elsesalary=80-(H-8)*2*10-M/30*10;if(salary=0)salary=0;return salary;void show()coutnum name ;if(H10)cout0;coutH:;if(M10)cout0;coutM SS()T)while(T-)cinnumnamehh;cin.get();cinmm;stu one(num,name,hh,mm);one.show();return 0;5:找出每组数据中的最大值(函数重载)Time/Memory Limit:1000 MS/32768 K Submi

14、tted: 68 Accepted: 46 Problem Description定义函数Max实现找出每组测试数据中的最大值,在主函数中进行调用,要求Max函数能够实现分别在2个int型数据、2个字符串(不包括空格,长度不超过50)、3个double型数据中找到最大值。Input输入数据有三组,每组占一行。 Output对于每组输入数据,输出一行。 Sample Input1 255.6 25.7 88.8good morningSample Outputmax:2max:88.8max:morning#include#includeusing namespace std;void Max(

15、int a,int b)int max;if(a=b)max=a;elsemax=b;coutmax:max=y)max=x;elsemax=y;if(maxz)max=z;coutmax:max0)strcpy(max3,n1);elsestrcpy(max3,n2);coutmax:max3ab;cinxyz;cinn1n2;Max(a,b);Max(x,y,z);Max(n1,n2);return 0;6:长方形类与对象的定义Time/Memory Limit:1000 MS/32768 K Submitted: 57 Accepted: 54 Problem Description定义

16、一个类area,它有两个整形的私有数据代表长方形的长和宽,有三个成员函数init、print、areas,init用来给长方形初始化,print用来输出长方形的面积,areas用来计算长方形的面积,要求将类定义完整,并通过main函数定义相应的长方形对象,输出对象的面积。Input输入数据有多组,每组占一行,每行中有两个数,用空格分隔。Output对于每组输入数据,输出一行Sample Input5 26 47 58 2Sample Output10243516#includeusing namespace std;class Areaprivate:int l,w;public:void i

17、nit(int l1,int w1)l=l1;w=w1;int SS()int s;s=l*w;return s;void print();void Area:print()coutSS()l2w2)a.init(l2,w2);a.print();return 0;7:圆的面积Time/Memory Limit:1000 MS/32768 K Submitted: 100 Accepted: 48 Problem Description设计一个Circle类,可以求圆的面积。Input输入数据有多组,每组占一行,每行包括一个实数r,表示圆的半径。Output输出圆的面积。 其中PI=3.14。

18、Sample Input1Sample Output3.14#includeusing namespace std;class Circleprivate:double r;public:void init(double r1)r=r1;double SS()double s;s=r*r*3.14;return s;void print();void Circle:print()coutSS()r2)x.init(r2);x.print();return 0;8:输出类对象Time/Memory Limit:1000 MS/32768 K Submitted: 59 Accepted: 47

19、Problem Description定义一个类Student,用成员变量name、no、age描述一个学生的姓名、学号和年龄的信息。现从键盘获取三个不同学生的信息。按输入的顺序将它们存入相应的对象中,并显示它们(一行一条记录)。Input数据之间用空格分割,每行输入一个记录。共3条记录。 Output数据之间用一个空格分割,每行输出一个记录。共3条记录。Sample Inputzhangsan 1 21lishi 2 19wangwu 3 21 Sample Outputzhangsan 1 21lishi 2 19wangwu 3 21#include#includeusing names

20、pace std;class Studentprivate:char name20;int no,age;public:void init(char n120,int no1,int age1)strcpy(name,n1);no=no1;age=age1;void print()coutname no agename2na)x.init(name2,n,a);x.print();return 0;#include#includeusing namespace std;class studentprivate: int no,age; char *name;public:student(cha

21、r *na=,int n=0,int a=0)int len=0;len=strlen(na);if(len!=0)name=new charlen+1;strcpy(name,na);elsename=NULL;no=n;age=a;student()if(strlen(name)!=0)delete name;void show()coutname no agenn1a1)student s(n,n1,a1);s.show();return 0;9:构造函数的重载Time/Memory Limit:1000 MS/32768 K Submitted: 71 Accepted: 50 Pro

22、blem Description为日期类定义4个构造函数,分别是:不带参数,日期为2000/1/1;带一个参数,仅初始化日数据,年数据为2000,月数据为1;带两个参数,初始化月、日数据,年数据为2000;带三个参数,初始化年、月、日;此外日期类还有一个输出成员函数,用来输出年月日。在主函数中进行测试。Input输入数据有3行, 第一行只有一个数据,代表日的数值;第二行有两个数据,代表月与日的数值,第三行有三个数据,代表年、月、日的数值。Output输出有4行,每行代表一个日期。Sample Input110 12012 1 1Sample Output2000/1/12000/10/1201

23、2/1/12000/1/1#includeusing namespace std;class DATEprivate:int year,month,day;public:DATE()year=2000;month=1;day=1;DATE(int da) year=2000; month=1;day=da;DATE(int m,int d)year=2000;month=m;day=d;DATE(int y,int m,int d)year=y;month=m;day=d;void show()coutyear/month/dayd;DATE date2(d);date2.show();cin

24、md;DATE date3(m,d);date3.show();cinymd;DATE date4(y,m,d);date4.show();DATE date1;date1.show();return 0;10:构造函数重载Time/Memory Limit:1000 MS/32768 K Submitted: 60 Accepted: 54 Problem Description自定义类一个类Audiengce,类Audiengce内仅有一个整型、一个字符数组数据成员,请分别定义两个构造函数,一个仅以整型数据作为行参,另外一个仅以字符指针作为行参。从键盘输入一个字符串和一个整型数据,用这些数

25、据去创建两个对象,使其分别调用两个不同的构造函数。并分别把对象中的数据显示出来。Input任意一个字符串,空格之后紧跟一个整数。Output第一个对象中字符串,第二个对象中整数,各占一行。Sample Inputguest 7Sample Outputguest7#includeusing namespace std;class Audiengceprivate:int x;char *str;public:Audiengce(char *q)int len=0;len=strlen(q);if(len!=0)str=new charlen+1;strcpy(str,q);elsestr=NU

26、LL;x=0;Audiengce(int y)x=y;str=NULL;Audiengce()if(str!=NULL)delete str;void showone()coutstrendl;void showtwo()coutxstrx)Audiengce one(str);one.showone();Audiengce two(x);two.showtwo();return 0;11:实现自定义的析构函数Time/Memory Limit:1000 MS/32768 K Submitted: 66 Accepted: 48 Problem Description自定义一个类Person,

27、类中仅有一个字符指针成员变量name,用于保存从键盘接收一任意长度的字符串。要求根据该串的大小在创建对象时候动态申请一片空间,在析构该类的每个对象之前释放该对象拥有的堆中内存。请编写类析构函数以实现这一意图。(为了观察,请在析构对象时候显示deleted。)Input输入一字符串,不含空格。Output该对象中字符串内容deletedSample InputabcdSample Outputabcddeleted#includeusing namespace std;class Personprivate:char *name;public:Person(char *str=) int len

28、=0;len=strlen(str);if(len!=0)name=new charlen+1;strcpy(name,str);elsestr=NULL;Person()if(name!=NULL)delete name;coutdeletedendl;void show()coutnamen)Person one(n);one.show();return 0;12:构造函数-定义矩形Time/Memory Limit:1000 MS/32768 K Submitted: 53 Accepted: 50 Problem Description定义一个矩形类,要求定义成员函数实现:构造长方形、

29、计算长方形的面积、周长,假定长和宽分别由两个整型变量high和width表示。Input输入数据有多行,每行有两个数据,代表矩形的长和宽。Output每组输出占一行,为矩形的面积和周长并用空格隔开. Sample Input1 210 20100 200Sample Output2 6200 6020000 600#includeusing namespace std;class Rectangleprivate:double high,width;public:Rectangle(double h=0,double w=0)high=h;width=w;void area();void pe

30、rimeter();void Rectangle:area()double s;s=high*width;couts ;void Rectangle:perimeter()double l;l=2*(high+width);coutlhw)Rectangle one(h,w);one.area();one.perimeter();return 0;13:对象数组Time/Memory Limit:1000 MS/32768 K Submitted: 77 Accepted: 50 Problem Description定义一个学生类,数据成员包括:学号(整数),姓名,年龄,成绩;成员函数包括设

31、置值和输出显示。在主函数中定义学生数组,表示多个学生,给每个学生设置值,然后输出显示。Input输入数据有多行,第一行为整数n,表示一共有n个学生数据,接下来的n行为学生数据信息,每行一个学生。Output输出有n行,每行代表一个学生,输出要有相应的提示,每行的信息之间用空格分隔。Sample Input41 wang 18 862 li 18 723 zhao 17 804 guo 18 84Sample OutputId:1 Name:wang Age:18 Score:86Id:2 Name:li Age:18 Score:72Id:3 Name:zhao Age:17 Score:80

32、Id:4 Name:guo Age:18 Score:84#include#includeusing namespace std;class studentprivate:int num,age,score;string name;public:student(int n1=0,string name=,int a1=0,int s1=0)num=n1;this-name=name;age=a1;score=s1;void show()coutId:num Name:name Age:age Score:scoren;for(i=0;inonameas;onei=student(no,name

33、,a,s);for(i=0;in;i+)onei.show();return 0;14:构造函数与拷贝构造函数定义圆柱体类Time/Memory Limit:1000 MS/32768 K Submitted: 57 Accepted: 44 Problem Description为圆柱体编写一个Cylinder类,圆柱体由底面半径和高描述(float型),这个类具有如下的函数:a)得出圆柱体的体积:圆柱的体积=底面积高b)得出圆柱体的表面积:圆柱的表面积=上下底面面积+侧面积c)能以如下方式创建一个圆柱体对象:(1) Cylinder c1;/构造一个默认底面半径为10,高为10的圆柱体(2

34、) Cylinder c2(20,100);/构造一个底面半径为20,高为100的圆柱体(3) Cylinder c3(c1);/用一个已有的圆柱体构造一个新的圆柱体在主函数中进行测试。Input输入数据有多行,每行有两个数据,代表圆柱体的底面半径和高。Output输出有多行,每行有两个数据,代表圆柱体的体积和表面积,最后两行分别表示调用默认构造函数和拷贝构造函数的圆柱体对象的体积和表面积。 Sample Input20 1004 52 7Sample Output125600 15072251.2 226.0887.92 113.043140 12563140 1256#includeusi

35、ng namespace std;class Cylinderprivate:float h,r;public:Cylinder()r=10;h=10;Cylinder(float r1,float h1)r=r1;h=h1;float VV()float v;v=3.14*r*r*h;return v;float SS()float s;s=2*3.14*r*h+2*3.14*r*r;return s;void show()coutVV() SS()r2h2)Cylinder c2(r2,h2);c2.show();c1.show();c3.show();return 0;15:构造函数、拷贝构造和析构函数定义学生类Time/Memory Limit:1000 MS/32768 K Submitted:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号