面向对象程序设计-C++试验报告_第1页
面向对象程序设计-C++试验报告_第2页
面向对象程序设计-C++试验报告_第3页
面向对象程序设计-C++试验报告_第4页
面向对象程序设计-C++试验报告_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

C++试验报告试验一VisualC++6.0开发环境应用

入门

(验证性试验 2学时).目的要求:了解VisualC++6.0的特点,熟识了解VisualC++6.0的开发环境,学习使用VisualC++6.0编写标准的C++掌握台应用程序。.试验内容:使用VisualC++来建立一个非图形化的标准C++程序,编译、运行教材中的例3-3,用公式法求解PI的数值,并尝试采用其他方法求解并获得相同的结果。n=16arctan(l/5)-4arctan(1/239)arctan(x)=x-x3/3+x5/5-x7/7+,,•五二?(1)源代码和说明:#include<iostream>usingnamespacestd;doublearctan(doublex){doublesqr=x*x;doublee=x;doubler=0;inti;while(e/i>le-15){doublef=e/i;r=(i%4==l)?r+f:r-f;e=e*sqr;i+=2;}returnr;)intmain()(doublea=16.0*arctan(l/5.0);doubleb=4.0*arctan(1/239.0);cout«"PI="«a-b«endl;return0;)2)运行结果:试验二 C++简洁程序设计试验(验证性试验4学时).目的要求:会编写简洁的C++程序;复习基本数据类型变量和常量的应用;复习运算符与表达式的应用;复习结构化程序设计基本掌握结构的应用;复习自定义数据类型的应用;练习使用简洁的输入输出;观看头文件的作用;学会使用VC6.0开发环境中的debug调试功能;娴熟程序设计中的技巧;.试验内容:1)给定一个字符变量输出其二进制形式。例如chara=,a,;其二进制为00100001。1)源代码和说明#include<iostream>usingnamespacestd;intmain()(charch;intj,k[8]={0};cout<<"请输入一个字符:"<<endl;cin»ch;for(j=0;j<=7;j++){if(ch){if(ch%2==0)k[j]=0;elsech=(ch-(ch%2))/2;for(j=7;j>=0;j-)cout«k[j];}cout«endl;}2)运行结果:2)给定一个字符变量输出其二进制反转形式。例如chara=,a,;其二进制为二10制为,反转形式为10000100。(提示:使用位运算)1)源代码和说明:#include<iostream>usingnamespacestd;intmain()(charch;intj,k[8]={0};cout<<"请输入一个字符:"《endl;cin»ch;for(j=0;j<=7;j++)if(ch)(if(ch%2==0)k[j]=0;elsech=(ch-(ch%2))/2;cout«ch«"二进制是:for(j=7;j>=0;j-){cout«k[j];)cout«endl;for(j=0;j<=7;j++){k[j]=kuri;)cout<<"二进制反码是:for(j=7;j>=0;j-){cout«k[j];)cout«endl;试验结果:3)袋子里有红,黄,蓝,绿,黑五种不同颜色的球若干个,从中取出三个不同颜色的球,编程输出每种取法及统计不同取法的总数(提示:使用枚举)1)源代码和说明;#include<iostream>usingnamespacestd;enumcolor{red=0,yellow,blue,green,black};boolisNum(inti)(intj=0;for(intk=0;k〈6;k++)if(i»k&l==l)j++;returnj==3?true:false;}voidprintResult(inti){for(intk=O;k<5;k++){if(i»k&l==l)switch(k)(casered:cout«nred”;break;caseyellow:cout«nyellow”;break;caseblue:cout«nblue”;break;casegreen:cout«"greenbreak;caseblack:cout«"blackbreak;default:cout«nerror!!n;break;}}cout«""«endl;)voidmain(){intj=0;cout«"可能的方案有:for(inti=0;i<=32;i++){if(isNum(i)){printResult(i);j++;}}cout<<"共有种方案"<<endl;)2)试验结果:试验三函数的应用试验(设计性试验 2学时).目的要求:把握函数的定义和调用方法;练习重载函数的使用;练习使用系统函数;学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。.试验内容:1)用递归的方法编写函数求Fibonacci级数,观看递归调用的过程。源代码和说明:#include<iostream>usingnamespacestd;intFibonacci(inti)(if(i==l)return0;else(if(i==2)return1;elsereturnFibonacci(i-1)+Fibonacci(i-2);}}intmain()(intn,j,i;cin»n;for(i=l;i<=n;i++)(j=Fibonacci(i);cout«j«endl;}试验结果:2)编写重载函数Maxi可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。源代码和说明:#include<iostream>usingnamespacestd;intmaxl(inta,intb);intmaxi(intq,intw,inte);doublemaxi(doublei,doublej);doublemaxi(doublek,doubleu,doublep);voidmain()(inta,b,q,w,e;doublei,j,p,u,k;cout«npleaseentertwo(int)numbers:n«endl«endl;cin»a»b;maxl(a,b);cout«°pleaseenterthree(int)numbers:n«endl«endl;cin»q»w»e;maxl(q,w,e);cout«npleaseentertwo(double)numbers:n«endl«endl;cin»i»j;maxl(i,j);cout«npleaseenterthree(double)numbers:M«endl«endl;cin»k»u»p;maxl(k,u,p);)intmaxl(inta,intb)(if(a>b){cout«nthemaxnumber:H«a«endl;}elsecout«nthemaxnumber:"«b«endl;return0;}intmaxi(intq,intw,inte){inttemp;if(q>=w)(temp=q;if(temp>=e){cout«nthemaxnumber:H«temp«endl;)elsecout«Mthemaxnumber:«e«end1;}elsetemp=w;if(temp>=e)(cout«"themaxnumber:*'«temp«endl;)elsecout«nthemaxnumber:n«e«endl;return0;doublemax1(doublei,doublej)if(i>j){cout«°themaxnumber:n«i«endl;}elsecout«nthemaxnumber:M<<j«endl;return0;}doublemaxi(doublek,doubleu,doublep)inttemp;if(k>=u)(temp=k;if(temp>=p)(cout«nthemaxnumber:"«temp«endl;)elsecout«nthemaxnumber:n«p«endl;elsetemp=u;if(temp>=p)(cout«nthemaxnumbe亡”<vtempv<endl;)elsecout«nthemaxnumber:'*«p«endl;return0;试验结果:3)写一个函数,能够接收身高、体重等数据,能够依据身高、体重检测身体状况,胖,瘦等。源代码和说明#include<iostream>usingnamespacestd;voidSHENGC(doublei,doublej)(if(i<j*32)cout«”这个人偏胖"«endl;else{if(i=j*32)coutvv"这个人适中"vvendl;elsecoutvv”这个人偏瘦偏vendl;intmain()doublei,j;coutvv”请输入身高(cm)和体重(kg)H«endl;

