您好,欢迎访问三七文档
实验二一、实验目的1、学习类与对象的定义,掌握类与对象的使用方法。2、学习数据成员与成员函数的访问方式,理解构造函数和析构函数的定义与执行过程,学会构造函数的重载方法。3、掌握数组与指针的定义与使用方法,理解数组与指针的存储分配与表示。4、掌握用指针和引用向函数传递参数。5、掌握静态数据成员和静态成员函数的使用。6、理解友元与友元函数的作用与使用方法。二、实验内容1、下面是一个计算器类的定义,请完成该类成员函数的实现。classCounter{public:Counter(intnumber);voidincrement();//给原值加1voiddecrement();//给原值减1intgetValue();//取得计数器值intprint();//显示计数private:intvalue;};#includeiostream.hclasscount{public:counter(intnumber);voidincrement();voiddecrement();intgetvalue(int);intprint();private:intvalue;};voidcount::increment(){inta=value+1;}voidcount::decrement(){intb=value-1;}intcount::getvalue(ints){value=s;return0;}intcount::print(){coutvalue+1=value+1endl;coutvalue-1=value-1endl;return0;}voidmain(){counts;s.getvalue(520);s.print();}2、根据注释语句的提示,实现类Date的成员函数。#includeiostreamusingnamespacestd;intyear,month,day;classDate{public:voidprintDate();//显示日期voidsetDay(intd);//设置日的值voidsetMonth(intm);//设置月的值voidsetYear(inty);//设置年的值private:intday,month,year;};voidDate::setDay(intd){day=d;}voidDate::setMonth(intm){month=m;}voidDate::setYear(inty){year=y;}voidDate::printDate(){coutyear”年”month”月”day”日”endl;}intmain(){DatetestDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2014);testDay.printDate();return0;}3、建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol(),用来显示每个cylinder对象的体积。#includeiostreamusingnamespacestd;#definePI3.14159classcylinder{public:cylinder(doubler,doubleh){radius=r;height=h;}voidvol();voidgetname(){coutname'';}private:charname;doubleradius,height,v;};voidcylinder::vol(){v=PI*radius*radius*height;coutvolumeis:v'\n';}intmain(){cylinderobj(2.4,1.8);coutobj's;obj.vol();cylindera(2.2,1.9);couta's;a.vol();return0;}4、构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。显示每个对象的qu*price值。#includeiostream.hclassbook{public:book(intp,intq){qu=q;price=p;}voidprint(){coutqu*priceendl;}private:intqu;intprice;ints;};intmain(){booka(1,10);a.print();bookb(2,20);b.print();bookc(3,30);c.print();bookd(4,40);d.print();booke(5,50);e.print();return0;}5、修改上题,通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值。#includeiostream.hclassbook{public:book(intp){qu=p;price=qu*10;}intprint(){s=qu*price;returns;}private:intqu;intprice;ints;};intmain(){booka[5]={1,2,3,4,5};book*p;p=&a[4];for(inti=4;i=0;i--){coutp-print()endl;p--;}return0;}6、构建一个类Stock,含字符数组stockcode[]及整型数据成员quan、双精度型数据成员price。构造函数含3个参数:字符数组na[]及q、p。当定义Stock的类对象时,将对象的第一个字符串参数赋给数据成员stockcode,第2个和第3个参数分别赋给quan和price。未设置第2个和第3个参数时,quan的值为1000,price的值为8.98。成员函数print()使用this指针,显示对象内容。#includeiostream.h#includestringclassStock{public:Stock(charna[10],intq=1000,doublep=8.98);voidprint();private:charstockcode[10];intquan;doubleprice;};Stock::Stock(charna[10],intq,doublep){strcpy(stockcode,na);quan=q;price=p;}voidStock::print(){coutthis-stockcode,this-quan,this-price'\n';}voidmain(){Stockm(bearmax,777,6.66);m.print();Stockn(bearmac);n.print();Stocka(bearking,9);a.print();}7、参考课本例子,建立一个源程序文件,在此文件中建立一个新的类,将新建的类命名为Rect。【要求】(1)向Rect类中添加数据成员及成员函数,并完善成员函数的功能。如设计一个Area_int()函数,计算边长为整型的长方形的面积;设计一个Area_double()函数,计算边长为double型的长方形的面积。(2)重载构造函数。一种构造函数用整型变量记录长方形的长和宽,另一种构造函数用double型记录。(3)体现对象的构造和析构过程。例如,在构造函数中用cout”Iamtheconstructor!”endl;在析构函数中输出cout”Iamthedestructor”endl。(4)在main()函数中定义两个Rect类的对象,一个对象用实例实现(就像定义普通的变量一样),另一个对象用指针实现(利用关键字new,给指针分配内存空间)。并用不同的参数,以调用不同的构造函数体现构造函数的重载。#includeiostream.hclassRect{public:intArea_int();doubleArea_double();Rect(doublelength,doublewidth);Rect(intlength,intwidth);virtual~Rect();private:intnLength;intnWidth;doubledLength;doubledWidth;};intRect::Area_int(){ints;s=nLength*nWidth;cout整型的长方形的面积:sendl;return0;}doubleRect::Area_double(){doublek;k=dLength*dWidth;cout双精度型的长方形的面积:kendl;return0;}Rect::Rect(intlength,intwidth){nLength=length;nWidth=width;coutIamtheBear_constructor!endl;}Rect::~Rect(){coutIamtheBear_destructor!!endl;}Rect::Rect(doublelength,doublewidth){dLength=length;dWidth=width;coutIamtheBear_constructor!endl;}voidmain(){Recta(4,4),b(7.8,6.8);a.Area_int();b.Area_double();Rect*p=newRect(3,4);p-Area_int();deletep;Rect*q=newRect(3.2,3.4);q-Area_double();deleteq;}8、声明一个Student,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(学生人数);还包括一个成员函数account()用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数sum()用于返回学生的成绩之和,另一个静态成员函数average()用于求全班成绩的平均值。在main()函数中,输入某班学生的成绩,并调用上述函数求出全班学生的成绩之和和平均分。#includeiostream.hclassstudent{public:voidaccount(double);staticdoublesum();staticdoubleaverage();voidprint();private:doublescore;staticdoubletotal_score;staticintcount;staticdoubleave;};voidstudent::account(doublem=100){score=m;total_score=total_score+m;++count;}doublestudent::sum(){return(total_score);}doublestudent::average(){ave=total_score/count;returnave;}voidstudent::print(){cout人数为:countendl;cout总成绩为:total_score平均成绩为:aveendl;}intstudent::count=0;doublestudent::total_score=0.0;doublestudent::ave=0.0;voidmain(){studentbear1;bear1.account(97);bear1.sum();bear1.average();studentbear2;be
本文标题:实验二
链接地址:https://www.777doc.com/doc-3221651 .html