C++上机实验

2019-08-01 22:38

计算机工程学院实验报告

课程名称:C++程序设计教程 指导教师:

实验项目名称:类的设计与对象使用 实验项目编号:实验1 一、 目的

1.熟悉C++开发环境。

2.掌握多文件结构程序项目的建立过程。

3.初步掌握面向对象程序的多文件结构项目的开发运行步骤。

4.掌握类的定义和使用以及类对象的声明和使用方法,理解具有不同访问属性的成员的访问方式。

5.掌握构造函数和析构函数的作用和编写方法。 6.了解并掌握静态成员、常成员的使用。

二、实验内容与设计思想

1.下面的程序在编译时会出错,请修改程序,使之能正确运行。然后得到的正确

程序分成3个文件。文件MyClass.h包括类的定义,文件MyClass.cpp包括类成员函数的实现,文件App.cpp包括类的使用。调试、运行该程序,使之获得正确结果。

#include 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 << \ cout << \ }

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\ #include using namespace std;

MyClass::MyClass(int a , int b ){x = a;y = b;} void MyClass::Print(){ cout << \ << x << endl; cout << \ << y << endl; }

App.cpp

#include using namespace std; #include\ 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 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 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<

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 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 common(int *array, int sz); ~IntArray() { delete[] ia; } private: int *ia; int size; };

IntArray::IntArray(int sz) { int *array = NULL;

size = sz; // 设置数据成员 common(array, size); }

IntArray::IntArray(int *array, int sz) { size = sz; // 设置数据成员 common(array, size); }

IntArray::IntArray(const IntArray &rhs) {

int *array = rhs.ia; common(array, rhs.size); }

void IntArray::printAll() {

for (int ix = 0; ix < size; ++ix) cout << ia[ix] << \; cout << endl; }

void IntArray::common(int *array, int sz)


C++上机实验.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浙江省杭州市2018年中考语文模拟命题比赛试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: