文档库

最新最全的文档下载
当前位置:文档库 > 北邮小学期C++程序设计实验报告

北邮小学期C++程序设计实验报告

实验报告

计算机学院2010211312班10211490

实验一简单C++程序设计

一、实验目的:

1、熟悉C++编程环境,掌握在Dev-C++开发环境下编写、编译、调试和执

行C++程序的方法。

2、掌握C++基本语法、数据类型和程序控制结构,能够编写简单C++程

序。

二、实验内容和要求:

1、猜价格游戏

编写C++程序完成以下功能:

(1)假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);

(2)提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户做出相应的提示;

(3)直到猜对为止,并给出提示。

三、算法设计思路:

以时钟作为随机种子产生随机数并将其约束在1-1000范围内,座位商品价格供用户猜。

提示用户输入,根据用户输入的答案与正确价格比较提示用户重新输入,直到猜出正确价格时终止循环,并给出正确提示。

四、实验总结。

初步体会C++编程的语法特点,感悟与C的不同之处。

在助教提示下及时改正,产生1-1000之间的随机数应使用语句rand ()%1000+1而非rand()%1000,否则只能产生0-999,体会细节的重要。

实验二类与对象

一、实验目的:

1、理解面向对象程序设计的基本思想。

2、掌握面向对象程序设计的重要概念——类和对象。

3、掌握用类分析问题的基本方法,并用C++编程实现。

二、实验内容和要求:

1、矩形

编写C++程序完成以下功能:

