C++程序设计实验报告

更新时间:2023-12-21 09:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++程序设计实验报告

姓 名 班 级 实验名称 学 号 指 导 教 师 评定人签字 评 定 日 期 开 设 学 期 实 验 时 间 评 定 成 绩

一、实验目的

(1)学习编写简单的C++程序,并掌握C++程序的基本格式与规范,理解C++程序结构的特点。

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

(3)练习重载函数、函数模板、系统函数的使用。

(4)学习使用VC ++的debug调试功能,使用step into追踪到函数内部。 (5)学习类与对象的定义和使用方法以及对象的声明。 (6)学习具有不同属性的数据成员与成员函数的访问方式。 (7)理解构造函数和析构函数的定义与执行过程。 (8)掌握运算符重载的方法。 (9)学习使用虚函数实现动态多态性。

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

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

二、实验内容与实验步骤

实验一:

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

(2)编写一个函数把华氏温度转换为摄氏温度,转换公式为C= (F一32)*5/9。 (3)编写重载函数Maxl可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。

(4)使用重载函数模板重新实现上小题中的函数Maxl。

(5)使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h。 (6)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。

实验二:

(1)定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop,其中rank为枚举类型CPU_ Rank,定义为enum CPU_ Rank(P1 = 1,P2,P3,P4,P5,P6,P7),frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。

(2)定义一个简单的Computer类,有数据成员芯片(CPU),内存(ram),光驱(cdrom)等等,有两个公有成员函数run、stop,CPU为CPU类的一个对象,ram

为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。 (3)设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别),birthday(出生日期),id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数。 实验三:

(1)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“--”(自减)运算符,实现对坐标值的改变。

(2)定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar) 类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。 (3)对实验二中的people类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。 实验四:

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

(2)使用实验二中的人员类数组,输人数据并显示出来,重载“<<”运算符把此数组的内容写人磁盘文件,再重载“>>”运算符显示出文件内容。 (3)设计一个留言的类,实现以下功能:

程序第一次运行时,建立一个名为C\\:msg. ini的文本文件,并把用户输人的信息存人该文件。

以后每次运行时,都先读取该文件的内容并显示给用户,然后由用户输人新的信息,退出时将新的信息存人这个文档。文件的内容,既可以是最新的信息,也可以包括以前所有的信息,请自己选择。

三、实验过程与分析

实验一

实验二

(1)

(2)

(3)实验三

(1)

(2)

(3)实验四

(1)

(2)

(3)

四、实验结果总结

1. Visual C++ 6.0环境下是如何管理项目和文件的?

通过创建项目,进而在该项目中创建一个或多个文件。

2. C++提供的输入输出操作与C语言的输入输出操作的异同点? C语言中scanf和printf不是类型安全且不具有扩展性;而c++是类型安全且有扩展性;C语言中要把读写变量和控制读写信息分开,而c++不需要。 3. C++引入的内联函数与其它函数有何不同?

内联函数应该放在头文件中定义,在函数返回类型前加上inline关键字。 4. 重载函数时通过什么来区分?

根据原方法名、各个参数的数据类型、顺序和数量生成新的方法名,与其他因素无关。

5. 类和结构体的区别是什么?

结构体中的数据默认方式是public的,而类是private的结构体不提供继承机制,类提供继承机制,实现代码复用类可以实现多态,结构体不支持 。 6. 类的成员函数与普通的函数有何区别?

普通函数可以随便调用,并且无法继承和封装,成员函数根据类不同,可以继承和封装。

7. 构造函数和析构函数的作用是什么?

构造函数用于新对象的初始化工作;析构函数用于撤销对象前的清理工作。 8. 类的访问控制权限有何意义?

以实现数据和方法的公有和私密性。 9. 什么是封装?类是如何进行封装的? 封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

10. 多态性是如何实现的?

多态可以通过模板和函数重载来实现

11. 虚析构函数的作用是什么?如何发挥作用? 为了正确析构基类指针指向的派生类对象。 12. 运算符重载和函数重载有何异同点?

从意义上说,都是定义了一种新的成员函数;从作用上说,运算符重载是赋予运算符新的含义。

13. 什么是流?使用流有那些好处?

流时c++标准库类的一个类,包括常用的输入输出流。可以简化程序员对电脑的一些操作。

14. C++为什么要有自己的输入输出系统?

因为c++是一种面向对象的语言,因此将I/O设计成一个类便于用户操作。 15. 随机文件与顺序文件有什么区别?在随机文件中如何确定文件指针的位

置?

顺序文件从头到尾进行检索,随机文件可以直接按照数据偏移量定位。 16. C++与定义了那些流?他们分别与什么设备相连?

输入输出流连接控制台;文件流连接文件;字符串流连接字符串。

通过这段时间c++上机实验,我更加深刻地理解了c++作为一门面向对象编程语言的魅力,也渐渐熟悉了与C语言不同的类、流的相关知识。上机实验是学习程序设计语言必不可少的实践环节,因为需要通过编程的实践来真正掌握它。通过上网和询问等方式,我也解决了不少在实践中的问题。希望在以后的学习中继续完善对这门编程语言的运用!

评价表格: 评价内容 具 体 要 求 分值 得分 平时表现 课程设计过程中,无缺勤现象,态度积极,具有严谨的学习态度和认真、踏实、一丝不苟的科学作风。 能够按照规范提交课程设计要求的所有材料(要求在以“学号-姓名”命名的文件夹中,包含实验报告电子版和实验源代码等),材料完备,格式内容等符合要求。 实验报告格式规范,符合要求;报告内容充实、正确,实验目的归纳合理到位。 能够按实验要求合理设计并开发出程序,功能完整性强,原理及实验结果分析准确,归纳总结充分。 总 分 10 提交材料 10 报告质量 30 实验内容 50

本文来源:https://www.bwwdw.com/article/oba5.html

Top