《C++程序设计》实验指导书1.docx

上传人:b****2 文档编号:1943088 上传时间:2022-10-25 格式:DOCX 页数:12 大小:25.08KB
下载 相关 举报
《C++程序设计》实验指导书1.docx_第1页
第1页 / 共12页
《C++程序设计》实验指导书1.docx_第2页
第2页 / 共12页
《C++程序设计》实验指导书1.docx_第3页
第3页 / 共12页
《C++程序设计》实验指导书1.docx_第4页
第4页 / 共12页
《C++程序设计》实验指导书1.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

《C++程序设计》实验指导书1.docx

《《C++程序设计》实验指导书1.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》实验指导书1.docx(12页珍藏版)》请在冰豆网上搜索。

《C++程序设计》实验指导书1.docx

《C++程序设计》实验指导书1

C++程序设计

实验指导书

东北大学软件学院

2013年9月

实验要求

《C++程序设计》课程实验的目的是为了使学生在课堂学习的同时,通过一系列的实验,使学生加深了解和更好地掌握《C++程序设计》课程教学大纲要求的内容。

在《C++程序设计》的课程实验过程中,要求学生做到:

(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。

(2)仔细观察程序调试过程中出现的各种问题,记录主要问题,作出必要说明和分析。

(3)认真书写实验报告。

(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。

(5)实验课程不迟到。

如有事不能出席,所缺实验一般不补。

(6)本实验采用的开发环境为MicrosoftVisualC++6.0,同学在做实验之前要求熟悉该集成开发环境。

实验的验收将分为两个部分。

第一部分是上机操作,包括检查程序运行和即时提问。

第二部分是提交书面的实验报告。

实验1C++程序设计基础(4学时)

1.实验目的

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

2)理解C++程序结构的特点。

3)掌握函数的定义和调用方法。

4)练习重载函数的使用。

5)掌握指针的使用方法。

6)练习通过动态内存分配实现动态数组,并体会指针在其中的作用。

7)熟悉流类库中常用的类及其成员函数的用法。

8)学习标准输人输出及格式控制。

9)学习对文件的应用方法(二进制文件、文本文件)。

10)学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。

2.实验类型

验证型和设计型。

3.实验基本要求

1)输人并运行所给的参考程序1,并将程序中的注释部分也输人计算机,体会和理解程序的基本格式规范。

2)编写重载函数Maxl可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。

3)编写并测试3X3矩阵转置函数,使用数组保存3X3矩阵。

4)使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。

5)编写程序,用二进制方式读写指定的文件a.bin,在每一行前加行号,写入另一个二进制文件b.bin中,从b.bin中读取数据输出到屏幕。

4.实验基本步骤

1)建立一个控制台应用程序项目baseforml,向其中添加一个源程序文件sum.cpp。

按照所给的程序代码输人到计算机中,检查和调试程序,在确认没有发现错误之后,选择[Build]--[Buildsum.exe]编译源程序,再选择[Build]-[Executesum.exe]运行程序,并观察输出结果。

若有问题,则需要重新检查程序。

说明:

在C++程序中如果使用了系统提供的一些功能(如cin和cout),就必须在程序的首部首先声明相关的包含这些功能的头文件(如iostream.h),否则,系统无法找到实现这些功能的代码。

//参考程序1

//sum.cpp

#include

intadd(inta,intb);

intmain()

intx,y,sum;

cout<<"Entertwonumbers:

\n";

cin>>x;

cin>>y;

sum=add(x,y);

cout<<"Thesumis:

"<

return0;

intadd(inta,intb)

intc;

c=a+b;

returnc;

2)分别编写四个同名函数maxl,实现函数重载,在main()函数中测试函数功能。

程序名:

lab1_2.cpp。

3)编写矩阵转置函数,输人参数为3X3整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。

程序名:

lab1_3.cpp。

4)改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。

通过debug观察指针的内容及其所指的对象中的内容。

程序名:

lab1_4.cpp。

5)编写程序lab1_5.cpp,使用voidmain(intargc,char*argv[])函数中的参数传递操作的文件名,定义ofstream的对象对文件进行操作,使用read()和write()成员函数读入数据,使用输出流对象输出数据到文件和屏幕。

6)使用debug中的StepInto追踪到函数内部,观察函数的调用过程。

5.实验思考题

1)重载函数是通过什么来区分?

2)new和delete操作符与C语言中的malloc()和free()函数有何异同点?

