还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《面向对象方法与》作业C++
一、填空题
1.若char*string二test;则如果要输出指针值,正确的语句是
2.在重载“[]”运算符时,必须使用函数重载
3.当用public继承时,基类的public成员成为派生类的成员,基类的protected成员成为派生类的成员.
4.可以赋给指针的唯一整数是o
5.在重载“二”运算符时,必须使用函数重载
6.以下程序int c=10;cout.flagsios::hex|ios::showbase;coutc;的输出结果是o
7.当用private继承时,基类的public成员和protected成员都将成为派生类的成员
8.在main函数中出现的以下语句:max=Max a,Max b,c;是一个函数调用的语句
9.头文件声明和定义了重要的文件处理操作服务
10.关键字表示类的静态成员
11.当一个成员函数定义在类的声明外部时,函数名之前要加上名称和运算符
12.在C++中,虚基类的引入是为了实现继承
二、判断题
1.在以下语句中cin»XXXX;XXXX必须是一个变量名,而不能是一个任意表达式
2.以下声明将不会导致编译错误enum GradeType{,A,,B,,C,,,D,,E,,F,};
3.在C++里,派生类的构造函数先于其基类的构造函数执行
4.C++中的所有函数都是传值调用
5.在类time中声明如下的函数原型void time;
6.以下程序class CA{public:virtual voiddis=0;};class CB:public CA{public:void setintm{k=m;}protected:int k;void mainreturn res;}set operator*set si,set s2{_____8_______;forint i=0;isl.card;i++for intj=0;js
2.card;j++ifsi.elems[i]==s
2.elems[j]{res.elems[res.card++]=9;break;}return res;}bool operator=set si,set s2{ifsi.cards
2.cardreturn false;forint i=0;isl.card;i++if!si.elems[i]s2return false;return true;}bool operatorset si,set s2{return si.cards
2.cardsl=s2true:false;}void main{set W;forint i=0;i100;i++sl=sl+i;coutsl;if si!=s2cout,,\nTrue\n,/;else cout〈〈〃\nFalse\n〃;s2=sl;couts2;if sl==s2cout,,\nTrue\n,/;else cout,,\nFalse\n,/;fori=0;i20;i++sl=sl-i;coutsl;s3=sl*s2;couts3;if sls2cout,z\nTrue\n,z;else cout〈〃\nFalse\n〃;if sl+s2=s3coutz,\nTrue\n/z;else cout〈〃\nFalse\n〃;}
5.完成以下程序#include iostream.h#include iomanip.hdouble functiondouble x{return4/l+x*x;}class inlealgo{protected:double a,b,n,h,sum;public:inte_algodouble left,double right,double steps{a=1,b=right,n=steps,h=b-a/n,sum=0;}virtual void integrate=2;};class rectangle:3{public:rectangledouble left,double right,double steps:inte_algoleft,right,steps{}____4_____;};void rectangle::integrate{double al=a;forint i=0;in;i++sum+=functional,al+=h;sum*二h;cout,,Sum=z,sumendl;}class ladder:public inte_algo{public:ladderdouble left,double right,double steps:inte algoleft,right,steps{}void integrate;};void ladder::integrate{double al=a;sum=functiona+functionb/2;forint i=l;in;i++al+=h,sum+=function al;sum*二h;cout,,Sum=,,sumendl;}class5:public inte_algo{public:simpsondouble left,double right,double steps:______6_______{}voidintegrate;};void simpson::integrate{sum=functiona+functionb;double s=l,al=a;for inLi=l;ifi;i++al+二h,sum+=3+s*function al,s=一s;sum*=h/=3;void main{rectangle r0,1,10;ladder10,1,10;simpson80,1,10;inte_algo9=r;coutsetprecision15;p-integrate;p=l;p-integrate;p=s;10;{CB b:}是正确的()
7.函数模板能够定义一个在不同数据类型基础上完成同一任务的函数()
8.以下语句:char*string=test”;delete[]string;是正确的()
9.一个有指针数据成员的类必须要包含的成员函数有:初始化构造函数,析构函数,拷贝构造函数和赋值运算符函数()
10.抽象基类中的所有虚函数都要声明为纯虚函数()
11.以下语句char string二new char
[10];strcpy(string,“test);//•••delete[]string;是正确的()
12.枚举类型变量的值可以直接进行输入、输出()
三、读程题
1.下面程序在执行过程中,若顺序输入十个整数12345678910,其结果是什么ttinclude iostream.h class stack;class nodeint data;node*prev;public:nodeintd,node*n{data=d;prev=n;}friend classstack;classstack{node*top;public:stack{top=0;}void pushint i{node*n=new nodei,top;top=n;}int pop{node*t=top;if top{tup=top-prev;int c=t-dala;delete t;return c;}return0;}void main{int c;stack s;forint i=0;i10;i++{cinc;s.pushc;}fori=0;i10;i++cout s.pop〃;coutendl;}#include iostream.h#include iomanip.h classIncrement{public:Incrementint=0,int=l;void addlncrement{count+=increment;}void printconst;private:int count;const int increment;};Increment::Increment intc,int i:increment i{count=c;}void Increment::printconst{cout,,count=,,setw8countendl;cout,zincrement=,,incrementendl;}void main{Increment object65,7;cout,zbefore:,zendl;;object,print;for intj=0;j3;j++{object.addlncrement;cout«,,after:^«j+l«endl;object,print;}}#include iostream.hclass point{static intcount;float xcoord,ycoord;public:pointfloat x=0,float y=0{xcoord=x;ycoord=y;count++;}static intgetcount{return count;}point〜{count一一;};int point::count=0;void main{coutpoint::getcount〈〃〃;point*p,a
32.98,-
4.71,b,c;coutpoint::getcount〈〃〃;coutb.getcount〃〃;p=new point
[100];coutpoint::getcount〃〃;delete[]p;coutpoint::getcount endl;}#include iostream.h classTest{static intcount;public:Test{++count;}~Test{--count;}static intgetCount{return count;}};int Test::count=0;void main{coutTest::getCount;Test t,tab
[5],*p;cout,\V Test::getCount;p=new Test
[10];cout,\V Test::getCount;delete[]p;cout«,\tJ«Test::getCountendl;}
5.#include iostream.httinclude stdlib.h templateclassT classvector{T*v;int sz;public:vector ints=100{v二new T[sz=s];}vector const vectorvv{sz=vv.sz;v=new T[sz];}vectoroperator=constvectorvv{ifvv!=this{deletet]v;sz=vv.sz;v=new T[sz];forint i=0;i〈sz;i++v[i]=vv.v[i];}return*this;}^vector{deleteE]v;}Toperator[]inti{if i01|i=sz{cerr,zError\n,z;exit1;}return v[i];}};void main{vectorint v10,uv;forint i=0;i10;i++v[i]=3*i+l;u=v;for i=0;i=10;i++coutu[i]/z〃;}
四、编程题
1.请完成以下程序:设计一个学生类,其属性有学号、姓名、性别、年龄和C++成绩,并定义相应操作,重载析取符〉和插入符〈以支持I/O操作在main函数中定义学生对象数组,对于学生对象数组从磁盘文件“student.txt”进行输入,最后以学号n为参数在数组中查找学号为n的学生,并显示该生的全部信息#include1ttinclude string.h ttincludeiomanip.h classstudent{2;char name
[20],sex;int age;float score;public:student{}studentint nu,char*na,char se,int ag,3sc{num=nu;strcpy name,na;sex=se;age=ag;score=sc;}int getn{return num;}friend istreamoperatoristreamfe s,studentfe st{sst.numst.namest.sexst.agest.score;return4;}friend ostreamoperator5s,const studentfest{sst.numz,〃6〃st.sex〃age〃scoreendl;return s;};const intm=300;7main{student s[m];ifstream f〃8z,;inti=0;while!f.eoff»s
[9];int n,flag=l;cout,,Enter n:〃;10;forint j=0;jiflag;j++if s[j].getn==n{flag=0;cout〃找到了〃[j];}ifflag=l cout〈〃没找到\n〃;
2.请完成以下复数类的设计,复数类对象的创建及使用#include1#include math.h#include stdlib.hclass complex{double rpart,ipart;double absconst;double norm const;public:complex doubler=0,double i=0{2;ipart=i;}complex operator-;friend complex operator+const complex,const complexfe;friend complex operator-const complexfe,const complexfe;friend complex operator*const complex,const complex;friend complex operator/const complex,const complex;friend3operatorconst complex,const complexfe;friend int operator const complexfe,const complexfe;friend int operator=const complexfe,const complexfe;friend int operator二二const complex,constcomplexfe;friend int operator!=const complex,constcomplex;friend int operator=constcomplex,const complexfe;friend istreamoperatoristreamfe si,complexfe c{sic.rpartc.ipart;return si;}friend ostreamoperatorostreamso,const complexc{soc.rpart,,c.ipartz,\n〃;4;};double complex::abs const{return sqrtrpart*rpart+5;}double complex::normconst{return rpart*rpart+ipart*ipart;}complex complex::operator-{return complex-rpart,-ipart;}complexoperator+const complexcl,const complexc2{return complexcl.rpart+c
2.rpart,cl.ipart+c
2.ipart;complexoperator-const complexcl,const complexc2{return complex6,cl.ipart-c
2.ipart;}complexoperator*const complexcl,const complexc2{return complexcl.rpart*c
2.rpart-cl.ipart*c
2.ipart,cl.rpart*c
2.ipart+cl.ipart*c
2.rpart;}complexoperator/const complexcl,const complexc2{complex res;double d=c
2.norm;ifd!=O{res.rpart=cl.rpart*c2・rpart+cl.ipart*c
2.ipart/d;res.ipart=cl.ipart*c
2.rpart-cl.rpart*c
2.ipart/d;}else{cerr/zdi veby
0.\nz,;exi I1;}7;}int operatorconst complexcl,const complexc2{return cl.abs c
2.abs;}intoperator=const complexcl,const complexc2{return8;}intoperatorconst complexcl,const complexc2{return cl.abs c
2.abs;}intoperator=const complexcl,const complexc2{return cl.abs=c
2.abs;}intoperator==const complexcl,const complexc2{return cl.rpart==c
2.rpartfecl.ipart=c
2.ipart;}intoperator!=const complexcl,const complexc2{return9||cl.ipart!=c
2.ipart;}void main{10cll,2,c23,4,c3;cinc3;coutc3;c3二-cl*2+c2/c3*cl-6;coutc3;ifclc2coutcl;else coutc2;cincl»c2c3;coutclc2c3;}
3.有一家医院的门诊记录如下所示,已知该记录存放在一个patient.dat”文件中,请编写一个程序,帮助医生计算一下每一位病人平均血压病人的编号病人血压的测量次数病人血压各次测量的结果
100151001209011010010022100120100339012013010044807090100100531201351104.请完成以下集合类的设计,集合类对象的创建及使用#include〈iostream.hconst intmaxcard=20;class set{int elems[maxcard],card;public:set{card二i;}friend bool operatorint,set;friend bool operatorset,set;friend2operator!=set,set;friend set operator+set,set;friend set operator+set,int;friend set operator-set,int;3set operator*set,set;friend bool operator set,set;friend booloperator=set,set;friend ostreamfeoperatorostreamout,const sets{outendl;for inti=0;is.card;i++outs.elems[i]〈〈〃〃;return4;}};booloperatorint e,set s{forint i=0;is.card;i++if s.elems[i]==ereturn true;return立_________;}booloperator==set si,set s2{ifsi.card!=s
2.card return false;for inti=0;isl.card;6if!si.elems[i]s2returnfalse;return true;}booloperator!=set si,set s2{return!sl==s2true:false;}setoperator+set s,inte{set res=s;if s.cardmaxcardif!esres.elems[res.card++]=e;return res;}setoperator+set si,sets2{set res=sl;forint i=0;i〈s
2.card;i++res=res+s
2.elems[i];return res;}setoperator-sei s,inL e{set res=s;if!esreturn res;forint i=0;is.card;i++if s.elems[i]==efor;is.card-1;i++res.elems[i]=res.elems[i+1];。
个人认证
优秀文档
获得点赞 0