整理c++机考题目加答案Word文档格式.docx
《整理c++机考题目加答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《整理c++机考题目加答案Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
ErrCodeAddElem(int);
//向集合中添加元素
voidRmvElem(int);
//删除集合中的元素
voidCopy(Set*);
//把当前集合拷贝到形参指针指向的集合中
BoolEqual(Set*);
//判断两个集合是否相等
voidPrint();
voidIntersect(Set*,Set*);
//交集
ErrCodeUnion(Set*,Set*);
//并集
};
BoolSet:
:
Member(intelem)
for(inti=0;
i〈card;
++i)
if(elems[i]==elem)
returnTrue;
returnFalse;
ErrCodeSet:
:
AddElem(intelem)
{
if(Member(elem))
returnnoErr;
if(card〈maxCard)
{
elems[card++]=elem;
}
returnoverflow;
}
voidSet:
RmvElem(intelem)
for(inti=0;
i<
card;
++i)
if(elems[i]==elem)
{
for(;
i<
card—1;
elems[i]=elems[i+1];
--card;
return;
}
voidSet:
Copy(Set*set)
for(inti=0;
i〈card;
set->
elems[i]=elems[i];
set—〉card=card;
BoolSet:
Equal(Set*set)
if(card!
=set—>
card)
returnFalse;
++i)
//判断当前集合的某元素是否是set所指集合中的元素
if(!
set—>
Member(elems[i]))
returnFalse;
returnTrue;
Print()
cout〈〈”{”;
cout<
〈elems[i]〈<
"
;
”;
cout〈〈"
}\n”;
Intersect(Set*set,Set*res)//交集:
*this∩*set—>
*res
res—>
card=0;
for(intj=0;
j〈set->
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);
i<
card;
if(res->
AddElem(elems[i])==overflow)
returnoverflow;
returnnoErr;
//下面是测试用的主程序
voidmain()
Sets1,s2,s3;
s1。
EmptySet();
s2.EmptySet();
s3。
AddElem(10);
AddElem(20);
AddElem(30);
AddElem(40);
s2。
s2.AddElem(50);
s2.AddElem(10);
s2.AddElem(60);
cout〈〈”s1=”;
s1.Print();
cout<
<
"
s2=”;
Print();
RmvElem(50);
s2—{50}="
s2.Print();
if(s1。
Member(20))
cout<
〈"
20isins1\n”;
s1.Intersect(&
s2,&
s3);
”s1intsecs2=”;
Print();
Union(&s2,&
s3);
cout〈<
s1unions2=”;
if(!
s1.Equal(&s2))
”s1!
=s2\n"
26.实现一个大小可变的整型数据元素集合,集合可存储的数据元素个数在对象构造时给定,由构造函数为数据元素分配存储空间,在对象被释放时由析构函数释放存储空间。
P78.3。
25
#include<
iostream.h〉
constmaxCard=16;
//集合中元素个数的缺省最大值
enumErrCode{noErr,overflow};
//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*);
voidIntersect(Set*,Set*);
ErrCodeUnion(Set*,Set*);
};
if(elems[i]==elem)
returnTrue;
if(card<
size)
elems[card++]=elem;
}
for(inti=0;
i〈card;
if(elems[i]==elem)
{
i〈card—1;
elems[i]=elems[i+1];
—-card;
return;
}
if(set—〉size<
delete[]set->
elems;
set-〉elems=newint[size];
size=size;
set—>
elems[i]=elems[i];
card=card;
if(card!
=set-〉card)
returnFalse;
if(!
set-〉Member(elems[i]))
returnFalse;
returnTrue;
cout〈〈”{”;
card-1;
〈elems[i]〈<
;
if(card>
0)
elems[card-1];
}\n"
Intersect(Set*set,Set*res)
if(res—〉size〈size)
delete[]res-〉elems;
res—〉elems=newint[size];
res->
res->
card=0;
for(intj=0;
j<
set—〉card;
++j)
if(elems[i]==set->
elems[j])
{
res->
elems[res-〉card++]=elems[i];
}
Union(Set*set,Set*res)
if(res—>
size<
size+set—〉size)
delete[]res-〉elems;
elems=newint[size+set-〉size];
res—>
size=size+set-〉size;
set—〉Copy(res);
if(res—>
AddElem(elems[i])==overflow)
returnoverflow;
Sets1,s2,s3;
s1.AddElem(10);
AddElem(20);
s1.AddElem(40);
AddElem(30);
AddElem(50);
s1=”;
”s2="
s2.Print();
”s2—{50}=”;
cout〈<
s2,&
s1intsecs2=”;
s3.Print();
Union(&s2,&
s1unions2="
s3。
if(!
s1。
Equal(&
s2))
s1!
=s2\n”;
27.设计一个学生类student,它具有的私有数据成员是:
注册号、姓名、数学成绩、英语成绩、计算机成绩;
具有的公有成员函数是:
求三门课程总成绩的函数sum();
求三门课平均成绩average();
显示学生数据信息的函数print();
获取学生注册号的函数get_reg_num;
设置学生数据信息的函数set_stu_inf()。
P81。
6
编制主函数,说明一个student类对象的数组并进行全班学生信息的输入与设置,而后求出每一个学生的总成绩、平均成绩、全班学生总成绩最高分、全班学生总平均分,并在输入一个注册号后,输出该学生有关的全部数据信息。
#include<
iostream>
string>
usingnamespacestd;
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<
〈”学号:
”〈〈num<
〈endl
〈〈”姓名:
〈name〈〈endl
〈<
数学:
math<
<
”英语:
”〈<
english<
endl
〈〈"
计算机:
”〈〈computer<
总分:
”<
〈sum()〈<
〈〈”平均分:
〈<
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〈〈"
请输入学生的学号、姓名、数学成绩、英语成绩、计算机成绩:
(若输入的学号为0则表示退出)"
〈〈endl;
cin>
>
q〉>
we>
a〉>
z〉〉x;
if(q==0)
break;
stu[count++]。
set_stu_inf(q,we,a,z,x);
if(max>
a+z+x);
elsemax=a+z+x;
aver+=(a+z+x);
//输出所有学生信息
学生信息为:
〈endl〈〈endl;
for(i=0;
i〈count;
i++){
stu[i]。
print();
endl;
全班学生总成绩最高分为”<
〈max<
<
〈”全班学生总平均分为”〈<
aver/3〈〈endl<
〈endl;
〈”请输入要查的学生的学号:
”〈〈endl;
cin>
〉q;
i++){
if(q==stu[i]。
get_reg_num())
此学生信息为:
”〈〈endl;
stu[i].print();
if(i==count)
”查无此人"
return0;
28.定义复数类complex,使用友元函数,完成复数的加法、减法、乘数运算,以及复数的输出。
P95。
4.8
#include〈iostream。
classComplex
doublereal;
doubleimage;
Complex(doubler=0,doublei=0)
real=r;
image=i;
friendvoidinputcomplex(Complex&
comp);
friendComplexaddcomplex(Complex&c1,Complex&
c2);
friendComplexsubcomplex(Complex&c1,Complex&
c2);
friendComplexmulcomplex(Complex&
c1,Complex&c2);
friendvoidoutputcomplex(Complex&
voidinputcomplex(Complex&comp)
cin〉>
comp。
real〉>
image;
Complexaddcomplex(Complex&c1,Complex&c2)
Complexc;
c。
real=c1.real+c2.real;
c.image=c1。
image+c2。
returnc;
Complexsubcomplex(Complex&c1,Complex&c2)
Complexc;
c.real=c1.real—c2.real;
image=c1.image-c2.image;
Complexmulcomplex(Complex&c1,Complex&
c2)
real=c1。
real*c2.real-c1.image*c2.image;
image=c1。
real*c2.image+c1.image*c2.real;
returnc;
voidoutputcomplex(Complex&
comp)
cout〈<
”(”〈〈comp。
real<
”,”〈〈comp。
image〈<
”)"
voidmain()
Complexc1,c2,result;
cout〈〈”请输入第一个复数的实部和虚部:
〈endl;
inputcomplex(c1);
”请输入第二个复数的实部和虚部:
〈〈endl;
inputcomplex(c2);
result=addcomplex(c1,c2);
outputcomplex(c1);
+"
outputcomplex(c2);
="
outputcomplex(result);
\n—-———-----—--———-—-——--——"
result=subcomplex(c1,c2);
”-”;
”\n----——-—————--———-———-—--"
result=mulcomplex(c1,c2);
”*"
outputcomplex(c2);
〈”=”;
outputcomplex(result);
29.某单位所有员工根据领取薪金的方式分为如下几类:
时薪工(hourlyworker)、计件工(pieceworker)、经理(manager)、佣金工(commissionworker).时薪工按工作的小时支付工资,对于每周超过50小时的加班时间,按照附加50%薪水支付工资.按生产的每件产品给计件工支付固定工资,假定该工人仅制造一种产品。
经理每周得到固定的工资。
佣金工每周得到少许的固定保底工资,加上该工人在一周内总销售的固定百分比。
试编制一个程序来实现该单位的所有员工类,并加以测试。
P1255.15
#include〈string.h>
classemployee//雇员类
protected:
charname[10];
//姓名
charemp_id[8];
//职工号
doublesalary;
//薪金数
voidsetinfo(char*empname,intempsex,char*empid)//设置雇员的基本信息
strcpy(name,empname);
strcpy(emp_id,empid);
voidgetinfo(char*empname,char*empid)//取得雇员的基本信息
strcpy(empname,name);
strcpy(e