C++实验手册(超实用).doc_第1页
C++实验手册(超实用).doc_第2页
C++实验手册(超实用).doc_第3页
C++实验手册(超实用).doc_第4页
C++实验手册(超实用).doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

华清远见嵌入式培训专家 ARM开发培训班实验指导V3.0实验一 结构和类1.1类实验1【实验内容】设计一个简单的关于类的程序。定义一个点类,包含x、y坐标,包含一下功能:1)设置x坐标2)设置y坐标3)得到x坐标4)得到y坐标【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include using namespace std;class Pointpublic:Point(float a=0,float b=0)coutInit Point ;x=a;y=b;coutx ,yendl;Point(Point &p)coutInit Point copy ;x=p.x;y=p.y;coutx ,yendl;Point()coutdistroy Point ;coutx ,yendl;float GetX();float GetY();void SetX(int a)x=a;void SetY(int a)y=a;void Draw();private:float x,y;float Point:GetX()return x;float Point:GetY()return y;void Point:Draw()coutDraw Point x ,yendl;int main()Point a(5,6);couta.GetX()endl;a.SetX(7);couta.GetX()endl;a.Draw();return 0;1.2类实验2【实验内容】设计一个简单的学生管理程序。其中每位学生有姓名,学号,成绩,程序通过类的公有方法对数据进行处理,实现了面向对象程序设计的“封装”功能。【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include #include using namespace std;class Student/声明Student类public: Student(int, string,float); /声明构造函数 void display( ); /声明输出函数private: int num; string name; float score;Student:Student(int n, string nam,float s) /定义构造函数num=n;name=nam;score=s;void Student:display( ) /定义输出函数coutendlnum:numendl; coutname:nameendl;coutscore:scoreendl;int main()Student s(1,wang,80.5);s.display();return 0;1.3类实验3【实验内容】设计一个基于对象的程序来求3个长方体的体积。提示:数据成员包括length,width,height。要求用成员函数实现一下功能:1)由键盘分别输入3个长方体的长宽高2)计算长方体的体积3)输出3个长方体的体积【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include using namespace std;class Rectanglepublic:Rectangle(int,int,int); /声明带参数的构造函数int volume( ); /声明计算体积的函数 private: int height; int width; int length;Rectangle:Rectangle(int h,int w,int len) /在类外定义带参数的构造函数height=h;width=w;length=len;int Rectangle:volume( ) /定义计算体积的函数return(height*width*length);int main( )/建立对象Rectangle1,并指定Rectangle1长、宽、高的值Rectangle Rectangle1(12,25,30);coutThe volume of Rectangle1 is Rectangle1.volume( )endl;/建立对象Rectangle2,并指定Rectangle2长、宽、高的值Rectangle Rectangle2(15,30,21); coutThe volume of Rectangle2 is Rectangle2.volume( )endl;return 0;实验二 类程序设计2.1静态成员实验1【实验内容】设计一个程序实现以下功能。商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。现已知当天3名销售员的销售情况为:销售员号(num)销售件数(quantity)销售单价(price)101523.51021224.5610310021.5请编写程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。(要求用静态数据成员和静态成员函数)【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用学习使用静态成员、内联成员函数体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include using namespace std;class Shoppublic:Shop(int num,float price,int count);Shop();static float average1();static float sum;static int total;private:int num;float price;int count;float Shop:sum = 0.0;int Shop:total = 0;Shop:Shop(int num,float price,int count)this-num = num;this-price = price;this-count = count;sum = sum + price * count;total = total + count;Shop:Shop()float Shop:average1()return sum * 1.0 / total;int main(int argc, char *argv)Shop s1(101,23.5,5);Shop s2(102,24.56,12);Shop s3(103,21.5,100);coutSum: Shop:sumendl;coutTotal: Shop:totalendl;coutAverage price: Shop:average1()endl;return 0;2.2静态成员实验1【实验内容】在实验1.2的基础上计算出学生的平均成绩。【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用学习使用静态成员、内联成员函数体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include #include using namespace std;class Studentpublic:Student(int, string,float);void display( ); static float average();private:int num; string name; float score;static float sum;static int count;float Student:sum=0;int Student:count=0;Student:Student(int n, string nam,float s) /定义构造函数num=n;name=nam;score=s;sum = sum +s;count+;void Student:display( ) /定义输出函数coutendlnum:numendl;coutname: name endl;coutscore: score endl;float Student:average()return (sum/count);int main()Student stud3=Student(1001,wang,70),Student(1002,sun,72),Student(1003,zhao,80);coutStudent:average()endl;return 0;2.3友元实验【实验内容】编写一个程序包含两个类,一个为Time类用来显示时间,一个为Date类用来显示日期,要求能在一个函数中将时间和日期都打印出来。a) 在Date中调用Time的display函数b) 在Date中将Time的display函数声明成友元函数,这样Time就能访问日期c) 在函数体外声明一个display函数,在Date和Time中分别将此函数声明为友元函数。d) 在Date中将Time声明成友元类,这样就能访问Time 的时间了【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用学习使用友元体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include using namespace std;class Date;class Timepublic:Time(int h,int m,int s):hour(h),minute(m),sec(s);void display(Date &);private:int hour;int minute;int sec;class Datepublic:Date(int h,int m,int s):year(h),month(m),day(s);friend void Time:display(Date &);private:int year;int month;int day;void Time:display(Date &d)coutd.year/d.month/d.dayendl;couthour:minute:secendl;int main()Time t1(10,13,52);Date d1(2009,8,3);t1.display(d1);return 0;2.4常对象实验【实验内容】对于实验1.3所写的长方体类做修改。使其实现以下功能:将长宽高变量定义成常数,这样一旦定义就不能修改了。在main函数中添加一个常对象,输出这个对象的体积【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用学习使用常对象,常成员函数,常数据成员体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include using namespace std;class Boxpublic:Box(int h,int w,int len):height(h),width(w),length(len) /声明带参数的构造函数int volume( ) const; /声明计算体积的函数 private: const int height; const int width; const int length;int Box:volume( ) const /定义计算体积的函数return(height*width*length);int main( )const Box box1(12,25,30); /建立对象box1,并指定box1长、宽、高的值coutThe volume of box1 is box1.volume( )endl;return 0;实验三 类组合和继承3.1类的组合实验1【实验内容】设计一个程序实现以下功能。将point类作为line的数据成员,实现对line的定义。【实验目的】学习结构的定义和使用学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用学习使用类组合体会面向对象程序设计方法【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include using namespace std;class Pointpublic:Point(float a=0,float b=0)coutInit Point ;x=a;y=b;coutx ,yendl;Point(Point &p)coutInit Point copy ;x=p.x;y=p.y;coutx ,yendl;Point()coutdistroy Point ;coutx ,yendl;float GetX();float GetY();void SetX(int a)x=a;void SetY(int a)y=a;void Draw();private:float x,y;float Point:GetX()return x;float Point:GetY()return y;void Point:Draw()coutDraw Point x ,yendl;class Linepublic:Line()coutInit Lineendl;Line(Point a,Point b):p1(a),p2(b)coutInit Lineendl;/*Line(float a,float b,float c,float d)coutInit Lineendl;p1.SetX(a);p1.SetY(b);p2.SetX(c);p2.SetY(d);*/Line(float a,float b,float c,float d):p1(a,b),p2(c,d)coutInit Lineendl;Line()coutdistroy Lineendl;void SetP1(int a,int b)p1.SetX(a);p1.SetY(b);void SetP2(int a,int b)p2.SetX(a);p2.SetY(b);void SetP1(Point &p,int a,int b)p.SetX(a);p.SetY(b);void Draw();private:Point p2,p1;void Line:Draw()coutDraw Lineendl;coutp1.GetX(),p1.GetY()endl;coutp2.GetX(),p2.GetY()endl;int main()Line l;l.SetP1(1,2);l.SetP2(3,4);l.Draw();Point a(5,6);Point b(7,8);Line l1(a,b);l1.Draw();Line l3(2,2,5,5);l3.Draw();return 0;3.2继承与派生1【实验内容】以已有的学生类为基类,创建一个graduate类。编写一个程序实现以下功能:1)graduate类增加了新的变量:tutor,wage2) graduate类也提供一个display函数,用来打印研究生类的信息3)定义基类指针,去完成对display函数的调用。【实验目的】了解类的两种使用方式学习从现有类派生出新类的方式了解在派生类中如何使用基类的成员了解基类成员在派生类中的访问控制【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能#include #include using namespace std;class Datepublic:Date(int y,int m,int d):year(y),month(m),day(d)void Display()coutyear/month/daynum = num;this-score = score;sum +=score;n+;void Display()coutname num score ;birth.Display();void SetNum(int n)num = n;static void Average();private:char name20;int num;int score;Date birth;static float sum;static int n;float Stu:sum = 0;int Stu:n =0;void Stu:Average()coutsum/nendl;class Graduate:public Stupublic:Graduate(char *a,int b,int c,int d,int e,int f,char *h,int i):Stu(a,b,c,d,e,f),wage(i)coutInit Graduateendl;couthendl;strcpy(tutor,h);couttutor;void func()SetNum(0);void Display()Display();couttutor wageDisplay();3.3继承与派生2【实验内容】设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。【实验目的】了解类的两种使用方式学习从现有类派生出新类的方式了解在派生类中如何使用基类的成员了解基类成员在派生类中的访问控制【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】circle类包含私有数据成员radius和求圆面积的成员函数getarea();table类包含私有数据成员height和返回高度的成员函数getheight()。roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。编写代码实现功能:#include #include using namespace std;class circle double radius; public: circle(double r) radius=r; double getarea() return radius*radius*3.14; ; class table double height; public: table(double h) height=h; double getheight() return height; ; class roundtable : public table,public circle char *color; public: roundtable(double h, double r, char *c) : circle (r) , table (h) color=new charstrlen(c)+1; strcpy (color, c); char *getcolor() return color; ; int main() roundtable rt(0.8,1.2,red); cout height: rt.getheight() M endl; cout area: rt.getarea() M2 endl; cout color: rt.getcolor() endl; 实验四 多态4.1重载运算符(双目运算符)【实验内容】定义一个字符串String类,用来存放不定长的字符串,重载运算符“=”“”,用于两个字符串的等于, 小于和大于的比较。【实验目的】了解类的两种使用方式了解运算符重载了解如何使用重载运算符【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include #include /using namespace std;class Stringfriend bool operator(String &string1,String &string2);friend bool operator(String &string1,String &string2)if( strcmp(string1.p,string2.p) 0)return true;elsereturn false;bool operator(String &string1,String &string2)if( strcmp(string1.p,string2.p) 0)return true;elsereturn false;bool operator=(String &string1,String &string2)if( strcmp(string1.p,string2.p) = 0)return true;elsereturn false;void String:display()cout(string1,string2) = 1)string1.display();cout;string2.display();coutendl;else if(operator(string1,string2) = 1)string1.display();cout;string2.display();coutendl;else if(operator=(string1,string2) = 1)string1.display();cout=;string2.display();coutendl;int main()String string1(hello),string2(book),string3(computer),string4(book);compare(string1,string2);compare(string1,string3);compare(string2,string4);return 0;4.2重载运算符(单目运算符)【实验内容】有一个Time类,包含数据成员分秒,模拟秒表,每次走一秒,满六十秒就进一分钟,此时秒表又从0开始。输出分秒的值。(前置、后置自增运算符)【实验目的】了解类的两种使用方式了解运算符重载了解如何使用重载运算符【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码实现功能:#include using namespace std;class Timepublic:Time()hour =0 ;minute = 0 ; sec = 0;Time(int h,int m,int s):hour(h),minute(m),sec(s)Time operator+();Time operator+(int );Time operator-();Time operator-(int );void display()coutminute:secendl;private:int hour;int minute;int sec;Time Time:operator+()if(sec59)sec+;elsesec =0;if(minute59)minute+;elseminute=59;if(hour23)hour+;elsehour=0;return *this;Time Time:operator+(int)Time temp(*this);if(sec59)sec+;elsesec =0;if(minute59)minute+;elseminute=59;if(hour0)sec-;elseif(minute0)minute-;elseif(hour0)hour-;elsehour=23;minute=59;sec=59;return *this;Time Time:operator-(int )Time temp(*this);if(sec0)sec-;elseif(minute0)minute-;elseif(hour0)hour-;elsehour=23;minute=59;sec=59;return temp;int main()Time time;int i=0;while(i0)time-;time.display();i-;return 0;4.3虚基类【实验内容】设计一个虚基类shape,由它派生出3个派生类:point,circle,cylinder。用虚函数分别计算几种图形面积。要求用基类指针数组,使它的每一个元素指向一个派生类对象。【实验目的】了解类的两种使用方式学习从现有类派生出新类的方式了解在派生类中如何使用基类的成员了解基类成员在派生类中的访问控制【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】编写代码,实现相应功能#include using namespace std;class Shapepublic:virtual float area( ) const return 0.0; virtual float volume() const return 0.0; virtual void shapeName() const=0; ;class Point:public Shape/Point是Shape的公用派生类public: Point(float=0,float=0); void setPoint(float,float); float getX( ) const return x; float getY( ) const return y; virtual void shapeName( ) const coutPoint:; friend ostream & operator(ostream &,const Point &);protected: float x,y;Point:Point(float a,float b)x=a;y=b;void Point:setPoint(float a,float b)x=a;y=b;ostream & operator(ostream &output,const Point &p)outputp.x,p.y;return output;class Circle:public Pointpublic: Circle(float x=0,float y=0,float r=0); void setRadius(float); float getRadius( ) const; virtual float area( ) const; virtual void shapeName( ) const coutCircle:; friend ostream &operator(ostream &,const Circle &);protected: float radius;Circle:Circle(float a,float b,float r):Point(a,b),radius(r) void Circle:setRadius(float r) radius = r;float Circle:getRadius( ) const return radius;float Circle:area( ) const return 3.14159*radius*radius;ostream &operator(ostream &output,const Circle &c)outputc.x,c.y, r=c.radius;return output;class Cylinder:public Circlepublic: Cylinder (float x=0,float y=0,float r=0,float h=0); void setHeight(float); virtual float area( ) const; virtual float volume( ) const; virtual void shapeName( ) const coutCylinder:; /对虚函数进行再定义 friend ostream& operator(ostream&,const Cylinder&); protected: float height;Cylinder:Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h) void Cylinder:setHeight(float h)height=h;float Cylinder:area( ) constreturn 2*Circle:area( )+2*3.14159*radius*height;float Cylinder:volume( ) constreturn Circle:area( )*height;ostream &operator(ostream &output,const Cylinder& cy)outputcy.x,cy.y, r=cy.radius, h=cy.height;return output;int main( )Point point(3.2,4.5);Circle circle(2.4,1.2,5.6);Cylinder cylinder(3.5,6.4,5.2,10.5); point.shapeName(); coutpointendl;circle.shapeName(); coutcircleendl;cylinder.shapeName(); coutcylinderendlshapeName( ); coutx=point.getX( ),y=point.getY( )narea=area( ) nvolume=volume()shapeName( );coutx=circle.getX( ),y=circle.getY( )narea=area( ) nvolume=vo

温馨提示

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

评论

0/150

提交评论