您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > c++机考题目加答案
1.实现一个大小固定的整型数据元素集合及其相应操作(元素的添加、删除;判断两个集合是否相等;判断一个数是否为集合中的元素;交集;并集)。P76.列3.24#includeiostream.hconstmaxCard=16;//集合中元素个数的最大值,默认为int型enumErrCode{noErr,overflow};//错误代码enumBool{False,True};//Bool类型定义classSet//定义集合类{intelems[maxCard];//存储元素的数组intcard;//集合中元素的个数public:voidEmptySet(){card=0;}BoolMember(int);//判断一个数是否为集合中的元素ErrCodeAddElem(int);//向集合中添加元素voidRmvElem(int);//删除集合中的元素voidCopy(Set*);//把当前集合拷贝到形参指针指向的集合中BoolEqual(Set*);//判断两个集合是否相等voidPrint();voidIntersect(Set*,Set*);//交集ErrCodeUnion(Set*,Set*);//并集};BoolSet::Member(intelem){for(inti=0;icard;++i)if(elems[i]==elem)returnTrue;returnFalse;}ErrCodeSet::AddElem(intelem){if(Member(elem))returnnoErr;if(cardmaxCard){elems[card++]=elem;returnnoErr;}returnoverflow;}voidSet::RmvElem(intelem){for(inti=0;icard;++i)if(elems[i]==elem){for(;icard-1;++i)elems[i]=elems[i+1];--card;return;}}voidSet::Copy(Set*set){for(inti=0;icard;++i)set-elems[i]=elems[i];set-card=card;}BoolSet::Equal(Set*set){if(card!=set-card)returnFalse;for(inti=0;icard;++i)//判断当前集合的某元素是否是set所指集合中的元素if(!set-Member(elems[i]))returnFalse;returnTrue;}voidSet::Print(){cout{;for(inti=0;icard;++i)coutelems[i];;cout}\n;}voidSet::Intersect(Set*set,Set*res)//交集:*this∩*set-*res{res-card=0;for(inti=0;icard;++i)for(intj=0;jset-card;++j)if(elems[i]==set-elems[j]){res-elems[res-card++]=elems[i];break;}}ErrCodeSet::Union(Set*set,Set*res)//并集:*set∪*this-*res{set-Copy(res);for(inti=0;icard;++i)if(res-AddElem(elems[i])==overflow)returnoverflow;returnnoErr;}//下面是测试用的主程序voidmain(){Sets1,s2,s3;s1.EmptySet();s2.EmptySet();s3.EmptySet();s1.AddElem(10);s1.AddElem(20);s1.AddElem(30);s1.AddElem(40);s2.AddElem(30);s2.AddElem(50);s2.AddElem(10);s2.AddElem(60);couts1=;s1.Print();couts2=;s2.Print();s2.RmvElem(50);couts2-{50}=;s2.Print();if(s1.Member(20))cout20isins1\n;s1.Intersect(&s2,&s3);couts1intsecs2=;s3.Print();s1.Union(&s2,&s3);couts1unions2=;s3.Print();if(!s1.Equal(&s2))couts1!=s2\n;}2.实现一个大小可变的整型数据元素集合,集合可存储的数据元素个数在对象构造时给定,由构造函数为数据元素分配存储空间,在对象被释放时由析构函数释放存储空间。P78.3.25#includeiostream.hconstmaxCard=16;//集合中元素个数的缺省最大值enumErrCode{noErr,overflow};//错误代码enumBool{False,True};//Bool类型定义classSet{intsize;//元素的最大个数int*elems;//存储元素的数组intcard;//集合中元素的个数public:Set(intsz=maxCard){card=0;size=sz;elems=newint[size];}~Set(){delete[]elems;}BoolMember(int);ErrCodeAddElem(int);voidRmvElem(int);voidCopy(Set*);BoolEqual(Set*);voidPrint();voidIntersect(Set*,Set*);ErrCodeUnion(Set*,Set*);};BoolSet::Member(intelem){for(inti=0;icard;++i)if(elems[i]==elem)returnTrue;returnFalse;}ErrCodeSet::AddElem(intelem){if(Member(elem))returnnoErr;if(cardsize){elems[card++]=elem;returnnoErr;}returnoverflow;}voidSet::RmvElem(intelem){for(inti=0;icard;++i)if(elems[i]==elem){for(;icard-1;++i)elems[i]=elems[i+1];--card;return;}}voidSet::Copy(Set*set){if(set-sizesize){delete[]set-elems;set-elems=newint[size];set-size=size;}for(inti=0;icard;++i)set-elems[i]=elems[i];set-card=card;}BoolSet::Equal(Set*set){if(card!=set-card)returnFalse;for(inti=0;icard;++i)if(!set-Member(elems[i]))returnFalse;returnTrue;}voidSet::Print(){cout{;for(inti=0;icard-1;++i)coutelems[i];;if(card0)coutelems[card-1];cout}\n;}voidSet::Intersect(Set*set,Set*res){if(res-sizesize){delete[]res-elems;res-elems=newint[size];res-size=size;}res-card=0;for(inti=0;icard;++i)for(intj=0;jset-card;++j)if(elems[i]==set-elems[j]){res-elems[res-card++]=elems[i];break;}}ErrCodeSet::Union(Set*set,Set*res){if(res-sizesize+set-size){delete[]res-elems;res-elems=newint[size+set-size];res-size=size+set-size;}set-Copy(res);for(inti=0;icard;++i)if(res-AddElem(elems[i])==overflow)returnoverflow;returnnoErr;}voidmain(){Sets1,s2,s3;s1.AddElem(10);s1.AddElem(20);s1.AddElem(30);s1.AddElem(40);s2.AddElem(30);s2.AddElem(50);s2.AddElem(10);s2.AddElem(60);couts1=;s1.Print();couts2=;s2.Print();s2.RmvElem(50);couts2-{50}=;s2.Print();if(s1.Member(20))cout20isins1\n;s1.Intersect(&s2,&s3);couts1intsecs2=;s3.Print();s1.Union(&s2,&s3);couts1unions2=;s3.Print();if(!s1.Equal(&s2))couts1!=s2\n;}3.设计一个学生类student,它具有的私有数据成员是:注册号、姓名、数学成绩、英语成绩、计算机成绩;具有的公有成员函数是:求三门课程总成绩的函数sum();求三门课平均成绩average();显示学生数据信息的函数print();获取学生注册号的函数get_reg_num;设置学生数据信息的函数set_stu_inf()。P81。6编制主函数,说明一个student类对象的数组并进行全班学生信息的输入与设置,而后求出每一个学生的总成绩、平均成绩、全班学生总成绩最高分、全班学生总平均分,并在输入一个注册号后,输出该学生有关的全部数据信息。#includeiostream#includestringusingnamespacestd;classStudent{private:intnum;charname[10];floatmath;floatenglish;floatcomputer;public:voidset_stu_inf(intn,char*ch,floatm,floate,floatc){num=n;strcpy(name,ch);math=m;english=e;computer=c;}floatsum(){return(math+english+computer);}floataverage(){return(math+english+computer)/3;}intget_reg_num(){returnnum;}voidprint(){cout学号:numendl姓名:nameendl数学:mathendl英语:englishendl计算机:computerendl总分:sum()endl平均分:average()endl;}};intmain(){Studentstu[50];inti,q,a,z,x,max=0,aver=0;//i为循环变量,q:学号;a:数学成绩;//z:英语成绩;x:计算机成绩intcount=0;//表示学生人数char*we=newchar[10];//输入学生信息for(;;){cout请输入学生的学号、姓名、数学成绩、英语成绩、
本文标题:c++机考题目加答案
链接地址:https://www.777doc.com/doc-4759300 .html