C实验报告孟红波.doc_第1页
C实验报告孟红波.doc_第2页
C实验报告孟红波.doc_第3页
C实验报告孟红波.doc_第4页
C实验报告孟红波.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+实验报告 南 昌 大 学实 验 报 告实验课程: C+语言程序设计 学生姓名: 孟红波 学 号: 6100410179 专业班级: 计算机(卓越)101班 联系电话:2012年 5月23日目录实验一 继承与多态- 3 -实验二 指针和动态内存使用练习- 6 -实验三 多态- 10 -实验四 运算符重载- 13 - 实验一 继承与多态姓名: 孟红波 学号: 6100410179 专业班级: 卓越计算机101班 实验目的1、理解继承在面向对象程序中的重要作用、继承和派生的概念;2、掌握通过继承派生一个新类的方法;3、理解多态的概念、运算符重载的概念、虚函数的作用;4、学习实现多态,掌握几种常用运算符的重载; 5、掌握虚函数的定义和使用方法;6、简单面向对象程序的编写问题描述构造函数重载,并熟练掌握实验要求分析问题,准确理解题的要求详细写出实验代码,并运行出结果实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境或 Visual C+ 程序集成环境实验内容及具体步骤程序代码#include using namespace std;class COMPLEX public:COMPLEX (double r=0,double i=0); COMPLEX(const COMPLEX & other); void print( ); COMPLEX add(const COMPLEX & other); COMPLEX subs(const COMPLEX & other);protected: double real, image;COMPLEX: COMPLEX ( double r, double i) real = r; image =i; return; COMPLEX: COMPLEX( const COMPLEX & other ) real = other.real; image =other.image; return;void COMPLEX: print( ) cout 0) cout +imagei; else if (image 0) cout image i; cout 成员变量 当一个对象调用成员函数时,该成员函数的指针便指向这个对象。实验感想通过这次实验我理解了继承在面向对象程序中的重要作用、继承和派生的概念,并掌握通过继承派生一个新类的方法;同时我学习了如何实现多态,掌握几种常用运算符的重载和一些简单面向对象程序的编写。实验二 指针和动态内存使用练习姓名: 孟红波 学号: 6100410179 专业班级: 卓越计算机101班 实验目的1. 在根据文字叙述写出程序的过程中,练习通过指针使用动态内存的方法。2. 在根据文字叙述写出程序的过程中,练习动态数组和动态多维数组的操作。实验环境硬件设备:联网的个人计算机操作系统:Windows 2000编译系统:Visual C+ 6.0实验内容及步骤(包含简要的实验步骤流程)1. 声明一个 int 类型的指针,从堆中获得存放一个int变量的内存,将该内存的首地址赋给该指针,将该内存的值初始化为3,打印出该内存的值,然后删除该内存。2. 声明一个XY类的指针,从堆中获得存放一个 XY 对象的内存,将该内存的首地址赋给该指针,调用构造函数将2个数据成员初始化为3和4,调用成员函数打印出数据成员的值,然后删除该内存。3. 声明一个 int 类型的指针,在堆中创建存放3个int变量的数组,将该数组的首地址赋给该指针,对三个数组元素分别赋值3、4、5,在一个循环中打印出所有数组元素的值,然后删除该数组。4. 声明一个 XY 类的指针,在堆中创建存放3个XY对象的数组,将该数组的首地址赋给该指针,在一个循环中对三个数组元素分别赋值 (1,2)、(3,4)、(5,6),在另一个循环中打印出这些值,然后删除该数组。5. 声明一个int类型的指针的指针,在堆中创建存放3个int指针的数组,将该数组的首地址赋给该指针的指针,然后删除该指针数组。6. 声明一个int类型、3个元素的指针数组,在一个3次循环中,每次在堆中创建存放3个int变量的数组,并将该数组的首地址赋给该指针数组的第i(i = 0, 1, 2)个元素。7. 声明一个int类型的指针的指针,在堆中创建3个元素的指针数组,在一个3次循环中,每次在堆中创建存放3个int变量的数组,并将该内存的首地址赋给该指针数组的第i(i = 0, 1, 2)个元素。8. 在一个二重循环中,将下列矩阵的值分别赋给在第6、7步建立的两个33个元素的二维数组。9. 在一个二重循环中,分别打印出在第6、7步建立的、在第8步赋值的两个33个元素的二维数组的值。10. 在一个循环中,分别删除第6、7步建立的两个33个元素的二维动态数组的各行。11. 删除在第7步建立的指针数组。实验程序#include using namespace std;class XY private:int m_x, m_y;public:XY() XY(int x, int y) : m_x(x), m_y(y) XY() XY(XY& xy) m_x = xy.m_x; m_y = xy.m_y; void SetXY(const int& x, const int& y) m_x = x; m_y = y; int GetX() const return m_x; int GetY() const return m_y; ;void main()int i, j = 0;int* p = new int(3);/ 声明一个int类型的指针,从堆中获得存放一个int变量的内存,将该内存的首地址赋给该指针,将该内存的值初始化为3cout *p endl;/ 打印出该内存的值delete p;/ 删除该内存XY* pXY = new XY(3, 4);/ 声明一个XY类的指针,从堆中获得存放一个 XY 对象的内存,将该内存的首地址赋给该指针,调用构造函数将2个数据成员初始化为3和4cout GetX() GetY() endl;/ 调用成员函数打印出数据成员的值delete pXY;/ 删除该内存。int* pX = new int3;/ 声明一个 int 类型的指针,在堆中创建存放3个int变量的数组,将该数组的首地址赋给该指针pX0 = 3; pX1 = 4; pX2 = 5;/ 对三个数组元素分别赋值3、4、5for (i = 0; i 3; i +)/ 在一个循环中打印出所有数组元素的值cout pXi ;cout endl;delete pX;/ 删除该数组pXY = new XY3;/ 声明一个 XY 类的指针,在堆中创建存放3个XY对象的数组,将该数组的首地址赋给该指针for (i = 0; i 3; i +)/ 在一个循环中对三个数组元素分别赋值 (1,2)、(3,4)、(5,6)pXYi.SetXY(i * 2 + 1, i * 2 + 2);for (i = 0; i 3; i +)/在另一个循环中打印出这些值cout pXYi.GetX() pXYi.GetY() endl;delete pXY;/ 删除该数组int* pp = new int*3;/ 声明一个int类型的指针的指针,在堆中创建存放3个int指针的数组,将该数组的首地址赋给该指针的指针delete pp;/ 删除该指针数组int* ppA3;/ 声明一个int类型、3个元素的指针数组for (i = 0; i 3; i +)/ 在一个3次循环中,每次在堆中创建存放3个int变量的数组,并将该数组的首地址赋给该指针数组的第i(i = 0, 1, 2)个元素ppAi = new int3;int* ppD = new int*3;/ 声明一个int类型的指针的指针,在堆中创建3个元素的指针数组for (i = 0; i 3; i +)/ 在一个3次循环中,每次在堆中创建存放3个int变量的数组,并将该数组的首地址赋给该指针数组的第i(i = 0, 1, 2)个元素ppDi = new int3;/ 在一个二重循环中,将下列矩阵的值分别赋给上面建立的两个33个元素的二维数组for (i = 0; i 3; i +)for (j = 0; j 3; j +)ppAij = (i + 1) * (j + 1);/ 在一个二重循环中,分别打印出两个33个元素的二维数组的值for (i = 0; i 3; i +)for (j = 0; j 3; j +)cout ppAij ;cout endl;/ 在一个循环中,分别删除第6、7步建立的两个33个元素的二维动态数组的各行for (i = 0; i 3; i +)delete ppAi;delete ppDi;delete ppD;/ 删除指针数组ppD实验结果实验感想通过这次实验我掌握了通过指针使用动态内存的方法,熟练了动态数组和动态多维数组的操作。使自己的编程水平上了一个新的台阶,有了很大的进步。 实验三 多态姓名: 孟红波 学号: 6100410179 专业班级: 卓越计算机101班 实验目的掌握函数的概念及应用方法;理解多态性的运用和作用;问题描述新建一个基类shape类是一个表示形状的抽象类,area( )为求图形面积的函数。请从shape类派出矩形类(rectangle)、三角形类(triangle)、圆类(circles)、并给出具体的求面积函数。实验要求分析问题,准确理解题的要求详细写出实验代码,并运行出结果实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境或 Visual C+ 程序集成环境实验内容及具体步骤程序代码#include#includeusing namespace std;class shape public: virtual double area()=0; virtual void display() = 0; shape();class rectangle:public shape public: rectangle(double a =1,double b=1) x = a; y = b; double area() return x*y; void display() coutarea()endl; private: double x; double y; ;class triangle:public shape public: triangle(double a =1,double b =1,double c=1) x = a; y = b; z= c; double area() double l = (x+y+z)/2; return (sqrt(l-x)*(l-y)*(l-z)*l); void display() coutarea()endl; private: double x; double y; double z;class circles:public shape public: circles(double R =1) r =R; double area() return 3.14*r*r; void display() coutarea()display(); p = new triangle(3,4,5); p-display(); p = new circles(2); p-display(); system(PAUSE); return 0;实验结果 实验四 运算符重载姓名: 孟红波 学号: 6100410179 专业班级: 卓越计算机101班 实验目的掌握运算符重载的概念及使用方法,掌握特殊运算符的重载要求和方法问题描述定义整数集合类intSet,实现如下功能:(1) 定义类的构造函数,并根据需要可以定义多个构造函数。(2) Clear函数:清空整数集合(3) IsEmpty():整数集合是否空集;(4) IsMemberOf():判断某个整数是否在整数集合内(5) Operator+:增加一个整数到整数集合中(6) Operator-:从整数集合中删除一个整数元素;(7) Operator=:判断两个整数集合是否相等;(8) Operator*:求两个整数结合的交集;(9) Operator+:求两个整数集合的交集;(10) Operator=:整数集合的对象之间的赋值;(11) Operator:输出整数集合中的元素。提示:类intSet可以用数组的方式定义整数集合。例如:int element200:保存整数集合数据;int ElementNum: 指示整数集合的最后一个元素位置注意:一个整数集合中不允许有相同元素存在,二是集合中的元素没有顺序。实验要求分析问题,准确理解题的要求详细写出实验代码,并运行出结果实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境或 Visual C+ 程序集成环境实验内容及具体步骤定义整数集合类intSet,实现如下功能:(12) 定义类的构造函数,并根据需要可以定义多个构造函数。(13) Clear函数:清空整数集合(14) IsEmpty():整数集合是否空集;(15) IsMemberOf():判断某个整数是否在整数集合内(16) Operator+:增加一个整数到整数集合中(17) Operator-:从整数集合中删除一个整数元素;(18) Operator=:判断两个整数集合是否相等;(19) Operator*:求两个整数结合的交集;(20) Operator+:求两个整数集合的交集;(21) Operator=:整数集合的对象之间的赋值;(22) Operator:输出整数集合中的元素。提示:类intSet可以用数组的方式定义整数集合。例如:int element200:保存整数集合数据;int ElementNum: 指示整数集合的最后一个元素位置注意:一个整数集合中不允许有相同元素存在,二是集合中的元素没有顺序。程序代码#includeusing namespace std;class intSetpublic: intSet(); intSet(int a,int size); void Clear(); bool IsEmpty(); bool IsMemberOf(int a); bool operator+(int a); bool operator-(int a); bool operator=(intSet & set); intSet operator+(intSet &set); intSet operator *(intSet &set); void operator = (intSet &set); friend ostream &operator(ostream &,intSet&);protected:int element100;int ElementNum;/初始化整数集合元素 intSet:intSet()for(int i = 0; i=100)ElementNum = 99;elseElementNum = size -1;for(int i = 0;i=ElementNum; i+)elementi = ai;for(int i =size; i100;i+)elementi = 0;/清空整数集合元素 void intSet:Clear()for(int i = 0;i100;i+)elementi = 0;ElementNum = -1;/判断整数集合是否为空 bool intSet:IsEmpty()if(ElementNum = -1)return false;else return true;/判断元素是否在整数集合中 bool intSet:IsMemberOf(int a)for(int i= 0;iElementNum ; i+)if(elementi = a)return true;return false;/往集合中增加一个元素 bool intSet:operator +(int a)if(IsMemberOf(a)return true;elseif(ElementNum = 99)return false;elseElementNum+;elementElementNum = a;return true;/从集合中删除一个元素 bool intSet:operator -(int a) int pos; if(!IsMemberOf(a) return false; for(int i = 0;i=ElementNum;i+) if(elementi=a) pos= i; break; for(int i = pos; iElementNum;i+) elementi = elementi+1; ElementNum-;return true;/判断两个整数集合是否相等 bool intSet:operator =(intSet & set)bool Equal;if(ElementNum!=set.ElementNum)return false;for(int i = 0;i=ElementNum;i+)Equal = false;for(int j = 0;jset.ElementNum;j+)if(elementi=set.elementi)Equal = true;break;if(!Equal)return false;return true;/求两个集合的交集 intSet intSet:operato

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论