c++编程题.docx
《c++编程题.docx》由会员分享,可在线阅读,更多相关《c++编程题.docx(12页珍藏版)》请在冰豆网上搜索。
c++编程题
4.1测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。
解:
源程序:
#include
classRectangle
{
public:
Rectangle(inttop,intleft,intbottom,intright);
~Rectangle(){}
intGetTop()const{returnitsTop;}
intGetLeft()const{returnitsLeft;}
intGetBottom()const{returnitsBottom;}
intGetRight()const{returnitsRight;}
voidSetTop(inttop){itsTop=top;}
voidSetLeft(intleft){itsLeft=left;}
voidSetBottom(intbottom){itsBottom=bottom;}
voidSetRight(intright){itsRight=right;}
intGetArea()const;
private:
intitsTop;
intitsLeft;
intitsBottom;
intitsRight;
};
Rectangle:
:
Rectangle(inttop,intleft,intbottom,intright)
{
itsTop=top;
itsLeft=left;
itsBottom=bottom;
itsRight=right;
}
intRectangle:
:
GetArea()const
{
intWidth=itsRight-itsLeft;
intHeight=itsTop-itsBottom;
return(Width*Height);
}
intmain()
{
RectangleMyRectangle(100,20,50,80);
intArea=MyRectangle.GetArea();
cout<<"Area:
"<
return0;
}
程序运行输出:
Area:
3000
UpperLeftXCoordinate:
20
4.2设计一个程序。
设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
#include
using namespace std;
class Box
{public:
float L;
float getBMJ(){return L*L*6;}
float getTJ(){return L*L;}
Box(float in){L=in;}
};
void main()
{
Box r(10);
cout<<"边长:
10\n表面积:
"<"< }
4.3设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。
小车类car是它的派生类,其中包含载人数passenger_load。
每个类都有相关数据的输出方法。
在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置并显示。
#include
#include
classvehicle //汽车类,包含车轮数和车重
{
public:
vehicle(int,float);
intget_wheels();
floatget_weight();
voidshow();
protected:
intwheels; //车轮数
floatweight; //车重量,单位吨
};
classcar:
privatevehicle //小车类是汽车类的私有派生类,包含载客数
{
public:
car(intwheels,floatweight,intpassengers);
intget_passengers();
voidshow();
private:
intpassenger_load; //额定载客数
};
classtruck:
privatevehicle //卡车类是汽车类的私有派生类,包含载人数和载重量
{
public:
truck(intwheels,floatweight,intpassengers,floatmax_load);
intget_passengers();
voidshow();
private:
intpassenger_load; //额定载人数
floatpayload; //额定载重量,单位吨
};
vehicle:
:
vehicle(intwl,floatwt)
{
wheels=wl;
weight=wt;
}
intvehicle:
:
get_wheels()
{
returnwheels;
}
floatvehicle:
:
get_weight()
{
returnweight;
}
voidvehicle:
:
show()
{
cout<<"车轮数:
"<"<}
car:
:
car(intwheels,floatweight,intpassengers):
vehicle(wheels,weight)
{
passenger_load=passengers;
}
intcar:
:
get_passengers()
{
returnpassenger_load;
}
voidcar:
:
show()
{
cout<<"车 型:
小汽车\n";
vehicle:
:
show();
cout<<"载客数:
"<}
truck:
:
truck(intwheels,floatweight,intpassengers,floatmax_load):
vehicle(wheels,weight)
{
passenger_load=passengers;
payload=max_load;
}
inttruck:
:
get_passengers()
{
returnpassenger_load;
}
voidtruck:
:
show()
{
cout<<"车 型:
大卡车\n";
vehicle:
:
show();
cout<<"载人数:
"< cout<<"载重量:
"<}
voidmain()
{
cout<<"私有派生类相关验证程序 MicrosoftVisualC++构建\n"
< carcar(4,3.6,5); //小车类参数分别为“车轮数、车身重以及额定载客数”
trucktru(10,10.0,3,35); //卡车类参数分别为“车轮数、车身重、载人数以及额定载重量”
cout<<"数据验证结果如下:
\n";
car.show();
tru.show();
}
4.4定义一个日期类Date,包含年、月、日三个数据成员,以及一个求第二天日期的成员函数和输出日期的成员函数。
#include
classDate
{
private:
intyear,month,day;
public:
Date(inty,intm,intd)
{
year=y;
month=m;
day=d;
}
voidnextday();
voiddisplay()
{
cout<}
};
voidDate:
:
nextday()
{
inttotaldays[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
day++;
intleap=(year%400==0||year%4==0&&year%100!
=0);
if(day>totaldays[leap][month-1])
{
day=1;month++;
if(month>12)
{
month=1;year++;
}
}
}
voidmain()
{
intd,m,y;
cout<<"请输入年、月、日:
\n";
cin>>y>>m>>d;
Dated1(y,m,d);
cout<<"今天是:
";
d1.display();
d1.nextday();
cout<<"明天是:
";
d1.display();
}
4.5设计一个程序。
定义一个圆类,有数据成员半径radis(半径),计算圆的面积和周长,写出主函数测试你编写的类。
#include
using namespace std;
float pi = 3.14;
class R
{public:
float radis;
float getMJ(){return radis*radis*pi;}
float getZC(){return radis*2*pi;}
R(float in){radis=in;}
};
void main()
{
R r(10);
cout<<"半径:
10\n周长:
"<"< }
4.6编写一个程序。
用名为max的函数模板计算三个参数中的最大值,用整数、字符和浮点数测试所编写的程序。
#include
using namespace std;
template
O Max(O a,O b, O c){return a>b?
a>c?
a:
c:
b>c?
b:
c;}
void main()
{
cout< cout< cout< }
4.7编写一个程序计算“三角形、正方形、圆形”三种图形的面积。
要求:
a)抽象出一个基类base;
b)在其中说明一个虚函数用来求面积;
c)利用派生类定义“三角形、正方形、圆形”;
d)编写主函数并测试。
#include
using namespace std;
class base
{public:
virtual float getMJ(){return H*W;}
float H,W;
};
class R:
public base
{public:
float getMJ(){return H*H*3.14;}
R(float in){H=in;}
};
class A:
public base
{public:
float getMJ(){return (H*W)/2;}
A(float in_H,float in_w){H=in_H;W=in_w;}
};
class S:
public base
{public:
float getMJ(){return H*H;}
S(float in){H=in;}
};
void main()
{
R r(10);
A a(10,5);
S s(10);
cout<<"圆:
边长:
10\n面积:
"< <<"\n三角:
高:
10,底:
5\n面积:
"<边长:
10\n面积:
"<}
4.8编程实现抽象类Employee,派生类Manger和HourlyWorker,Employee有数据成员姓名name和工号ID,Manger有数据成员sal,代表经理的月工资,HourlyWorker有wage和hours,分别代表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的成员函数,以及虚函数来计算职员的工资、输出职员的姓名name和工号ID。
(
#include
#include
using namespace std;
class Employee
{public:
string name;
int id;
virtual int getSal(){return 0;}
Employee():
name("未命名"),id(0){};
~Employee(){cout<<"析构\n";}
void set(string N,int I){id=I; name=N; }
void showSal()
{
cout<<"\n姓名:
"< <<"工号:
"< <<"工资:
"< }
};
class Manger:
public Employee
{
public:
Manger(int S){sal=S;}
int getSal(){return sal;}
int sal;
};
class HourlyWorker:
public Employee
{
public:
HourlyWorker(int W,int H){wage=W;hours=H;}
int getSal(){return wage*hours;}
int wage,hours;
};
void main()
{
HourlyWorker h(10,20);
h.set("小时工A",777);
h.showSal();
Manger m(999);
m.set("经理A",888);
m.showSal();
}
4.9定义一个处理日期的类TDate,它有3个私有数据成员:
Month,Day,Year和若干个公有成员函数,并实现如下要求:
①构造函数重载;②成员函数设置缺省参数;③定义一个友元函数来打印日期;④定义一个非静态成员函数设置日期;⑤可使用不同的构造函数来创建不同的对象。
include
using namespace std;
class TDate
{
public:
TDate():
Year(1900),Month
(1),Day
(1){;}
TDate(int Y, int M=1, int D=1){Month=M;Day=D;Year=Y;}
void set(int Y=1990, int M=1, int D=1){Month=M;Day=D;Year=Y;}
riend void show(TDate& in);
private:
int Month,Day,Year;
};
void show(TDate& in){cout<
void main()
{
TDate t1;
TDate t2(2014);
TDate t3(2015,6,5);
show(t1);
show(t2);
show(t3);
t3.set(1999);
show(t3);
}
4.10回答下面问题。
下面列出了由三个文件main.cpp、MyClass.h和MyClass.cpp组成的一个程序。
文件main.cpp中实现了主函数;文件MyClass.h中定义了类MyClass;文件MyClass.cpp中实现了类MyClass的成员函数。
题中没有给出三个文件的完整实现。
仔细阅读所给的程序,根据题意补充文件MyClass.h和文件MyClass.cpp的内容。
要求:
a.将成员变量定义为私有的;
b.不要增加题中没有用到的类成员。
/********************************************************/
//文件main.cpp
#include
#include"MyClass.h"
voidmain()
{
MyClassobj(3.3);
cout< obj.SetMember(5.6);
cout<}
/***********************************************************************/
//文件MyClass.cpp
#include"MyClass.h"
floatMyClass:
:
GetMember()
{
returnmember;
}
voidMyClass:
:
SetMember(floatmember)
{
MyClass:
:
member=member;
}
//在这里写出构造函数的实现函数
MyClass:
:
MyClass(floatin)
{
Member=in;
}
/***********************************************************************/
//文件MyClass.h
//类MyClass的定义
classMyClass{
//在下面写出类的定义体
Public:
MyClass(floatin)
FloatGetMember();
VoidSetMember(floatmember);
Private:
Floatmember;
};