面向对象程序设计C++实验指导书docWord格式文档下载.docx
- 文档编号:3043974
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:32
- 大小:179.86KB
面向对象程序设计C++实验指导书docWord格式文档下载.docx
《面向对象程序设计C++实验指导书docWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C++实验指导书docWord格式文档下载.docx(32页珍藏版)》请在冰点文库上搜索。
cout<
amount<
setprecision(0)<
endl
<
setprecision
(1)<
setprecision
(2)<
setprecision(3)<
setprecision(4)<
setiosflags(ios:
:
fixed);
setprecision(8)<
scientific)<
setprecision(6);
//重新设置成原默认设置
3.参考程序:
intnumber=1001;
"
Decimal:
dec<
number<
Hexadecimal:
hex<
Octal:
oct<
return0;
4.参考程序:
setfill('
*'
)
setw
(2)<
21<
setw(3)<
setw(4)<
'
);
//恢复默认设置
5.参考程序:
cout<
right)
setw(5)<
1
2
3<
left)
6.参考程序:
constfloatPI=3.1415926f;
floatr;
floatz,s;
请输入圆的半径r="
;
cin>
>
r;
z=2*PI*r;
s=PI*r*r;
圆的周长为:
"
z<
圆的面积为:
s<
7.参考程序:
iostream>
usingnamespacestd;
intarray[6][4]={{60,80,90,75},
{75,85,65,77},
{80,88,90,98},
{89,100,78,81},
{62,68,69,75},
{85,85,77,91}};
int&
level(intgrade[],intsize,int&
tA,int&
tB);
inttypeA=0,typeB=0;
intstudent=6;
intgradesize=4;
for(inti=0;
i<
student;
i++)//处理所有的学生
level(array[i],gradesize,typeA,typeB)++;
//函数调用作为左值
numberoftypeAis"
typeA<
numberoftypeBis"
typeB<
//system("
PAUSE"
return0;
level(intgrade[],intsize,int&
tB)
intsum=0;
size;
i++)//成绩总分
sum+=grade[i];
sum/=size;
//平均分
if(sum>
=80)
returntA;
//typeAstudent
else
returntB;
//typeBstudent
运行结果:
实验2类和对象
1、实验目的:
掌握类的定义,根据具体需求设计类;
深入理解C++中类的封装性;
会根据类创建各种对象;
掌握对象的各种成员的使用方法。
2、实验内容
定义一个满足如下要求的Date类。
(1)用下面的格式输出日期:
日/月/年;
(2)可运行在日前上加一天操作;
(3)设置日期。
参考代码:
classDate
public:
voidDisplay();
voidAddOneDay();
voidSetDay(inty,intm,intd);
protected:
boolLegal(inty,intm,intd);
boolIsLeapYear(inty);
intyear;
intmonth;
intday;
};
voidDate:
Display()
day<
/"
month<
year<
AddOneDay()
if(Legal(year,month,day+1))
day++;
elseif(Legal(year,month+1,1))
month++,day=1;
elseif(Legal(year+1,1,1))
day=1,month=1,year++;
SetDay(inty,intm,intd)
if(Legal(y,m,d))
day=d,month=m,year=y;
boolDate:
Legal(inty,intm,intd)
if(y>
9999||y<
1||d<
1||m<
1||m>
12)
returnfalse;
intdayLimit=31;
switch(m)case4:
case6:
case9:
case11:
dayLimit--;
if(m==2)dayLimit=IsLeapYear(y)?
29:
28;
return(d>
dayLimit)?
false:
true;
IsLeapYear(inty)
return!
(y%4)&
&
(y%100)||!
(y%400);
Dated;
d.SetDay(2010,2,28);
d.Display();
d.AddOneDay();
system("
运行结果:
实验3继承与派生
理解继承的概念,学习如何使用基类成员,了解基类成员在派生类中的访问控制;
理解类的派生对代码复用的作用。
2、实验内容:
设计一个人员类person和一个日期类date,由人员类派生出学生类Student和教师类professor,学生类和教师类的数据成员birthday为日期类。
string>
classdate
public:
date()
{
cout<
Birthday:
year>
month>
day;
}
voiddisplay()
year<
-"
month<
}
private:
intyear;
intmonth;
intday;
classperson
protected:
char*name;
person();
person:
person()
charnamestr[50];
cout<
Name:
cin>
namestr;
name=newchar[strlen(namestr)+1];
strcpy(name,namestr);
classstudent:
publicperson
intID;
intscore;
datebirthday;
student()
studentID:
ID;
studentscore:
score;
voiddisplay()
{
Thebasicinformation:
ID<
\t"
name<
score<
birthday.display();
classprofessor:
professor()
TeacherID:
No;
schoolteachingmajor:
major;
No<
major<
private:
intNo;
charmajor[10];
studentstu;
stu.display();
professorprof;
prof.display();
实验4多态
掌握函数的概念及应用方法;
理解多态性的运用和作用。
新建一个基类shape类是一个表示形状的抽象类,area()为求图形面积的函数。
请从shape类派出矩形类(rectangle)、三角形类(triangle)、圆类(circles)、并给出具体的求面积函数。
math.h>
classshape
virtualdoublearea()=0;
virtualvoiddisplay()=0;
shape(){}
classrectangle:
publicshape
rectangle(doublea=1,doubleb=1)
x=a;
y=b;
doublearea()
{
returnx*y;
}
voiddisplay()
area()<
doublex;
doubley;
classtriangle:
triangle(doublea=1,doubleb=1,doublec=1)
x=a;
y=b;
z=c;
doublearea()
doublel=(x+y+z)/2;
return(sqrt((l-x)*(l-y)*(l-z)*l));
doublez;
classcircles:
circles(doubleR=1)
r=R;
return3.14*r*r;
private:
doubler;
};
shape*p;
p=newrectangle(2,3);
p->
display();
p=newtriangle(3,4,5);
p=newcircles
(2);
实验5运算符重载
掌握运算符重载的概念及使用方法,掌握特殊运算符的重载要求和方法。
定义整数集合类intSet,实现如下功能:
定义类的构造函数,并根据需要可以定义多个构造函数。
(1)Clear函数:
清空整数集合
(2)IsEmpty():
整数集合是否空集;
(3)IsMemberOf():
判断某个整数是否在整数集合内
(4)Operator+:
增加一个整数到整数集合中
(5)Operator-:
从整数集合中删除一个整数元素;
(6)Operator==:
判断两个整数集合是否相等;
(7)Operator*:
求两个整数结合的交集;
(8)Operator+:
求两个整数集合的交集;
(9)Operator=:
整数集合的对象之间的赋值;
(10)Operator<
输出整数集合中的元素。
提示:
类intSet可以用数组的方式定义整数集合。
例如:
intelement[200]:
保存整数集合数据;
intElementNum:
指示整数集合的最后一个元素位置
注意:
一个整数集合中不允许有相同元素存在,二是集合中的元素没有顺序。
classintSet
intSet();
intSet(inta[],intsize);
voidClear();
boolIsEmpty();
boolIsMemberOf(inta);
booloperator+(inta);
booloperator-(inta);
booloperator==(intSet&
set);
intSetoperator+(intSet&
set);
intSetoperator*(intSet&
voidoperator=(intSet&
friendostream&
operator<
(ostream&
intSet&
intelement[100];
intElementNum;
//初始化整数集合元素
intSet:
intSet()
for(inti=0;
100;
i++)
element[i]=0;
ElementNum=-1;
intSet(inta[],intsize)
if(size>
=100)
ElementNum=99;
ElementNum=size-1;
i<
=ElementNum;
element[i]=a[i];
for(inti=size;
100;
i++)
element[i]=0;
//清空整数集合元素
voidintSet:
Clear()
element[i]=0;
//判断整数集合是否为空
boolintSet:
IsEmpty()
if(ElementNum==-1)
returnfalse;
else
returntrue;
//判断元素是否在整数集合中
IsMemberOf(inta)
for(inti=0;
ElementNum;
if(element[i]==a)
returntrue;
//往集合中增加一个元素
operator+(inta)
if(IsMemberOf(a))
if(ElementNum==99)
ElementNum++;
element[ElementNum]=a;
//从集合中删除一个元素
operator-(inta)
intpos;
if(!
IsMemberOf(a))
if(element[i]==a)
pos=i;
break;
for(inti=pos;
ElementNum;
element[i]=element[i+1];
ElementNum--;
//判断两个整数集合是否相等
operator==(intSet&
set)
boolEqual;
if(ElementNum!
=set.ElementNum)
Equal=false;
for(intj=0;
j<
set.ElementNum;
j++)
if(element[i]==set.element[i])
Equal=true;
}
if(!
Equal)
//求两个集合的交集
intSetintSet:
operator+(intSet&
set)
inta[100],size=0;
for(intj=0;
=set.ElementNum;
if(element[i]==set.element[j])
a[size]=element[i];
size++;
returnintSet(a,size);
//求两个集合的并集
operator*(intSet&
inta[100],size;
a[i]=element[i];
size=ElementNum+1;
if(IsMemberOf(set.element[i]))
continue;
if(size==99)
a[size]=set.element[i];
size++;
returnintSet(a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 C+ 实验 指导书 doc