收藏 分销(赏)

C++上机实验.doc

上传人:天**** 文档编号:4453966 上传时间:2024-09-23 格式:DOC 页数:8 大小:42.50KB
下载 相关 举报
C++上机实验.doc_第1页
第1页 / 共8页
C++上机实验.doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述
计算机工程学院实验报告 课程名称:C++程序设计教程 班级: 实验成绩: 指导教师: 姓名: 实验项目名称:类得设计与对象使用 学号: 上机实践日期: 实验项目编号:实验1 组号: 上机实践时间: 一、 目得 1、熟悉C++开发环境。 2、掌握多文件结构程序项目得建立过程。 3、初步掌握面向对象程序得多文件结构项目得开发运行步骤。 4、掌握类得定义与使用以及类对象得声明与使用方法,理解具有不同访问属性得成员得访问方式。 5、掌握构造函数与析构函数得作用与编写方法。 6、了解并掌握静态成员、常成员得使用。 二、实验内容与设计思想 1.下面得程序在编译时会出错,请修改程序,使之能正确运行。然后得到得正确程序分成3个文件。文件MyClass、h包括类得定义,文件MyClass、cpp包括类成员函数得实现,文件App、cpp包括类得使用。调试、运行该程序,使之获得正确结果。 #include<iostream> using namespace std; class MyClass { public: MyClass { x=0;y=0; } MyClass(int a = 0, b = 0); Print; private: int x, y; }; MyClass::MyClass(int a = 0, int b =0){ x = a; y = b; } void MyClass::Print { cout << "x = " << x << endl; cout << "y = " << y << endl; } int main { MyClass obj1,obj2(5,8); obj1、x =1; obj1、y =3; obj1、Print; obj2、Print; return 0; } 实验代码: MyClass、h #ifndef MYCLASS #define MYCLASS // MyClass、h头文件得内容 class MyClass{ public: MyClass { x = 0; y = 0; } MyClass(int a = 0, int b = 0); void Print; private: int x, y; }; #endif MyClass、cpp #include"MyClass、h" #include<iostream> using namespace std; MyClass::MyClass(int a , int b ){x = a;y = b;} void MyClass::Print{ cout << "x = " << x << endl; cout << "y = " << y << endl; } App、cpp #include<iostream> using namespace std; #include"MyClass、h" int main { MyClass obj1(1, 3), obj2(5, 8); obj1、Print; obj2、Print; return 0; } 2.已知两个矩形得长与宽,用面向对象得概念编程求它们得面积与周长。假设矩形 1 得长与宽分别为 20 与 50;矩形 2 得长与宽分别为 3、6 与 4、5。(先定义矩形类再实例化两个对象) 实验代码: #include<iostream> using namespace std; class rectangular{ public: rectangular(int a, int b) { Long = a; Wide = b; } //面积 int Area( ) { return Long*Wide; } //周长 int Perimeter { return 2 * (Long + Wide); } private: int Long;//长 int Wide;//宽 }; int main { rectangular rec1(1, 3), rec2(5, 8); cout << "矩形1得面积为:" << rec1、Area << endl << "矩形1得周长为:" << rec1、Perimeter << endl; cout << "矩形2得面积为:" << rec2、Area << endl << "矩形2得周长为:" << rec2、Perimeter << endl; return 0; } 3、 下面程序中定义了一个整型动态数组,编写了3个构造函数。 #include<iostream> using namespace std; class IntArray { public: IntArray(int sz); // 数组初始化为sz个元素,初值全为0 IntArray( int *array, int sz ) ; // 用静态数组array得前sz个元素初始化新数组 IntArray( const IntArray &rhs ) ; // 拷贝构造函数 void printAll; private: int *ia; int size; }; IntArray::IntArray( int sz ) { size = sz; // 设置数据成员 ia = new int[ size ]; for ( int ix=0; ix < size; ++ix ) ia[ix] = 0; // 初始化数组元素 } IntArray:: IntArray( int *array, int sz ) { size = sz; // 设置数据成员 ia = new int[ size ]; for ( int ix=0; ix < size; ++ix ) ia[ix ] = array[ ix ]; // 拷贝数据成员 } IntArray:: IntArray( const IntArray &rhs ) { size = rhs、size; ia = new int[ size ]; for (int ix = 0; ix < size; ix++ ) ia[ ix ] = rhs、ia[ ix ]; } void IntArray::printAll { for ( int ix=0; ix < size; ++ix ) cout<<ia[ix]<<" "; cout<<endl; } int main { int a[10]={1,2,3,4,5,6,7,8,9,10}; IntArray arr1(10), arr2(a,5),arr3(arr2); arr1、printAll; arr2、printAll; arr3、printAll; return 0; } (1)为IntArray加上析构函数并编译运行程序,体会类得构造函数与析构函数得作用。 (2)程序中,类IntArray得三个构造函数都就是以相似得方式来实现得。一般来说,当两个或多个函数重复相同得代码时,可将这部分代码抽取出来,形成独立得函数,以便共享。以后如果需要改变这些实现,则只需改变一次,而且这种实现得共享本质更容易为大家所理解。怎样把构造函数中得代码抽取出来形成独立得共享函数呢?请给出一种可能得实现。按您给出得实现方法修改程序并重新编译运行。 实验代码: #include<iostream> using namespace std; class IntArray { public: IntArray(int sz); // 数组初始化为sz个元素,初值全为0 IntArray(int *array, int sz); // 用静态数组array得前sz个元素初始化新数组 IntArray(const IntArray &rhs); // 拷贝构造函数 void printAll; void mon(int *array, int sz); ~IntArray { delete[] ia; } private: int *ia; int size; }; IntArray::IntArray(int sz) { int *array = NULL; size = sz; // 设置数据成员 mon(array, size); } IntArray::IntArray(int *array, int sz) { size = sz; // 设置数据成员 mon(array, size); } IntArray::IntArray(const IntArray &rhs) { int *array = rhs、ia; mon(array, rhs、size); } void IntArray::printAll { for (int ix = 0; ix < size; ++ix) cout << ia[ix] << " "; cout << endl; } void IntArray::mon(int *array, int sz) { size = sz; ia = new int[size]; if (array != NULL) { for (int ix = 0; ix < size; ++ix) ia[ix] = ix + 1; } else { for (int ix = 0; ix < size; ++ix) ia[ix] = 0; } } int main { int a[10] = { 1,2,3,4,5,6,7,8,9,10 }; IntArray arr1(10), arr2(a, 5), arr3(arr2); arr1、printAll; arr2、printAll; arr3、printAll; return 0; } 4、设有一个点myPoint类得定义如下: class myPoint { public: myPoint(double x0=0、0,double y0=0、0):x(x0),y(y0) {} myPoint(myPoint &np):x(np、x),y(np、y) {} double GetX { return x;} double GetY {return y;} void SetX(double x0) {x=x0;} void SetY(double y0) {x=y0;} void SetPoint(double x0,double y0) {x=x0;y=y0;} void SetPoint(myPoint &np) { x=np、x; y=np、y;} double GetLength(myPoint p) { return sqrt((xp、x)*(xp、x) +(yp、y)*(yp、y)); } void Printit { cout<<" ("<<x<<","<<y<<") ";} private: double x ,y; }; 试定义一个三角形Triangle类,在Triangle类中以点myPoint类得3个对象p1、p2、p3作为数据成员,表示三角形得三个顶点。Triangle类具有计算三角形得周长与面积得功能。请编写程序上机调试并运行。: 实验代码: #include<iostream> using namespace std; class myPoint { public: myPoint(double x0 = 0、0, double y0 = 0、0) :x(x0), y(y0) {} myPoint(myPoint &np) :x(np、x), y(np、y) {} double GetX { return x; } double GetY { return y; } void SetX(double x0) { x = x0; } void SetY(double y0) { x = y0; } void SetPoint(double x0, double y0) { x = x0; y = y0; } void SetPoint(myPoint &np) { x = np、x; y = np、y; } double GetLength(myPoint p) { return sqrt((x p、x)*(x p、x) + (y p、y)*(y p、y)); } void Printit { cout << " (" << x << "," << y << ") "; } private: double x, y; } ; class Triangle { public: //面积 double Area(double a, double b, double c) { double p; p = (a + b + c) / 2; return sqrt(p*(p a)*(p b)*(p c)); } //周长 double Perimeter(double a, double b, double c) { return a + b + c; } myPoint p1,p2, p3; }; int main { Triangle tri; tri、p1、SetPoint(1, 1); tri、p2、SetPoint(3, 0); tri、p3、SetPoint(2, 3); cout << "三角形得顶点为:"; tri、p1、Printit; tri、p2、Printit; tri、p3、Printit; cout << endl; cout << "三角形得面积为:" << tri、Area(tri、p1、GetLength(tri、p2), tri、p2、GetLength(tri、p3), tri、p1、GetLength(tri、p3)) << endl; cout << "三角形得周长为: " << tri、Perimeter(tri、p1、GetLength(tri、p2), tri、p2、GetLength(tri、p3), tri、p1、GetLength(tri、p3)) << endl; return 0; } 三、实验使用环境 Windows 10 VS2017 四、 实验小结 1)了解了对接口编程得思想,学会了将类得定义放在头文件中,函数得实现应放在、cpp文件中,将类成员函数得实现与类得使用放在不同得cpp文件中得编程模式,也学会了用预编译条件指令来限制头文件内容得引入,避免头文件内容被重复引入得方法。 2)学会了先构造类再实例化对象得编程思想,初步理解了面向对象得概念,深入了解了构造函数与析构函数得特点。 3)深入了解了构造函数与析构函数得特点。 4)学会了将重复代码抽出,简化代码得方法。 5)学会了将一个类作为另一个类得数据成员时得初始化,函数调用。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服