东北大学软件学院C++实验报告材料Word格式.docx
- 文档编号:14091487
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:23
- 大小:239.99KB
东北大学软件学院C++实验报告材料Word格式.docx
《东北大学软件学院C++实验报告材料Word格式.docx》由会员分享,可在线阅读,更多相关《东北大学软件学院C++实验报告材料Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
4)学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。
实验二
1)学习并掌握类与对象的定义、使用、声明。
2)学习具有不同属性的数据成员与成员函数的访问方式。
3)理解构造函数和析构函数的定义与执行过程。
4)理解什么是运算符重载,掌握运算符重载的方法
实验三
1)学习定义和使用类的继承关系,定义派生类。
2)熟悉不同继承方式下对基类成员的访问控制。
3)学习使用虚函数实现动态多态性。
4)学习利用虚基类解决二义性问题。
实验四
1)加强对模板相关概念的理解,熟悉模板编程的语法。
2)学习编写简单的函数模板和类模板。
3)理解STL中容器、算法、迭代器的等概念,明确它们之间的关系。
4)掌握STL中Vector容器的使用方法。
2.实验环境
操作系统:
Windows10
3.实验内容与实验过程与分析
项目一:
内容:
使用动态数组完成编写并测试3X3矩阵转置函数,使用数组保存3X3矩阵,使用指针实现函数的功能。
代码:
main()
{
inti,j;
int**p;
p=newint*[3];
cout<
<
"
输入矩阵的元素:
endl;
for(i=0;
i<
3;
i++)
{
p[i]=newint[3];
for(j=0;
j<
j++)
{
cin>
>
p[i][j];
}
}
transpose(p);
cout<
"
转置后的矩阵的为:
<
endl;
for(i=0;
i<
i++)
{
for(j=0;
j<
j++)
cout<
p[i][j]<
;
delete[]p;
}
voidtranspose(int**matrix)
inti,k,j;
j++){
if(j>
i){
k=matrix[j][i];
matrix[j][i]=matrix[i][j];
matrix[i][j]=k;
}
运行结果:
总结:
传递二维数组时候通过指针传递,可以对数组进展修改,方便了许多。
项目二:
编写程序,读写指定的文件,在每一行前加行号后,将结果输出到屏幕
voidwrite()
ofstreamout("
test.txt"
);
if(out.is_open())
out<
第一行\n"
第二行\n"
第三行\n"
第四行\n"
第五行\n"
第六行\n"
out.close();
voidread()
charbuffer[88];
ifstreamin("
if(!
in.is_open())
cout<
Erroropeningfile"
exit
(1);
while(!
in.eof())
in.getline(buffer,80);
buffer<
in.close();
voidmain()
cout<
写文件"
write();
读文件"
read();
system("
pause"
学会了C++如何进展文件读写操作。
以成员函数方式重载的“+〞操作符的原型为:
CPointCPoint:
:
operator+(CPointpt);
以全局函数方式重载的“-〞操作符的原型为:
CPointoperator-(CPointpt1,CPointpt2);
分析以成员函数方式和全局函数方式重载运行符的异同点。
重载的“>
〞操作符的原型为:
istream&
operator>
(istream&
CPoint&
重载的“<
ostream&
(ostream&
CPoint);
思考一下,重载的“>
〞操作符和“<
〞操作符能否作为CPoint类的成员函数来实现。
#include<
iostream.h>
math.h>
classCPoint
private:
intx,y;
staticintnCount;
//nCount用于保存点的个数
public:
CPoint(intpx=0,intpy=0):
x(px),y(py)
}//构造函数,这个地方一定要写函数体内容,不然没有初始化的话会导致运行出错。
//CPoint(CPoint&
~CPoint(){}//这是析构函数
intGETX()const
returnx;
intGETY()const
returny;
voidSetX(inta)
x=a;
voidSetY(intb)
y=b;
voidShowPoint()
cout<
("
x<
"
y<
)"
CPointoperator+(CPoint&
cp2)
returnCPoint(GETX()+cp2.GETX(),GETY()+cp2.GETY());
};
friendCPointoperator-(CPoint&
cp1,CPoint&
cp2);
//声明为友元函数
//输入输出运算符只能用友元函数重载
friendostream&
operator<
(ostream&
os,constCPoint&
c);
friendistream&
operator>
(istream&
is,CPoint&
};
CPointoperator-(CPoint&
returnCPoint(cp1.x-cp2.x,cp1.GETY()-cp2.GETY());
}//不要逗号
ostream&
operator<
c)
重载<
直接输出对象得到:
c.GETX()<
c.GETY()<
returnos;
istream&
is>
c.x>
c.y;
returnis;
classCLine
CPointpt1,pt2;
//pt1和pt2分别代表该线段的起点和终点
CLine(){}//构造函数
CLine(intx1,inty1,intx2,inty2)
:
pt1(x1,y1),pt2(x2,y2)
}//必须以参数列表的形式来写,这样才能在声明的时候即初始化
CLine(CPointp1,CPointp2)
pt1(p1),pt2(p2)
doubleDistance()
inta=pt1.GETX()-pt2.GETX();
intb=pt1.GETY()-pt2.GETY();
doubledistance=sqrt(a*a+b*b);
returndistance;
}//计算该线段长度的成员函数
voidShowLine()
pt1.ShowPoint();
-"
pt2.ShowPoint();
intmain()
CPointcp1(2,4);
CPointcp2(3,6);
CPointcp;
两个点分别是"
cp1.ShowPoint();
cp2.ShowPoint();
cp=cp1+cp2;
//两个点相加
两个点相加的结果是"
cp.ShowPoint();
cp=cp1-cp2;
//两个点相减
两个点相减的结果是"
CLineline1(1,3,5,0);
CLineline2(cp1,cp2);
线段1是"
line1.ShowLine();
线段2是"
line2.ShowLine();
endl<
长度为"
line1.Distance()<
重载>
直接创建一个点,请输入两个值:
CPointLoadPoint;
cin>
LoadPoint;
//重载<
直接输出对象
return0;
通过C++重载运算符的操作,可以让编程者自定义各个操作符的运算规如此,简化了程序的编写逻辑和过程。
使用实验2中的CPoint类,定义“空间中点〞类如下:
classCThreePoint:
publicCPoint
intz;
CThreePoint();
CThreePoint(int,int,int);
intGetZ();
voidSetZ(intpz);
virtualvoidShowPoint();
完成该类中各成员函数的定义。
并利用VC调试工具观察含有继承关系类的构造函数和析构函数的执行情况。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 软件 学院 C+ 实验 报告 材料