cin»i»j;SHENGC(i,j);}2)试验结果试验四 类与对象试验(设计性试验 4学时).目的要求:把握类的定义和使用;把握类对象的声明;复习具有不同访问属性的成员的访问方式;观看构造函数和析构函数的执行过程;学习类组合使用方法;使用VC++的debug调试功能观看程序流程,跟踪观看类的构造函数、析构函数、成员函数的执行挨次。.试验内容:1)定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU—Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7}.frequency为单位是MHz的整型数,voltage为浮点型的电压值。观看构造函数和析构函数的调用挨次。源代码和说明:#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU(public:CPU();〜CPU();voidrun(enumCPU_Rankr,intf,doublev);voidstop();private:enumCPU_RankRank;intfrequency;doublevoltage;);CPU::CPU(){cout«"调用构造函数"<<endl;)CPU::~CPU(){ cout<<"调研析构函数"<<endl;)voidCPU::run(enumCPU_Rankr,intf,doublev)Rank=r;frequency=f;voltage=v;voidCPU::stop()(cout«Rank«endl;cout«frequency«endl;cout«voltage«endl;)intmain()(enumCPU_Rankt=Pl;CPUc;c.run(t,2,4.865);c.stopO;}试验结果:i.定义一个简洁的Computer类,有数据成员芯片(cpu)>内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,观看这些类的构造函数和析构函数的调用挨次。源代码和说明:#include<iostream>usingnamespacestd;classCPU(public:CPU()(cout«"CPU构造函数被调用"<<endl;)〜CPU。{cout«"CPU析构函数被调用"<<endl;));classRAM(public:RAM()(cout«"RAM构造函数被调用“<Vendl;)~RAM(){cout«"RAM析构函数被调用"<<endl;));classCDROMpublic:CDROM()(cout«"CDROM构造函数被调用"<<endl;}~CDROM()(cout«"CDROM析构函数被调用"<<endl;}};classComputerIprivate:CPUcpu;RAMram;CDROMcdrom;public:Computer(){cout<<”Computer构造函数被调用"<<endl;)-Computer。(cout«”Computer析构函数被调用"vvendl;}voidrun();voidstop();};intmain(){ComputerC;}ii.定义一个Body类,拥有身高、体重等数据,能够依据身高、体重检测身体状况,要求设计相应的函数成员和构造函数。源代码和说明:#include<iostream>usingnamespacestd;classbody{public:body()cout<<"构造函数被调用"<<endl;)~body(){cout<<"析构函数被调用"<<endl;)voidset(doubleh,doublew)HIGH=h;WEIGHT=w;voidshow()(cout«"HIGH="«HIGH«endl;cout<<"WEIGHT="«WEIGHT«endl;}private:doubleHIGH;doubleWEIGHT;};intmain(){doublei,j;bodya;cout«"请输入身高(cm)和体重(kg)"«endl;cin»i»j;a.set(i,j);a.show();)试验结果:试验五 C++程序的结构试验(设计性试验 2学时)1.目的要求:观看程序运行中变量的作用域、生存期和可见性;学习类的静态成员的使用;学习多文件结构在C++程序中的使用01)实现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,纪录已定义的客户数量;定义静态函数ChangeServerName。转变服务器名称。在头文件client.h中定义类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观看相应的成员变量取值的变化状况。(需要给出main函数代码和运行结果)//cilent.h#include<iostream>usingnamespacestd;classClient{private:staticcharSeverName[10];staticintClientnum;public:Client()(cout«"Client构造函数被调用"<<endl;Clientnum++;}~Client()cout«MClient析构函数被调用"vvendl;Clientnum—;}staticvoidChangeServernameO(inti;cout<〈”请输入服务器的名字:n«endl;cin»SeverName;)voidshow();};intClient::Clientnum=O;charClient::SeverName[10]=nabcdn;//Client.cppvoidClient::show()(coutvv”该用户机的服务器端名字是:“<vendl;cout«SeverName«endl;cout«n用户数量有:"«endl;cout«Clientnum«endl;)//Client.exevoidmain()(Client::ChangeServername();Clienta;a.show();Clientb;b.show();试验结果:完善Body类,将检测胖瘦的标准定义为静态数据

