实验三类与对象(2)【实验类型】验证性实验【实验课时】2学时【实验目的】(1)掌握对象数组定义与使用方法。(2)理解对象指针的概念,学会用指针引用对象。(3)了解this指针的工作方式。(4)掌握静态数据成员和静态成员函数的基本使用方法。(5)理解友元与友元函数的作用,掌握其使用方法。【实验环境】硬件:计算机软件:MicrosoftVisualC++6.0【实验内容】1、按要求阅读、修攺、调试和运行以下程序。(1)实验内容①定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日最低价、当日开盘价和当日收盘价。尽量发挥想象力,为该类设计成员函数。②在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。③使用股票类Stock,定义一个对象数组存放连续5个交易日的股票信息。编写一个主函数,计算两个Stock对象(前后两日)的当日收盘价计算当日涨幅。用指针引用对象数组中的两个对象。在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。④在Stock类中定义一个静态数据成员,记录当前Stock对象的数量。⑤设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_stock赋值的对象。⑥定义一个友元函数计算Stock对象的当日开盘价是否高于当日收盘价。若是,返回真,否则,返回假。(2)实验程序及运行结果(参考)①以当日收盘价计算该股票今天的涨幅#includeiostream.hclassStock{public:Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock(intn,doublema,doublemi,doubleb,doublee);doubleGet_End();voidShow_Stock();private:intNumber;doubleMax,Min,Begin,End;};Stock::Stock(intn,doublema,doublemi,doubleb,doublee){Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Set_Stock(intn,doublema,doublemi,doubleb,doublee){Number=n;Max=ma;Min=mi;Begin=b;End=e;}doubleStock::Get_End(){returnEnd;}voidStock::Show_Stock(){coutNumber\t;coutMax\t;coutMin\t;coutBegin\t;coutEndendl;}voidmain(){Stocks1(1,4.18,4.00,4.05,4.09);Stocks2(2,4.41,4.03,4.04,4.40);cout\n(s2.Get_End()-s1.Get_End())/s1.Get_End()*100%endl;}②定义一个对象数组存放连续5个交易日的股票信息#includeiostream.hconstintN=2;classStock{public:Stock(intn,doublema,doublemi,doubleb,doublee);Stock();//增加无输入值的构造函数voidSet_Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock();doubleGet_End();voidShow_Stock();private:intNumber;doubleMax,Min,Begin,End;};Stock::Stock(intn,doublema,doublemi,doubleb,doublee){Number=n;Max=ma;Min=mi;Begin=b;End=e;}Stock::Stock()//无输入值时,将其都清零{Number=0;Max=0;Min=0;Begin=0;End=0;}voidStock::Set_Stock(intn,doublema,doublemi,doubleb,doublee){Number=n;Max=ma;Min=mi;Begin=b;End=e;}doubleStock::Get_End(){returnEnd;}voidStock::Show_Stock(){coutNumber\t;coutMax\t;coutMin\t;coutBegin\t;coutEndendl;}voidStock::Set_Stock(){coutNumber:;cinNumber;coutMax:;cinMax;coutMin:;cinMin;coutBegin:;cinBegin;coutEnd:;cinEnd;}voidmain(){inti;Stocks1[5],*p;for(i=0,p=s1;iN;i++,p++)p-Set_Stock();for(i=0,p=s1;iN;i++,p++)p-Show_Stock();for(i=1,p=s1+1;iN;i++,p++)cout\n(p-Get_End()-(p-1)-Get_End())/(p-1)-Get_End()*100%endl;}③定义一个静态数据成员,记录当前Stock对象的数量#includeiostream.hconstintN=2;classStock{public:Stock(){}Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock();doubleGet_End();voidShow_Stock();intGet_N_count();private:staticintN_count;//静态数据成员intNumber;doubleMax,Min,Begin,End;};intStock::N_count=0;//此处定义时不需要加上staticStock::Stock()//无输入值时,将其都清零{N_count++;Number=0;Max=0;Min=0;Begin=0;End=0;}Stock::Stock(intn,doublema,doublemi,doubleb,doublee){N_count++;Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Set_Stock(intn,doublema,doublemi,doubleb,doublee){Number=n;Max=ma;Min=mi;Begin=b;End=e;}doubleStock::Get_End(){returnEnd;}voidStock::Show_Stock(){coutNumber\t;coutMax\t;coutMin\t;coutBegin\t;coutEndendl;}voidStock::Set_Stock(){coutNumber:;cinNumber;coutMax:;cinMax;coutMin:;cinMin;coutBegin:;cinBegin;coutEnd:;cinEnd;}intStock::Get_N_count(){returnN_count;}voidmain(){inti;Stocks1[5];Stock*p;for(i=0,p=s1;iN;i++,p++)p-Set_Stock();for(i=0,p=s1;iN;i++,p++)p-Show_Stock();for(i=1,p=s1+1;iN;i++,p++)cout\n(p-Get_End()-(p-1)-Get_End())/(p-1)-Get_End()*100%;cout\np-Get_N_count()endl;}④设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock对象的引用#includeiostream.hconstintN=2;classStock{public:Stock(){}Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock();voidAssign_Stock(Stock&p);voidShow_Stock();private:staticintN_count;longNumber;doubleMax,Min,Begin,End;};intStock::N_count=0;Stock::Stock()//无输入值时,将其都清零{N_count++;Number=0;Max=0;Min=0;Begin=0;End=0;}Stock::Stock(intn,doublema,doublemi,doubleb,doublee){N_count++;Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Set_Stock(intn,doublema,doublemi,doubleb,doublee){N_count++;Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Assign_Stock(Stock&p){if(this!=&p){Number=p.Number;Max=p.Max;Min=p.Min;Begin=p.Begin;End=p.End;}}voidStock::Show_Stock(){coutNumber\t;coutMax\t;coutMin\t;coutBegin\t;coutEndendl;}voidStock::Set_Stock(){coutNumber:;cinNumber;coutMax:;cinMax;coutMin:;cinMin;coutBegin:;cinBegin;coutEnd:;cinEnd;}voidmain(){Stocks1(4,7.88,7.48,7.56,7.68);Stocks2;s2.Assign_Stock(s1);s2.Show_Stock();}⑤定义一个友元函数计算Stock对象的当日开盘价是否高于当日收盘价。#includeiostream.hconstintN=2;classStock{public:Stock(){}Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock(intn,doublema,doublemi,doubleb,doublee);voidSet_Stock();voidAssign_Stock(Stock&p);voidShow_Stock();doubleGet_max(){returnMax;}//定义返回Max的函数doubleGet_End(){returnEnd;}//定义返回End的函数intGet_N_count(){returnN_count;}//