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

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

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

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

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

东北大学软件学院C++实验报告材料

课程编号:

B080101020

 

《C++程序设计》

实验报告

 

某某

学号

班级

指导教师

实验名称

《C++程序设计》综合实验开发与总结

开设学期

2016-2017学年第一学期

开设时间

第15周——第18周

报告日期

XXXX

评定成绩

评定人

XXX

评定日期

2016-01-12

东北大学软件学院

1.实验目的

实验一

1)学习编写简单的C++程序,并掌握C++程序的根本格式与规X。

2)练习重载函数的使用,掌握指针的使用方法。

3)学习标准输人输出与格式控制。

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<<"输入矩阵的元素:

"<

for(i=0;i<3;i++)

{

p[i]=newint[3];

for(j=0;j<3;j++)

{

cin>>p[i][j];

}

}

transpose(p);

cout<<"转置后的矩阵的为:

"<

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

cout<

cout<

}

delete[]p;

}

voidtranspose(int**matrix)

{

inti,k,j;

for(i=0;i<3;i++)

{

for(j=0;j<3;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";

out<<"第二行\n";

out<<"第三行\n";

out<<"第四行\n";

out<<"第五行\n";

out<<"第六行\n";

}

out.close();

}

voidread()

{

charbuffer[88];

ifstreamin("test.txt");

if(!

in.is_open())

{

cout<<"Erroropeningfile";

exit

(1);

}

while(!

in.eof())

{

in.getline(buffer,80);

cout<

}

in.close();

}

voidmain()

{

cout<<"写文件"<

write();

cout<<"读文件"<

read();

system("pause");

}

运行结果:

总结:

学会了C++如何进展文件读写操作。

实验二

项目一:

内容:

以成员函数方式重载的“+〞操作符的原型为:

CPointCPoint:

:

operator+(CPointpt);以全局函数方式重载的“-〞操作符的原型为:

CPointoperator-(CPointpt1,CPointpt2);分析以成员函数方式和全局函数方式重载运行符的异同点。

重载的“>>〞操作符的原型为:

istream&operator>>(istream&,CPoint&);重载的“<<〞操作符的原型为:

ostream&operator>>(ostream&,CPoint);思考一下,重载的“>>〞操作符和“<<〞操作符能否作为CPoint类的成员函数来实现。

代码:

#include

#include

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<<"("<

}

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&c);

};

CPointoperator-(CPoint&cp1,CPoint&cp2)

{

returnCPoint(cp1.x-cp2.x,cp1.GETY()-cp2.GETY());

}//不要逗号

ostream&operator<<(ostream&os,constCPoint&c)

{

cout<<"重载<<直接输出对象得到:

"<<"("<

returnos;

}

istream&operator>>(istream&is,CPoint&c)

{

is>>c.x>>c.y;

returnis;

}

classCLine

{

private:

CPointpt1,pt2;//pt1和pt2分别代表该线段的起点和终点

public:

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();

cout<<"-";

pt2.ShowPoint();

}

};

intmain()

{

CPointcp1(2,4);

CPointcp2(3,6);

CPointcp;

cout<<"两个点分别是";

cp1.ShowPoint();

cp2.ShowPoint();

cp=cp1+cp2;//两个点相加

cout<

cout<<"两个点相加的结果是";

cp.ShowPoint();

cp=cp1-cp2;//两个点相减

cout<<"两个点相减的结果是";

cp.ShowPoint();

cout<

CLineline1(1,3,5,0);

CLineline2(cp1,cp2);

cout<<"线段1是";

line1.ShowLine();

cout<

cout<<"线段2是";

line2.ShowLine();

cout<

cout<<"重载>>直接创建一个点,请输入两个值:

";

CPointLoadPoint;

cin>>LoadPoint;

cout<

return0;

}

运行结果:

总结:

通过C++重载运算符的操作,可以让编程者自定义各个操作符的运算规如此,简化了程序的编写逻辑和过程。

实验三

项目一:

内容:

使用实验2中的CPoint类,定义“空间中点〞类如下:

classCThreePoint:

publicCPoint

{

private:

intz;

public:

CThreePoint();

CThreePoint(int,int,int);

intGetZ();

voidSetZ(intpz);

virtualvoidShowPoint();

};

完成该类中各成员函数的定义。

并利用VC调试工具观察含有继承关系类的构造函数和析构函数的执行情况。

代码:

#include

#include

classCPoint

{

private:

intx,y;

staticintnCount;//nCount用于保存点的个数

public:

CPoint(intpx=0,intpy=0):

x(px),y(py)

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

当前位置:首页 > 工程科技 > 能源化工

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

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