(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距

离的方法;

(2)定义一个矩形类,其属性包括左上角和右下角两个点,提供计算面积的方法;

(3)创建一个矩形对象,提示用户输入矩形左上角和右下角的坐标;

(4)观察矩形对象以及Point类成员的构造函数与析构函数的调用;

(5)计算其面积,并输出。

2、友元

编写C++程序完成以下功能:

(1)定义一个Boat和Car两个类,他们都具有私用属性——重量;

(2)编写一个函数,计算两者的重量和。

double TotalWeight(Boat& b, Car& c);

三、算法设计思路

1、

定义point类,其中包含计算两点间距离的方法,即两点间坐标公式。

定义矩形类,公有继承point类,成员包括左上角和右下角两个point类对象,计算面积时现根据左上角点的纵坐标和右下角点的横坐标构造出矩形右上角的点R,并借助这一点point类中计算两点间距离的方法取得矩形的长和宽,即可计算矩形面积。

2、

定义一个Boat和Car两个类,他们都具有私用属性——重量,并均将函数double TotalWeight(Boat& b, Car& c);定义为友元成员函数。

定义Boat类对象B和Car 类对象C,根据用户输入的重量使用构造函数对两个对象进行初始化。

设计double TotalWeight(Boat& b, Car& c);函数计算重量和输出即可。

四、实验总结。

初步体会类使用的相关事项,学习使用构造函数对对象进行初始化,体会成员函数的设计,如何获取对象内部成员信息。

体会友元函数和一般成员函数设计和使用上的不同之处。

实验三数组与指针

一、实验目的:

1、理解面向对象程序实际的数据结构。

2、掌握C++中利用数组和指针组织数据的方法。

二、试验内容和要求

1、矩阵(一)

编写C++程序完成以下功能:

(1)假定矩阵大小为4×5(整型数组表示);

(2)定义矩阵初始化函数,可以从cin中输入矩阵元素;

(3)定义矩阵输出函数,将矩阵格式化输出到cout;

(4)定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中;

(5)定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一

个矩阵中;

(6)定义三个矩阵:A1、A2、A3;

(7)初始化A1、A2;

(8)计算并输出:A3 = A1加A2,A3 = A1减A2。

2、矩阵(二)

编写C++程序完成以下功能:

(1)假定矩阵大小为4×5(整型);

(2)矩阵空间采用new动态申请,保存在指针中;

(3)定义矩阵初始化函数,可以从cin中输入矩阵元素;

(4)定义矩阵输出函数,将矩阵格式化输出到cout;

(5)定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中;

(6)定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中;

(7)动态申请三个矩阵:A1、A2、A3;

(8)初始化A1、A2;

(9)计算并输出A3 = A1加A2,A3 = A1减A2;

(10)释放矩阵空间。

3、矩阵(三)

编写C++程序完成以下功能:

(1)用类来实现矩阵,定义一个矩阵的类,属性包括:

●矩阵大小,用 lines, rows(行、列来表示);

●存贮矩阵的数组指针,根据矩阵大小动态申请(new)。

(2)矩阵类的方法包括:

●构造函数,参数是矩阵大小,需要动态申请存贮矩阵的数组;

●析构函数,需要释放矩阵的数组指针;

●拷贝构造函数,需要申请和复制数组;

●输入,可以从cin中输入矩阵元素;

●输出,将矩阵格式化输出到cout;

●矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另

一个矩阵类,但必须矩阵大小相同;

●矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另

一个矩阵类,但必须矩阵大小相同。

(3)定义三个矩阵:A1、A2、A3;

(4)初始化A1、A2;

(5)计算并输出A3 = A1加A2,A3=A1减A2;

(6)用new动态创建三个矩阵类的对象:pA1、pA1、pA3;

(7)初始化pA1、pA2;

(8)计算并输出pA3=pA1加pA2,pA3=pA1减pA2;

(9)释放pA1、pA1、pA3。

三、算法设计思路:

1、矩阵(一)

定义4*5的二维数组,并提示用户输入矩阵元素

设计输出函数,将矩阵按行列格式化输出

设计矩阵加减函数并将结果保存在另一矩阵中

2、矩阵(二)

用new动态开辟内存存放数组,提示用户输入矩阵元素

设计输出函数,将矩阵按行列格式化输出

设计矩阵加减函数并将结果保存在另一矩阵中

实用delete/delete[]释放内存

3、矩阵(三)

定义矩阵类,成员函数包括矩阵元素的输入输出,两个矩阵相加减并将结果储存在另一矩阵中,其中使用到复制构造函数和动态开辟内存空间的方法。

提示用户输入矩阵的尺寸,根据行列开辟内存空间存放矩阵。

提示用户输入矩阵元素,并调用矩阵对象成员函数计算并输出矩阵加减的结果。调用析构函数释放内存空间

四、实验总结

1、矩阵(一)

体会数组在c++中的基本操作简单应用。

2、矩阵(二)

学习在c++中使用指针和动态开辟内存空间。

3、矩阵(三)

结合类、指针数组、动态开辟内存,释放内存空间的知识,综合运用。

实验四继承与派生

一、实验目的:

1、理解面向对象程序设计中继承与派生的概念。

2、掌握C++中采用类的继承与派生解决问题的方法。

二、实验内容和要求:

1、形状(一)

编写C++程序完成以下功能:

(1)声明一个基类Shape(形状),其中包含一个方法来计算面积;

(2)从Shape派生两个类矩形和圆形;

(3)从矩形派生正方形;

(4)分别实现派生类构造函数、析构函数和其他方法;

(5)创建派生类的对象,观察构造函数、析构函数调用次序;

(6)不同对象计算面积。

2、形状(二)——虚函数

(1)将【形状(一)】中的基类计算面积的方法定义为虚函数,比较与【形状(一)】程序的差异;

(2)将【形状(一)】中的基类定义抽象类,比较与【形状(一)】程序的差异。

三、算法设计思路:

1、形状(一)

声明一个基类Shape(形状),其中包含一个方法来计算面积

从Shape派生两个类矩形和圆形并实现各自的构造函数和计算面积函数。

从矩形派生正方形,设定其构造函数和计算面积函数

提示用户输入矩形,圆,正方型参数,输出相应图形的面积

2、形状(二)

实用关键字virtual实现虚函数和抽象类

四、实验总结

实现类的继承派生,体会派生类对基类继承的构造函数析构函数调用次序等现实问题,在派生类实现函数和在积累实现的区别与联系。

体会虚函数、抽象类的不同之处。

实验五多态性

一、实验目的:

1、理解面向对象程序设计中多态性的概念。

2、理解C++中同名函数之间的管理方法。

3、掌握C++中多态性的应用。

二、实验内容和要求:

1、对Point类重载++和――运算符

编写C++程序完成以下功能:

(1) Point类的属性包括点的坐标(x,y);

(2)实现 Point类重载++和――运算符:

●++p,--p,p++,p--。

●++和――分别表示x,y增加或减少1。

三、算法设计思路:

定义point类,包括点的坐标和++、--运算。

对++,--运算符进行重载,使其可以进行point类型对象的运算。

对前置和后置的++,--元算采用不同算法进行重载,借助this指针实现。

四、实验总结

体会C++中多态的特色,学会运算符重载的方法。

体会this指针的使用和效果。

实验六流式IO

一、实验目的:

1、理解C++的IO流类库的概念和结构。

2、掌握C++流类库的简单应用。

二、实验内容和要求:

1、流式IO(一)

编写C++程序完成以下功能:

(1)使用ofstream 向一个文本文件中输出各种类型的数据,并打开文件观察结果:

●整数、无符号整型、长整型、浮点型、字符串、……

(2)用十进制、八进制、十六进制方式向文本文件中输出整数;

(3)使用控制符和成员函数来控制输出的格式:

●set() precision() ...

2、流式IO(三)

编写C++程序完成以下功能:

(1)输入一个文本文件名;

(2)打开文件名,在该文件的每一行前面加上一个行号,保存在另外一个文本文件中。

三、算法设计思路

1、流式IO(一)

提示用户输入整数、无符号整型、长整型、浮点型、字符串、,并写入文件中观察结果

提示用户输入另一个整数,实用数值转换符用十进制、八进制、十六进制方式向文本文件中输出整数,观察结果。

让用户输入整数和小数,实用setw()和precission()设置不同的输出格式讲数据打印到屏幕上观察不同的输出结果。

2、流式IO(三)

提示用户输入要打开的文本文件名

使用文件流打开该文件并读取每一行,在行首加入行标,保存在另一个文本文文件中。

四、实验总结

体会文件流的使用相关知识技巧,建立关联的方式核对文件流的读写操作。

发现实用cin从键盘接受字符串时遇空格季终止读取,而文件名可能存在空格,应该而用了getline(,)函数从键盘读取文件名有效解决此问题。

实验七 C++程序设计应用

一、实验目的:

1、掌握应用面向对象程序设计方法解决实际问题的能力。

2、综合运用C++编程的能力。

二、实验内容和要求:

1、电话本

编写C++程序完成以下功能:

(1)实现简单电话本功能,用姓名来搜索电话号码;

(2)用户输入姓名,程序查找并输出结果;

(3)用户可以通过输入,添加姓名和电话号码;

(4)用户可以删除姓名和电话号码;

(5)电话本可以保存在指定文件中;

(6)电话可被从指定文件中读入到内存。

三、算法设计思路

1.定义类item储存一个联系人条目,包括联系人姓名和电话号码,举出存在string类型的变量中。Item类还包括读取联系人姓名和电话的函数

2.定义函数item seek()用于根据姓名查找某条联系人信息,并返回一个item 类的对象contact,即一个联系人条目。

3.定义函数void display(item contact),用于向屏幕上打印指定的联系人信息。接受一个联系人对象,并打印出联系人姓名和电话号码。

4.定义函数void modi()用于修改制定的联系人条目,根据用户输入的姓名,调用seek()函数在电话本文件查找到指定的联系人并打印在屏幕上,提供三个选项,用户可根据需要修改姓名号码或两个同时更改。修改时文本中位于指定联系人前面的所有信息均复制到临时文件中,修改好的制定条目随即写入临时文件,再将剩余信息写入临时文件,最后删除原有文件,更改临时文件名使之成文新的电话本文件即完成修改。

5.定义函数void add()用于增加一个联系人。接受用户输入的联系人名和号码,写入电话本文件中即可。

6.定义函数void dele()用于删除指定的联系人信息。根据用户输入的姓名,调用seek()函数在电话本文件查找到指定的联系人并打印在屏幕上,位于指定联系人前面的所有信息均复制到临时文件中,跳过待删除的联系人条目,继续将剩余信息写入临时文件,最后删除原有文件,更改临时文件名使之成文新的电话本文件即完成修改。

7.定义菜单函数void menu(),提示用户选择本程序的各种功能以及退出选项。

8.主函数main(),调用菜单函数接受用户的请求并调用适当的函数进行操作或生成对象item,直到用户选择退出。

四、实验总结

综合运用C++中类,函数,输入输出流等操作。

体会C++综合程序设计的流程,设计,编码调试到最终基本实现要求的程序

完成的过程。