3)C++提供的输入输出操作与C语言的输入输出操作的异同点?

4)什么是流?

使用流有那些好处?

5)C++与定义了那些流?

他们分别与什么设备相连?

 

实验2类和对象(4学时)

1.实验目的

1)学习类与对象的定义。

2)掌握类与对象的使用方法。

3)学习类和对象的声明。

4)学习具有不同属性的数据成员与成员函数的访问方式。

5)理解构造函数和析构函数的定义与执行过程。

6)学会类的聚集使用方法。

7)理解静态数据成员和静态成员函数的含义。

8)理解什么是运算符重载,掌握运算符重载的方法。

2.实验类型

设计型。

3.实验基本要求

1)下面是“平面上点”类的定义:

classCPoint

{

private:

intx,y;

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

public:

CPoint(intpx=0,intpy=0);

CPoint(CPoint&);

~CPoint();

intGetX();

intGetY();

voidSetX(int);

voidSetY(int);

voidShowPoint();

};

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

2)下面是“平面上线段”类的定义:

classCLine

{

private:

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

public:

CLine();

CLine(intx1,inty1,intx2,inty2);

CLine(CPointp1,CPointp2);

doubleDistance();//计算该线段长度的成员函数

voidShowLine();

};

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

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

3)以成员函数的方式,重载题目1中的CPoint类的“+”运算符,返回的CPoint类对象的横纵坐标值分别等于原两点的横纵坐标值之和;以全局函数的方式重载CPoint类的“-”运算符,返回的CPoint类对象的横纵坐标值分别等于原两点的横纵坐标值之差。

4)对于题目1中的CPoint类,重载“>>”运算符使得像cin等输入流对象能够写CPoint类对象,再重载“<<”运算符使得像cout等输出流对象能够输出CPoint类对象。

4.实验基本步骤

1)该类是一个基本的类。

在编写该类时,要注意对静态成员nCount的操作,使其能够正确表示程序中点的个数。

编完该类后,要在main()函数中进行测试,分别定义CPoint类的对象、指针、引用,对各成员函数进行调用。

分析对静态成员的调用和一般成员的调用方式有什么不同。

2)要思考如何对类中3个构造函数CLine(),CLine(intx1,inty1,intx2,inty2)和CLine(CPointp1,CPointp2);的编写,分析什么是初始化列表。

完成后要在main()中进行测试。

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

CPointCPoint:

:

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

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

4)重载的“>>”操作符的原型为:

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

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

5.实验思考题

1)类和结构体的区别是什么?

2)类的成员函数与普通的函数有何区别?

3)构造函数和析构函数的作用是什么?

4)类的访问控制权限有何意义?

5)什么是封装?

类是如何进行封装的?

6)类的静态成员函数和普通成员函数有什么不同?

7)根据自己的理解叙述运算符重载的作用?

 

实验3继承与多态(4学时)

1.实验目的

1)学习定义和使用类的继承关系,定义派生类。

2)熟悉不同继承方式下对基类成员的访问控制。

3)学习使用虚函数实现动态多态性。

4)学习利用虚基类解决二义性问题。

2.实验类型

设计型。

3.实验基本要求

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

classCThreePoint:

publicCPoint

{

private:

intz;

public:

CThreePoint();

CThreePoint(int,int,int);

intGetZ();

voidSetZ(intpz);

virtualvoidShowPoint();

};

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

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

分析为什么要把ShowPoint()函数设置为虚函数?

有什么作用?

请在main()函数中做测试。

2)下面是一个“Shape”基类的定义:

enumColorType{White,Black,Red,Green,Blue,Yellow,Magenta,Cyan};

//为图形形状定义Shape基类

class Shape

{

protected:

ColorType color;

public:

Shape(ColorTypec);

virtualvoiddraw();

};

使用Shape类和CPoint类设计一个可在屏幕上作图的简单实例,要求是不必真正在屏幕上实现作图,只是有一个示意即可。

例如:

画一个矩形,不必真正画出矩形,只需输出一句话:

“Thisisarectangle!

”即可。

要求可画线段、矩形和圆形。

要用到继承,虚函数,多态,数据的封装,构造函数的实现等等各种面向对象程序设计的特性。

3)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。

自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。

从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。

观察虚函数的作用。

在继承过程中,注意把vehicle设置为虚基类。

如果不把vehicle设置为虚基类,会有什么问题?

编程试试看。

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

当前位置:首页 > PPT模板 > 其它模板

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

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