东北大学软件学院C++实验报告材料.docx
- 文档编号:1172537
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:23
- 大小:239.99KB
东北大学软件学院C++实验报告材料.docx
《东北大学软件学院C++实验报告材料.docx》由会员分享,可在线阅读,更多相关《东北大学软件学院C++实验报告材料.docx(23页珍藏版)》请在冰豆网上搜索。
东北大学软件学院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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 软件 学院 C+ 实验 报告 材料