C++重修考试大题填空选择判断没给出含答案.docx
《C++重修考试大题填空选择判断没给出含答案.docx》由会员分享,可在线阅读,更多相关《C++重修考试大题填空选择判断没给出含答案.docx(13页珍藏版)》请在冰豆网上搜索。
![C++重修考试大题填空选择判断没给出含答案.docx](https://file1.bdocx.com/fileroot1/2023-1/3/08ed6511-3197-44ba-89c5-bf6e79bbc10c/08ed6511-3197-44ba-89c5-bf6e79bbc10c1.gif)
C++重修考试大题填空选择判断没给出含答案
1.设计一个类Rect,要求如下:
(1)该类中的私有数据成员length,width存放它的长和宽,并且设置它们的默认值是0。
(2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。
(3)实现求周长函数GetPerimeter()。
#include
usingnamespacestd;
classRect
{
private:
doublelength,width;
public:
Rect(doublel=0,doublew=0):
length(l),width(w){}
voidSet(doublel,doublew)
{
if(length<=0||length>=50||width<=0||width>=50)
throw"数据不在指定范围(0,50)!
";//抛出异常
length=l;
width=w;
}
doubleGetPerimeter(){return2*(length+width);}
};
intmain()
{
try//检查异常
{
Rectobj(1,8);
cout<<"周长:
"<}
catch(char*str)//捕捉异常
{//处理异常
cout<<"异常信息:
"<}
return0;
}
2.定义一个二维座标类Vector2d,二个数据成员为double型x,y为private属性。
定义代二个参数的构造函数和一个Show()函数用以输出x,y的值,另外作为成员函数重载的运算苻”+”的功能是将此类二个对象的数据成员x和y对应相加。
这些成员函数的属性均为public.请用C++编写此程序,并编写测试程序进行测试
#include
usingnamespacestd;
classVector2d
{
doublex,y;
public:
Vector2d(doublea,doubleb):
x(a),y(b){}
voidShow(){cout<Vector2doperator+(Vector2d&obj);
};
Vector2dVector2d:
:
operator+(Vector2d&obj)
{returnVector2d(x+obj.x,y+obj.y);}
intmain()
{
Vector2dd1(3.5,4.5),d2(2.5,5.5),d3(0.0,0.0);
d3=d1+d2;
d3.Show();
return0;
}
3.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
#include
usingnamespacestd;
classBox
{
private:
doublelength;//立方体边长
doublevolume;//体积
doublearea;//表面积
public:
/*
*构造函数
*/
Box(doublel)
{
length=l;
volume=0.0;
area=0.0;
}
/*
*计算体积
*/
doublegetVolume()
{
returnlength*length*length;
}
/*
*计算表面积
*/
doublegetArea()
{
returnlength*length*6;
}
/*
*输出立方体体积和表面积
*/
voidshow()
{
volume=getVolume();
area=getArea();
cout<<"立方体的体积:
"<"<
}
};
/*
*主函数
*/
intmain()
{
intlength=0;
cout<<"请输入立方体的边长:
";
cin>>length;
Boxbox(length);
box.show();
getchar();
return0;
}
4.编程实现抽象类Employee,派生类Manger和HourlyWorker,Employee有数据成员姓名name和工号ID,Manger有数据成员sal,代表经理的月工资,HourlyWorker有wage和hours,分别代表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的成员函数,以及虚函数来计算职员的工资、输出职员的姓名name和工号ID。
#include
#include
usingnamespacestd;
classEmployee
{
public:
Employee(){};
virtualvoidgongzi(){cout<<"no";}
voidxianshi(){cout<<"no";}
stringname;
stringid;
~Employee(){};
};
classManger:
publicEmployee
{
public:
Manger(strings1,strings2){name=s1;id=s2;}
voidgongzi()
{
cout<"<cout<}
voidxianshi()
{
cout<<"经理的姓名为:
"<cout<<"经理的ID为:
"<}
voidset()
{
cout<<"请修改经理的月工资为:
";
cin>>sal;
cout<}
~Manger(){};
private:
intsal;
};
classHourlyWorker:
publicEmployee
{
public:
HourlyWorker(strings1,strings2)
{
name=s1;id=s2;
}
voidgongzi()
{
cout<"<}
voidxianshi()
{
cout<<"钟点工的姓名为:
"<cout<<"钟点工的ID为:
"<}
voidset()
{
cout<<"请输入钟点工每小时的工资数:
";
cin>>wage;
cout<cout<<"请输入钟点工月工作时数:
";
cin>>hours;
cout<}
~HourlyWorker(){};
private:
intwage;
inthours;
};
voidfun(Employee*p)
{
p->gongzi();
}
voidmain()
{
Mangerzhangye("zhangye","200913030135");
HourlyWorkerzjy("zhangjunyu","200913030104");
zhangye.xianshi();
zhangye.set();
fun(&zhangye);
zjy.xianshi();
zjy.set();
fun(&zjy);
}
5.编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。
函数模板声明如下:
template
TypeAbs(TypetVar)
#include
usingnamespacestd;
template
TypeAbs(TypetVar)
{
if(tVar>=0)returntVar;
elsereturn-tVar;
}
intmain()
{
cout<cout<cout<cout<return0;
}
6.定义一个复数类CComplex,定义带有2个参数(其中一个为缺省参数)的构造函数,显示复数值的函数Show(),重载“+”运算符(用成员函数实现),并编写测试程序进行测试。
#include
usingnamespacestd;
classCComplex
{
public:
CComplex(doubledReal,doubledImage=0)
{
m_dReal=dReal;
m_dImage=dImage;
}
voidShow()
{
cout<if(m_dImage>0)
{
cout<<"+"<}
elseif(m_dImage<0)
{
cout<<"-"<<-m_dImage<<"i"<}
}
CComplexoperator+(constCComplex&obj)
{
CComplexobjTemp(m_dReal+obj.m_dReal,m_dImage+obj.m_dImage);
returnobjTemp;
}
private:
doublem_dReal,m_dImage;
};
intmain()
{
CComplexobj1(2,6),obj2(3,8),obj3(0);
obj1.Show();
obj2.Show();
obj3.Show();
obj3=obj1+obj2;
obj3.Show();
return0;
}
7.(1)下面程序的打印结果是_1251121_ .
#incude
intf(int);
intmain()
{ inti;
for(i=0;i<5;i++)
cout< return0;
}
intf(inti)
{ staticintk=1;
for(;i>0;i--)
k+=i;
returnk;
}
(2)在用class定义一个类时,数据成员和成员函数的默认访问权限是_private或私有_.
(3)含有纯虚函数的类称为___抽象类__.
(4)已知intDBL(intn){returnn+n;}和longDBL(longn){returnn +n;}
是一个函数模板的两个实例,则该函数模板的定义是__templateTDBL(Tn){returnn+n;}__.
(5)在下面程序的横线处填上适当的语句,使该程序执行结果为10.
#include
classMyClass
{ public:
MyClass(inta){x=a;}
_intGetNum(){returnx;}或intGetNum()const{returnx;}___//取x值
private
intx;
};
intmain()
{ MyClassmy(10);
cout< return0;
}
8.定义一个抽象类CShape,它有一个纯虚函数GetLength();派生出四边型类CSquare和圆类CCircle,在派生类中重载函数GetLength(),用于求图形的周长,编写测试程序进行测试。
#include
usingnamespacestd;
classCShape
{
public:
virtualdoubleGetLength()const=0;
};
classCSquare:
publicCShape
{
public:
CSquare(doubledWidth,doubledHeight)
{
m_dWidth=dWidth;
m_dHeight=dHeight;
}
doubleGetLength()const
{
return2*(m_dWidth+m_dHeight);
}
private:
doublem_dWidth,m_dHeight;
};
classCCircle:
publicCShape
{
public:
CCircle(doubledRadius)
{
m_dRadius=dRadius;
}
doubleGetLength()const
{
return3.1415926*m_dRadius*m_dRadius;
}
private:
doublem_dRadius;
};
intmain(void)
{
CSquareoSquare(2,3);
cout<CCircleoCircle(10);
cout<return0;
}
9.设计一个类DateInfo,要求其满足下述要求:
(1)要求有一个无参的构造函数,其初始的年、月、日分别为:
2010,8,8。
(2)要求有一个带参数的构造函数,其参数分别对应年、月、日。
(3)要求用一个成员函数实现日期的设置。
(4)要求用一个成员函数实现输出日期。
请用C++编写此程序,并编写测试程序进行测试。
#include
usingnamespacestd;
classDateInfo
{
private:
intyear,month,day;
public:
DateInfo():
year(2010),month(8),day(8){}
DateInfo(inty,intm,intd):
year(y),month(m),day(d){}
voidSet(inty,intm,intd)
{
year=y;
month=m;
day=d;
}
voidShow(){cout<};
intmain()
{
DateInfod1,d2(1988,8,18);
d1.Show();
d2.Show();
d2.Set(1999,9,19);
d2.Show();
return0;
}
10.定义一个复数类Complex,二个数据成员为double型r,i为private属性。
定义带二个参数的构造函数和一个Show()函数用以输出r,i的值,另外作为成员函数重载的运算苻”+”的功能是将此类二个对象的数据成员r和i对应相加。
这些成员函数的属性均为public.请用C++编写此程序,并编写测试程序进行测试。
#include
usingnamespacestd;
classComplex
{
private:
doubler,i;
public:
Complex(doublea,doubleb):
r(a),i(b){}
voidShow(){cout<Complexoperator+(Complexobj)
{returnComplex(r+obj.r,i+obj.i);}
};
intmain()
{
Complexc1(3.5,4.5),c2(2.5,5.5),c3(0.0,0.0);
c3=c1+c2;
c3.Show();
return0;
}