成员并设计相应的静态成员函数。(最好给出main函数代码和运行结果)源代码和说明:#include<iostream>usingnamespacestd;classbody(public:body(){cout«”body构造函数被调用"vvendl;)〜body。(coutvv”body析构函数被调用"vvendl;voidset(doublei,doublej);voidshow();staticvoidset()cout«H请输入推断胖瘦的标准:n«endl;cin»body::i;cout<<”检测胖瘦的标准是:”《endl;cout«body::i«endl;}private:doubleheigh;doubleweight;staticdoublei;);doublebody::i=3.2;voidbody::set(doublei,doublej)(heigh=i;weight=j;}voidbody::show(){coutvv”这个人偏n«endl;if(heigh/weight>body::i)cout<<"瘦"vvendl;else{if(heigh/weight==body::i)cout«“正常”<<endl;elsecoutvv“胖”<vendl;intmain()(doublei,j;bodya;body::set();cout«”请输入身高(cm)和体重(kg):"《endl;cin»i»j;a.set(i,j);a.show();试验结果:iv.定义Boat;和Car两个类,二者都有weight属性,定义二者的一个友元函数totalWeight(),计算二者的和。源代码和说明:#include<iostream>usingnamespacestd;classBoat(public:Boat()cout«,fBoat构造函数被调用"<<endl;}cout«nBoat析构函数被调用"v<endl;}voidset(doublei);frienddoubleTotalweight(classBoat&j,classCar&k);private:doubleweight;);一classCar(public:Car(){cout«nCart构造函数被调用”《endl;)〜Car()(cout«℃art析构函数被调用"vvendl;}voidset(doublei);frienddoubleTotalweight(classBoat&j,classCar&k);private:doubleweight;);voidBoat::set(doublei)(this->weight=i;}voidCar::set(doublei)(this->weight=i;}doubleTotalweight(classBoat&j,classCar&k)(doublem;m=j.weight+k.weight;returnm;intmain()doublej;Boatb;Carc;coutvv”请输入Boat类的重量”vvendl;cin»j;b.set(j);cout<v”请输入Cart类的重量”<<endl;cin»j;c.set(j);cout<v”两者重量总和是"vvendl;cout«Totalweight(b,c)«endl;}试验结果:试验六数组、指针与字符串试验(设计性试验 4学时).目的要求:学习使用数组;学习字符串数据的组织和处理;学习标准C++库的使用;把握指针的使用方法;练习通过debug观看指针的内容及其所指的对象的内容;练习通过动态内存安排实现动态数组,并体会指针在其中的作用;分别使用字符数组和标准C++库练习处理字符串的方法。.试验内容:1)编写一个用于3义3数组保存矩阵的类,具有矩阵显示和矩阵转置函数。源代码和说明:#include<iostream>usingnamespacestd;classpoint(public:point()(cout«"point构造函数被调用"《endl;}~point(){cout«"point析构函数被调用"《endl;)voidset();voidzhanz();voidshow();private:intp[3][3];};voidpoint::set()(inti,j;for(i=0;i<=2;i++)for(j=0;j<=2;j++)cin»p[i][j];voidpoint::show()inti,j;for(i=0;i<=2;i++)(for(j=0;j<=2;j++)cout«p[i][j]«"cout«endl;}voidpoint::zhanz()(inti,j,k=O;intt[9];for(i=0;i<=2;i++)(for(j=0;j<=2;j++)t[k++]=p[j][i];for(k=0;k<=8;k++)(cout«t[k]«nif(!((k+l)%3))cout«endl;intmain()pointjuzhen;coutvv”请输入3*3矩阵的数据yvendl;juzhen.set();cout«n矩阵是:”<Vendl;juzhen.show();coutvv”转置后矩阵是:"<<endl;juzhen.zhanzQ;

