东北大学软件学院C++实验报告材料Word格式.docx

上传人:b****3 文档编号:14091487 上传时间:2022-10-18 格式:DOCX 页数:23 大小:239.99KB
下载 相关 举报
东北大学软件学院C++实验报告材料Word格式.docx_第1页
第1页 / 共23页
东北大学软件学院C++实验报告材料Word格式.docx_第2页
第2页 / 共23页
东北大学软件学院C++实验报告材料Word格式.docx_第3页
第3页 / 共23页
东北大学软件学院C++实验报告材料Word格式.docx_第4页
第4页 / 共23页
东北大学软件学院C++实验报告材料Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

东北大学软件学院C++实验报告材料Word格式.docx

《东北大学软件学院C++实验报告材料Word格式.docx》由会员分享,可在线阅读,更多相关《东北大学软件学院C++实验报告材料Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

东北大学软件学院C++实验报告材料Word格式.docx

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调试工具观察含有继承关系类的构造函数和析构函数的执行情况。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1