整理c++机考题目加答案Word文档格式.docx

上传人:b****4 文档编号:18180122 上传时间:2022-12-13 格式:DOCX 页数:34 大小:25.94KB
下载 相关 举报
整理c++机考题目加答案Word文档格式.docx_第1页
第1页 / 共34页
整理c++机考题目加答案Word文档格式.docx_第2页
第2页 / 共34页
整理c++机考题目加答案Word文档格式.docx_第3页
第3页 / 共34页
整理c++机考题目加答案Word文档格式.docx_第4页
第4页 / 共34页
整理c++机考题目加答案Word文档格式.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

整理c++机考题目加答案Word文档格式.docx

《整理c++机考题目加答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《整理c++机考题目加答案Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。

整理c++机考题目加答案Word文档格式.docx

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

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

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1