试验结果:V.使用动态内存安排生成动态数组来重新完成上题,V.使用指针实现函数的功能。源代码和说明:#include<iostream>usingnamespacestd;classzhuz(public:zhuz(){ cout«nzhuz构造函数被调用"v<endl;p=newint[3][3];)〜zhuz()cout«"zhuz析构函数被调用"wendl;delete[]p;}voidset()(inti,j;cout<<"请输入3*3矩阵数据"<<endl;for(i=0;i<=2;i++)(for(j=0;j<=2;j++)cin»p[i][j];}}voidshow()(inti,j;for(i=0;i<=2;i++)(for(j=0;j<=2;j++){cout«p[i][j]«"}cout«endl;))voidzhuanz()(inti,j,k;for(i=0;i<=2;i++){for(j=O;j<=ij++)(k=p[j][i];p[j][i]=p[i皿;p[i][j]=k;})for(i=0;i<=2;i++)for(j=0;j<=2;j++)

cout«pfil[j]«n}cout«endl;private:int(*p)[3];};intmain()(zhuza;a.set();coutvv"矩阵是:"vvendl;a.show();coutvv”转置后矩阵是:n«endl;a.zhuanz();试验结果:VI.拷贝构造2)题中的矩阵类对象,运行程序看看是否存在问题,应当如何改进。(提示:深浅拷贝)VI.源代码和说明:#include<iostream>usingnamespacestd;classzhuz(public:zhuz()(cout«T,zhuz构造函数被调用"<<endl;)~zhuz()(cout«nzhuz析构函数被调用"<<endl;delete[]p;zhuz(zhuz&q){inti,j;p=newint[3][3];for(i=0;iv=2;i++){for(j=0;j<=2;j++)p[i]rj]=q.p[i][j];voidset(){inti,j;cout<<”请输入3*3矩阵数据"<<endl;p=newint[3][3];for(i=0;i<=2;i++)(for(j=0;j<=2;j++)cin»p[i][j];voidshow()inti,j;for(i=0;i<=2;i++)(for(j=0;j<=2;j++)cout«p[i]|j]«"cout«endl;))voidzhuanz()(inti,j,t;for(i=0;i<=2;i++){for(j=0;j<=i;j++)(t=plj][i];pU][i]=p[i][j];))for(i=0;i<=2;i++)(for(j=0;j<=2;j++)cout«p[i][jl«"cout«endl;)}private:int(*p)[3];voidmain()zhuza;a.set();cout<<"矩阵是:"«endl;a.show();cout«endl;cout<<"转置后矩阵是:"<<endl;a.zhuanz();coutvv”其次个矩阵是:”《endl;zhuzb(a);b.show();}试验结果:vii.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。源代码和说明:#include<iostream>usingnamespacestd;voidString(char*a,char*b)char*p;p=a;whiIe(*p!=NULL)P++;while(*b!=NULL){*p=*b;P++;b++;}*p=*b;)intmain()(chai'shuzl[20];charshuz2[20];cout«”请输入第一个字符串',«endl;cin»shuzl;cout«”请输入其次个字符串“<<endl;cin»shuz2;String(shuzl,shuz2);cout<<”组合后的字符串是:H«endl;cout«shuz1«endl;试验结果:viii.使用string类定义字符串对象,重新实现上一小题。-源代码和说明:#include<string>#include<iostream>usingnamespacestd;intmain()(stringshuzl=',abc',,shuz2=,,bcdK;coutv<”请输入第一个字符串“vvendl;cin»shuzl;coutv〈”请输入其次个字符串”《endl;cin»shuz2;shuzl+=shuz2;cout«"组合后字符串是:"《endl;cout«shuzl;cout«endl;试验结果:定义Body类的数组,评测班级每个同学的身体状况。源代码和说明:#include<iostream>usingnamespacestd;classBody{public:Body(){cout«"Body构造函数被调用"<<endl;)~Body(){ cout«"Body析构函数被调用"<<endl;}voidGetweight(doubleW)Weight=W;}voidGethigh(doubieH){High=H;)voidshowWei(){cout«”该同学体重是:"vvWeightvVendl;}一voidshowH()(coutvv”该同学身高是:"vvHighvvendl;}doubleshow()(returnHigh/Weight;}一一private:doubleWeight;doubleHigh;);voidmain()inti,k;doublea,b,n,j=3.2;cout«n请输入要测试的同学的个数”;cin»k;Body*people=newBody[k];for(i=0;i<=k-1;i++)cout«"请输入第”"i+lvv”个同学的身高”;cin»a;people[i].Gethigh(a);cout<<”*****************"|^重”.cin»b;people[i].Getweight(b);cout«endl«endl;for(i=0;i<=k-l;i++)

