c机考题目加复习资料Word文档下载推荐.docx
《c机考题目加复习资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c机考题目加复习资料Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。
![c机考题目加复习资料Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/27/b8ff6f85-390f-42f3-9517-ff905efd0dca/b8ff6f85-390f-42f3-9517-ff905efd0dca1.gif)
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<
++i)
{
for(;
card-1;
elems[i]=elems[i+1];
--card;
return;
}
Copy(Set*set)
i<
card;
set->
elems[i]=elems[i];
set->
card=card;
Equal(Set*set)
if(card!
=set->
card)
returnFalse;
++i)
//判断当前集合的某元素是否是set所指集合中的元素
if(!
set->
Member(elems[i]))
returnFalse;
returnTrue;
Print()
cout<
<
"
{"
;
cout<
elems[i]<
"
}\n"
Intersect(Set*set,Set*res)//交集:
*this∩*set->
*res
res->
card=0;
for(intj=0;
j<
++j)
if(elems[i]==set->
elems[j]){
res->
elems[res->
card++]=elems[i];
break;
}
Union(Set*set,Set*res)//并集:
*set∪*this->
Copy(res);
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);
s1="
s1.Print();
s2="
s2.Print();
s2.RmvElem(50);
s2-{50}="
if(s1.Member(20))
cout<
20isins1\n"
s1.Intersect(&
s2,&
s3);
s1intsecs2="
s3.Print();
s1.Union(&
s1unions2="
if(!
s1.Equal(&
s2))
s1!
=s2\n"
2.实现一个大小可变的整型数据元素集合,集合可存储的数据元素个数在对象构造时给定,由构造函数为数据元素分配存储空间,在对象被释放时由析构函数释放存储空间。
P78.3.25
constmaxCard=16;
//集合中元素个数的缺省最大值
//Bool类型定义
classSet
{intsize;
//元素的最大个数
int*elems;
//存储元素的数组
intcard;
//集合中元素的个数
Set(intsz=maxCard)
{card=0;
size=sz;
elems=newint[size];
~Set(){delete[]elems;
if(elems[i]==elem)
if(card<
size)
elems[card++]=elem;
elems[i]=elems[i+1];
if(set->
size<
delete[]set->
elems;
elems=newint[size];
size=size;
elems[i]=elems[i];
card=card;
if(card!
=set->
Member(elems[i]))
elems[i]<
if(card>
0)
elems[card-1];
Intersect(Set*set,Set*res)
if(res->
delete[]res->
res->
card=0;
for(intj=0;
j<
++j)
if(elems[i]==set->
elems[j])
{
card++]=elems[i];
Union(Set*set,Set*res)
size+set->
delete[]res->
elems=newint[size+set->
size];
size=size+set->
size;
AddElem(elems[i])==overflow)
s3.Print();
3.设计一个学生类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<
数学:
math<
英语:
english<
计算机:
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(;
)
请输入学生的学号、姓名、数学成绩、英语成绩、计算机成绩:
(若输入的学号为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<
for(i=0;
count;
i++){
stu[i].print();
全班学生总成绩最高分为"
max<
<
全班学生总平均分为"
aver/3<
请输入要查的学生的学号:
cin>
q;
if(q==stu[i].get_reg_num())
此学生信息为:
stu[i].print();
if(i==count)
查无此人"
return0;
4.定义复数类complex,使用友元函数,完成复数的加法、减法、乘数运算,以及复数的输出。
P95.4.8
classComplex
doublereal;
doubleimage;
Complex(doubler=0,doublei=0)
real=r;
image=i;
friendvoidinputcomplex(Complex&
comp);
friendComplexaddcomplex(Complex&
c1,Complex&
c2);
friendComplexsubcomplex(Complex&
friendComplexmulcomplex(Complex&
friendvoidoutputcomplex(Complex&
voidinputcomplex(Complex&
comp)
cin>
comp.real>
comp.image;
Complexaddcomplex(Complex&
c2)
Complexc;
c.real=c1.real+c2.real;
c.image=c1.image+c2.image;
returnc;
Complexsubcomplex(Complex&
c.real=c1.real-c2.real;
c.image=c1.image-c2.image;
Complexmulcomplex(Complex&
c.real=c1.real*c2.real-c1.image*c2.image;
c.image=c1.real*c2.image+c1.image*c2.real;
voidoutputcomplex(Complex&
cout<
("
comp.real<
"
comp.image<
)"
voidmain()
Complexc1,c2,result;
请输入第一个复数的实部和虚部:
inputcomplex(c1);
请输入第二个复数的实部和虚部:
inputcomplex(c2);
result=addcomplex(c1,c2);
outputcomplex(c1);
+"
outputcomplex(c2);
="
outputcomplex(result);
\n-------------------------"
result=subcomplex(c1,c2);
-"
result=mulcomplex(c1,c2);
*"
5.某单位所有员工根据领取薪金的方式分为如下几类:
时薪工(hourlyworker)、计件工(pieceworker)、经理(manager)、佣金工(commissionworker)。
时薪工按工作的小时支付工资,对于每周超过50小时的加班时间,按照附加50%薪水支付工资。
按生产的每件产品给计件工支付固定工资,假定该工人仅制造一种产品。
经理每周得到固定的工资。
佣金工每周得到少许的固定保底工资,加上该工人在一周内总销售的固定百分比。
试编制一个程序来实现该单位的所有员工类,并加以测试。
P1255.15
string.h>
classemployee//雇员类
protected:
//姓名
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(empid,emp_id);
doublegetsalary()//取得所应得的总薪金数
returnsalary;
classhourlyworker:
publicemployee//时薪工
inthours;
//工作的小时数
doubleperhourpay;
//每小时应得的报酬
hourlyworker()
hours=0;
perhourpay=15.6;
intgethours()//取得某人工作的小时数
returnhours;
voidsethours(inth)//设置某人工作的小时数
hours=h;
doublegetperhourpay()//取得每小时应得的报酬
returnperhourpay;
voidsetperhourpay(doublepay)//设置每小时应得的报酬
perhourpay=pay;
voidcomputepay()//计算工资
if(hours<
=40)
salary=perhourpay*hours;
else
salary=perhourpay*40