第一范文网 - 专业文章范例文档资料分享平台

C++实验报告

来源:用户分享 时间:2025/5/19 8:18:37 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

C++程序设计实验报告

姓 名 班 级 实验名称 学 号 指 导 教 师 C++程序设计实验 第3学期 第15周——第18周 评定人签字 评 定 日 期 马毅 开 设 学 期 实 验 时 间 评 定 成 绩 东北大学软件学院

2016年

一、实验目的 实验一:

(1)学习编写简单的C++程序,并掌握C++程序的基本格式与规范。 (2)理解C++程序结构的特点。 (3)掌握函数的定义和调用方法。 (4)练习重载函数的使用。 (5)练习函数模板的使用。 (6)练习使用系统函数。

(7)学习使用VC ++的debug调试功能,使用step into追踪到函数内部。

实验二:

(1)学习类与对象的定义。 (2)掌握类与对象的使用方法。 (3)学习类和对象的声明。

(4)学习具有不同属性的数据成员与成员函数的访问方式。 (5)理解构造函数和析构函数的定义与执行过程。 (6)学会类的聚集使用方法。

实验三:

(1) 掌握运算符重载的方法。

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

实验四:

(1) 熟悉流类库中常用的类及其成员函数的用法。 (2) 学习标准输人输出及格式控制。

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

二、实验内容与实验步骤 实验一:

(1)建立一个控制台应用程序项目baseforml,向其中添加一个源程序文件sum. cpp。按照所给的程序代码输人到计算机中,检查和调试程序。 (2)编写函数float Convert (float TempFer),参数和返回值都为float类型,实现算法C= (F-32)*5/9,在main()函数中实现输入、输出。

(3)分别编写四个同名函数maxl,实现函数重载,在main()函数中测试函数功能。这里要注意overloading的要求是参数个数或参数顺序或数据类型不同才能作为函数重载,返回值类型和参数名称不能作为函数重载标准。

(4)使用函数模板实现求任意类型数的最大值,针对不同的参数个数,编写两个同名函数模板maxl,其参数个数不同,实现函数重载,在main ( )函数中测试函数功能。模板函数要注意声明和实现在一起。

(5)在main ( )函数中提示输人两个整数x、y,使用cin语句得到x、y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。

(6)写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算

Fibonacci级数。公式fib(n) = fib(n-1) + fib(n-2),n>2;fib(1) = fib(2) = 1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。 函数代码如下

int fib(int n) { }

int result; if (n>2)

result = fib(n-1) + fib(n-2); result = 1; else

return result;

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

实验二:

(1)

定义一个CPU类,首先要定义枚举类型CPU- Rank,例如enum CPU_ Rank{Pl=1,P2,P3,P4,P5,P6,P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run, stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。

在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。这里要注意类中的私有成员和被保护成员不能在类的外部通过对象加点运算符来访问。 类的定义如下:

class CPU { public: };

CPU(); ~CPU(); void run(); void stop(); int frequency; float voltage;

enum CPU_RANK {P1=1,P2,P3,P4,P5,P6,P7};

public:

private:

(2)

使用前面的CPU类,RAM类,CDROM类。再定义Computer类:定义私成员芯片(CPU),内存(ram),光驱(cdrom)等等,定义公有成员函数run、stop,可在其中输出提示信息。

在主程序中定义一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。 (3)

定义一个Date类,包括year、month、day私有成员变量。再定义People类,包括number(编号),sex(性别),birthday(出生日期),id(身份证号)。其中“出生日期”定义为一个“日期”类内嵌子对象。在main()函数中构造若干个People类对象,提供若干成员函数实现对人员信息的录入和显示,另外每个类都要求有构造函数和析构函数。

这里在People的中的构造函数我们既声明无参构造函数也声明有参构造函数(同时使用初始化列表来对成员进行初始化),同时也用到了组合类和拷贝构造函数的知识。

实验三:

(1)

1.程序定义Point类,在类中定义整型的私有成员变量_x,_y,定义成员函数Point& operator++ ( ) ; Point operator++ (int );以实现对Point类重载“++”(自增)运算符。

2.定义成员函数Point& operator--() ;Point operator--(int) ;以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。注意后置运算符返回的是引用。 (2)

1.定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle),汽车(motorcar),从bicycle和motorcar派生出摩托车(motorcycle),它们都有Run、Stop等成员函数。

2.在main ( )函数中定义vehicle,bicycle,motorcar,motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数。

这里我们要注意的是在父类中的虚函数声明,这样在用基类的指针或引用来调用子类的对象时所调用的才是子类的方法,虚函数的使用体现了多态性,同时要注意的是尽量吧析构函数也定义为虚函数类型,不过不这样的话运行结果可能会很糟糕,值得一提的是构造函数不能定义为虚函数。 (3)

对实验二中的people类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。实验代码如下:

bool People::operator==(const People &a) { }

void People::operator=(const People &a) {

if (!strcmp(ID,a.ID))

return 1; return 0; else

}

num=a.num; sex=a.sex; strcpy(ID,a.ID); //调用拷贝构造函数

this->birthday=a.birthday;

实验四:

(1)

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

我们直接在属性里设置文件名方便操作。具体操作如下图所示:

代码这里argv[0]为文件目录,argv[1]和argv[2]分别是a.bin和b.bin。 实验代码如下:

void lab6_1(char *p,char *q) {

char c;

filei>>noskipws; int i=1; fileo<

file<<\; //file.write(argv[0],24); file.close();

搜索更多关于: C++实验报告 的文档
C++实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0pttb5yok8862m61dk4v721et5ixox005kb_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top