n=people[i].show();if(n<j)cout«"pU"«i+1«"该同学偏:胖"<<endl;elseif(n==j)cout〈<")jU"«i+l<<"该同学偏正常"<<endl;elsecout«'Rl?«i+l<<”该同学偏:瘦”<<endl;people[i].showH();people[i].showWei();cout«endl;}delete[]people;)试验结果:F''C:\Users\asdasdw\Debug\asdasdw.exe'**体重4270舜:1:6e:香70舜:1:6e:香7E争S-同身体U1同同U该该Body听杓函数被调用Body机构函数彼调用Body林另函数板调用PressanykeytocontinueUS遨同学海:瘦该同学身荀戛:165该同学体量桌:49试验七 继承与派生试验(验证性试验 4学时).目的要求:学习定义和使用类的继承关系,定义派生类;熟识不同继承方式下对基类成员的访问掌握;学习采用虚基类解决二义性问题。.试验内容:1)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有或爱护成员变量,还会有问题吗?编程试试看,说明白什么原则?#include<iostream>usingnamespacestd;classAnimal(public:Animal()(cout«"Animal构造函数被调用"《endl;}~Animal(){cout«"Animal析构函数被调用"<<endl;)//private://protected:intage;);classdog:pubiicAnimal(public:dog(){cout«"dog构造函数被调用"<<endl;~dog()cout«"dog析构函数被调用"<<endl;}voidSetAge(intn);voidshow(){COUt<<"年龄是:cout«age«endl;});voiddog::SetAge(intn)(n=3;age=n;}intmain()(intt;dogb;b.SetAge(t);b.show();)试验结果:定义一个基类BasClass,有整型成员变量Number,构造其派生类DerivedClass,观看构造函数和析构函数的执行状况和执行挨次。源代码和说明:#include<iostream>usingnamespacestd;classBasClass(public:BasClass(){cout«nBasClass构造函数被调用"vvendl;}〜BasClass。(cout«nBasClass析构函数被调用”《endl;}};classDerivedClass:publicBasClass(public:DerivedClass()(cout«"DerivedClass构造函数被调用"vvendl;}-DerivedClass()(cout«,'DerivedClass析构函数被调用”《endl;}private:};intmain()DerivedClassa;

)।D।DI回Fn・l¥•C:\Users\WDASD\Debug\WDASD.exe-爨数调on被函函被爨数调on被函函被c饕篡to函需函y造ssSS构ke构lala析y用tin用用调调定义一个车(vehicle)基类,具有MaxSpeed>Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcycle)类有座位数(SeatNum)等属性。从bicycle和Motorcar派生出摩托车(motorcycle)类,在继承过程中,留意把vehicle设置为虚基类。假如不把vehicle设置为虚基类,会有什么问?编程试试看。源代码和说明:#include<iostream>usingnamespacestd;classvehiclepublic:vehicle()(cout«nvehicle构造函数被调用”《endl;}-vehicle。{cout«nvehicle析构函数被调用"《endl;}voidRun()(inti,j;cout«"请输入最大重量和最大速度:"<<endl;cin»i»j;MaxSpeed=i;Weight=j;}voidStop()(cout«,'MaxSpeed=,,«MaxSpeed«endl;cout«nWeight=n<<Weight«endl;}private:doubleMaxSpeed,Weight;);classbicycle:virtualpublicvehicle(public:bicycle(){cout«nbicycle构造函数被调用"<vendl;}〜bicycle。(cout«*'bicycle析构函数被调用"<<endl;}private:doubleHeight;);classmotorcar:virtualpublicvehiclepublic:motorcar()(cout«"motorcar构造函数被调用"vvendl;}〜motorcar。{cout«nmotorcar析构函数被调用"vvendl;)private:intSeatNum;};classmotorcycle:publicmotorcar,publicbicycle{'public:motorcycle(){cout«^motorcycle构造函数被调用"<<endl;)〜motorcycle。{cout«nmotorcycle析构函数被调用"<<endl;});intmain()(motorcyclea;a.bicycle::Run();a.bicycle::Stop();a.motorcar::Run();a.motorcar::Stop();}试验结果:

