您好,欢迎访问三七文档
1、计算机工程学院实验报告课程名称:C++程序设计教程班级:实验成绩:指导教师:姓名:实验项目名称:类的设计与对象使用学号:上机实践日期:实验项目编号:实验1组号:上机实践时间:一、目的1.熟悉C++开发环境。2.掌握多文件结构程序项目的建立过程。3.初步掌握面向对象程序的多文件结构项目的开发运行步骤。4.掌握类的定义和使用以及类对象的声明和使用方法,理解具有不同访问属性的成员的访问方式。5.掌握构造函数和析构函数的作用和编写方法。6.了解并掌握静态成员、常成员的使用。二、实验内容与设计思想1.下面的程序在编译时会出错,请修改程序,使之能正确运行。然后得到的正确程序分成3个文件。文件MyClass.h包括类的定义,文件MyClass.cpp包括类成员函数的实现,文件App.cpp包括类的使用。调试、运行该程序,使之获得正确结果。#includeiostreamusingnamespacestd;classMyClass{public:MyClass(){x=0;y=0;}MyClass(inta=0,b=0);Print();private:intx,y;};MyClass::MyCla。
2、ss(inta=0,intb=0){x=a;y=b;}voidMyClass::Print(){coutx=xendl;couty=yendl;}intmain(){MyClassobj1,obj2(5,8);obj1.x=1;obj1.y=3;obj1.Print();obj2.Print();return0;}实验代码:MyClass.h#ifndefMYCLASS#defineMYCLASS//MyClass.h头文件的内容classMyClass{public:MyClass(){x=0;y=0;}MyClass(inta=0,intb=0);voidPrint();private:intx,y;};#endifMyClass.cpp#includeMyClass.h#includeiostreamusingnamespacestd;MyClass::MyClass(inta,intb){x=a;y=b;}voidMyClass::Print(){coutx=xendl;couty=yendl;}App.cpp#includeiostreamusingnamespacestd;。
3、#includeMyClass.hintmain(){MyClassobj1(1,3),obj2(5,8);obj1.Print();obj2.Print();return0;}2.已知两个矩形的长和宽,用面向对象的概念编程求它们的面积和周长。假设矩形1的长和宽分别为20和50;矩形2的长和宽分别为3.6和4.5。(先定义矩形类再实例化两个对象)实验代码:#includeiostreamusingnamespacestd;classrectangular{public:rectangular(inta,intb){Long=a;Wide=b;}//面积intArea(){returnLong*Wide;}//周长intPerimeter(){return2*(Long+Wide);}private:intLong;//长intWide;//宽};intmain(){rectangularrec1(1,3),rec2(5,8);cout矩形1的面积为:rec1.Area()endl矩形1的周长为:rec1.Perimeter()endl;cout矩形2的面积为:rec2.Area()en。
4、dl矩形2的周长为:rec2.Perimeter()endl;return0;}3.下面程序中定义了一个整型动态数组,编写了3个构造函数。#includeiostreamusingnamespacestd;classIntArray{public:IntArray(intsz);//数组初始化为sz个元素,初值全为0IntArray(int*array,intsz);//用静态数组array的前sz个元素初始化新数组IntArray(constIntArray&rhs);//拷贝构造函数voidprintAll();private:int*ia;intsize;};IntArray::IntArray(intsz){size=sz;//设置数据成员ia=newint[size];for(intix=0;ixsize;++ix)ia[ix]=0;//初始化数组元素}IntArray::IntArray(int*array,intsz){size=sz;//设置数据成员ia=newint[size];for(intix=0;ixsize;++ix)ia[ix]=array[ix];//拷贝。
5、数据成员}IntArray::IntArray(constIntArray&rhs){size=rhs.size;ia=newint[size];for(intix=0;ixsize;ix++)ia[ix]=rhs.ia[ix];}voidIntArray::printAll(){for(intix=0;ixsize;++ix)coutia[ix];coutendl;}intmain(){inta[10]={1,2,3,4,5,6,7,8,9,10};IntArrayarr1(10),arr2(a,5),arr3(arr2);arr1.printAll();arr2.printAll();arr3.printAll();return0;}(1)为IntArray加上析构函数并编译运行程序,体会类的构造函数和析构函数的作用。(2)程序中,类IntArray的三个构造函数都是以相似的方式来实现的。一般来说,当两个或多个函数重复相同的代码时,可将这部分代码抽取出来,形成独立的函数,以便共享。以后如果需要改变这些实现,则只需改变一次,而且这种实现的共享本质更容易为大家所理解。怎样把构造函数中的。
6、代码抽取出来形成独立的共享函数呢?请给出一种可能的实现。按你给出的实现方法修改程序并重新编译运行。实验代码:#includeiostreamusingnamespacestd;classIntArray{public:IntArray(intsz);//数组初始化为sz个元素,初值全为0IntArray(int*array,intsz);//用静态数组array的前sz个元素初始化新数组IntArray(constIntArray&rhs);//拷贝构造函数voidprintAll();voidcommon(int*array,intsz);~IntArray(){delete[]ia;}private:int*ia;intsize;};IntArray::IntArray(intsz){int*array=NULL;size=sz;//设置数据成员common(array,size);}IntArray::IntArray(int*array,intsz){size=sz;//设置数据成员common(array,size);}IntArray::IntArray(constIntA。
7、rray&rhs){int*array=rhs.ia;common(array,rhs.size);}voidIntArray::printAll(){for(intix=0;ixsize;++ix)coutia[ix];coutendl;}voidIntArray::common(int*array,intsz){size=sz;ia=newint[size];if(array!=NULL){for(intix=0;ixsize;++ix)ia[ix]=ix+1;}else{for(intix=0;ixsize;++ix)ia[ix]=0;}}intmain(){inta[10]={1,2,3,4,5,6,7,8,9,10};IntArrayarr1(10),arr2(a,5),arr3(arr2);arr1.printAll();arr2.printAll();arr3.printAll();return0;}4.设有一个点myPoint类的定义如下:classmyPoint{public:myPoint(doublex0=0.0,doubley0=0.0):x(x0),y(y0)。
8、{}myPoint(myPoint&np):x(np.x),y(np.y){}doubleGetX(){returnx;}doubleGetY(){returny;}voidSetX(doublex0){x=x0;}voidSetY(doubley0){x=y0;}voidSetPoint(doublex0,doubley0){x=x0;y=y0;}voidSetPoint(myPoint&np){x=np.x;y=np.y;}doubleGetLength(myPointp){returnsqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));}voidPrintit(){cout(x,y);}private:doublex,y;};试定义一个三角形Triangle类,在Triangle类中以点myPoint类的3个对象p1、p2、p3作为数据成员,表示三角形的三个顶点。Triangle类具有计算三角形的周长和面积的功能。请编写程序上机调试并运行。:实验代码:#includeiostreamusingnamespacestd;classmyPoint{public。
9、:myPoint(doublex0=0.0,doubley0=0.0):x(x0),y(y0){}myPoint(myPoint&np):x(np.x),y(np.y){}doubleGetX(){returnx;}doubleGetY(){returny;}voidSetX(doublex0){x=x0;}voidSetY(doubley0){x=y0;}voidSetPoint(doublex0,doubley0){x=x0;y=y0;}voidSetPoint(myPoint&np){x=np.x;y=np.y;}doubleGetLength(myPointp){returnsqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));}voidPrintit(){cout(x,y);}private:doublex,y;};classTriangle{public://面积doubleArea(doublea,doubleb,doublec){doublep;p=(a+b+c)/2;returnsqrt(p*(p-a)*(p-b)*(p-c));}//周长dou。
10、blePerimeter(doublea,doubleb,doublec){returna+b+c;}myPointp1,p2,p3;};intmain(){Triangletri;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();coutendl;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.。
本文标题:C++上机实验
链接地址:https://www.777doc.com/doc-5725555 .html