试验八多态性试验(设计性试验 2学时).目的要求:把握运算符重载的方法;学习使用虚函数实现动态多态性。.试验内容:1)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、”(自减)运算符,实现对坐标的转变。(提示:留意前++和后++)源代码和说明:#include<iostream>usingnamespacestd;classpointpublic:point(){cout«npoint构造函数被调用“<<endl;}〜point。(cout«"point析构函数被调用"<<endl;}voidset(inti=l,intj=3)(x=i;y=j;}voidshow()(cout«”坐标是:n«endl;cout«x«HH«y«endl;)pointoperator+4-();pointoperator—();pointoperator++(int);pointoperator—(int);private:intx,y;);pointpoint::operator++()(x++;y++;return*this;)pointpoint::operator—()(x-;y--;return*this;)pointpoint::operator++(int)(++x;++y;return"his;)pointpoint::operator—(int)一y;return*this;)intmain()(inti,j;pointa;coutvv”请输入坐标:"vvendl;cin»i»j;a.set(i,j);a.show();++a;a.show();一a;a.show();a++;a.show();a--;a.show();}试验结果:xii.定义一个车(vehicle)基类,有Run、Stop等虚成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle至Umotorcar派生出摩托车(motorcycle)类,它们都有Run>Stop等成员函数,采用基类指针或引用虚函数,观看虚函数的作用,说说多态的含义,假如不采纳虚函数会是什么样的结果?源代码和说明:#include<iostream>usingnamespacestd;classvehicle(public:vehicle(){ cout«nvehicle构造函数被调用"<<endl;}-vehicle()(cout«nvehicle析构函数被调用"<<endl;}virtualvoidRun()(cout«”设置vehicle最大速度和重量"vvendl;}virtualvoidStop()(cout<v”显示vehicle最大速度和重量"v<endl;}private:doubleMaxSpeed,Weight;};classbicycle:publicvehicle(public:bicycleO(cout«"bicycle构造函数被调用"<<endl;)-bicycleO{cout«nbicycle析构函数被调用"vvendl;}voidRun()(coutvv”设置bicycle最大速度和重量”<<endl;)voidStop()(coutvv”显示bicycle最大速度和重量"<<endl;}private:doubleHeight;};classmotorcar:publicvehicle(public:motorcar(){cout«"motorcari构造函数被调用”《endl;}〜motorcar。{cout«nmotorcar析构函数被调用"vvendl;}voidRun()(cout<v"设置motorcar最大速度和重量"vvendl;}voidStop(){coutvv”显示motorcar最大速度和重量”《endl;}private:intSeatNum;);classmotorcycle:publicmotorcar,publicbicycle(public:motorcycle(){. cout«nmotorcycle构造函数被调用"<<endl;}〜motorcycle。(cout«^motorcycle析构函数被调用"<vendl;}voidRun()(coutvv”设置motorcycle最大速度和重量”<<endl;)voidStop(){coutvv”显示motorcycle最大速度和重量"vvendl;)};voidfun(vehicle*p)(p->Run();p->Stop();)intmain()(vehicleaO,*p;bicycleal;motorcara2;motorcyclea3;cout«endl;p=&aO;fun(p);p=&al;fun(p);p=&a2;fun(p);//p=&a3;//fun(p);cout«endl;

)试验结果:1-C:\Users\WDASD\Debug\WDASD.exe*. •. ..一Koutit用用用用调用调用用娜调调调处1-C:\Users\WDASD\Debug\WDASD.exe*. •. ..一Koutit用用用用调用调用用娜调调调处数襄酸数数数数函数函数器函函函函造函造函函城造造造造构造构造造外沟沟沟沟rl构ri爵cleeeeaeaeey1111c1c1T-cccccrcrccriiyioioiyohhchthtee.1eoeouubumum量量量olAj}

m--一E-i」Bg:.g.--E--■!=

国3nu,J

口口口口声上4

速速速逢我

eeeeaa

1111cc

ccccrr

iiyyoo

hhcctt

vevebibimolno

箪£一£示

设显曲团设显jehicle析:motorcarfl匈函蹶被调用一二八".、,"■'卜0亡01^叫¥析杓函数被调用[bicycle标指函数被调用试验十一流内库与输入、输出试验(设计性试验 2学时).目的要求:熟识流类库中常用的类及其成员函数的用法;学习标准输入输出及格式掌握;学习对文件的应用方法(二进制文件、文本文件)。.试验内容:1)观看以下程序的输出,留意对输出格式的掌握方法。

//lab11//lab11_1.cpp#include<fstream>Usingnamespacestd;#defineD(a)T«#a<<endl;aOfstreamT(ttoutput.out,t);Voidmain()/D(inti=53;)D(floatf=4700113.141593;)Charts="Isthereanymore?D(T.setf(ios::unitbuf);)D(T.setf(ios::showbase);)D(T.setf(ios::uppercase);)D(T.setf(ios::showpos);)D(T«i«endl;)D(T.setf(ios::hex,ios::basefield);)D(T«i«endl;)D(T.unself(ios::uppercase);)D(T.setf(ios::oct,ios::basefield);)D(T«i«endl;)D(T.setf(ios::showbase);)D(T.setf(ios::dec,ios::basefield);)D(T.setf(ios::left,ios::adjustfield);)D(T.fillCOf);)D(T«'»〃char:,f«T.fill()«endl;)D(T.windrh(8);)T«i<<endl;D(T.setf(ios::rightjos::adjustfield);)D(T.windth(8);)T«i«endl;D(T.self(ios:internal,ios::adjustfield);)D(T.windth(8);)T«i«endl;D(T«iencll;)//Withoutwidth(10)D(T.unsetf(ios::showpoint);)D(T.setffios::showpoint);)D(T.«,,prec=,t«T.precision()«endl;)D(T.setf(ios:scientificjos::floatfield);)D(T«endl<<f<<endl;)D(T.setf(ios::fixed,ios::floatfield);)D(T«f«endl;)D(T.setf(0,ios::floatfield);)//AutornaticD(T«f«endl;)D(T.precision(16);)D(T«,>prec=M<<T.precision()«endl;)D(T«endl<<f«endl;)D(T.setf(ios:scientific,

温馨提示

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

评论

0/150

提交评论