《面向对象方法与C++》作业.docx
- 文档编号:12311141
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:17
- 大小:19.48KB
《面向对象方法与C++》作业.docx
《《面向对象方法与C++》作业.docx》由会员分享,可在线阅读,更多相关《《面向对象方法与C++》作业.docx(17页珍藏版)》请在冰豆网上搜索。
《面向对象方法与C++》作业
《面向对象方法与C++》作业
一、填空题
1.若char*string=”test”;则如果要输出指针值,正确的语句是。
2.在重载“[]”运算符时,必须使用函数重载。
3.当用public继承时,基类的public成员成为派生类的成员,基类的protected成员成为派生类的成员。
4.可以赋给指针的唯一整数是。
5.在重载“=”运算符时,必须使用函数重载。
6.以下程序:
intc=10;
cout.flags(ios:
:
hex|ios:
:
showbase);
cout< 的输出结果是。 7.当用private继承时,基类的public成员和protected成员都将成为派生类的成员。 8.在main函数中出现的以下语句: max=Max(a,Max(b,c));是一个函数调用的语句。 9.头文件声明和定义了重要的文件处理操作服务。 10.关键字表示类的静态成员。 11.当一个成员函数定义在类的声明外部时,函数名之前要加上名称和运算符。 12.在C++中,虚基类的引入是为了实现继承。 二、判断题 1.在以下语句中: cin>>XXXX; XXXX必须是一个变量名,而不能是一个任意表达式。 () 2.以下声明将不会导致编译错误。 () enumGradeType{'A','B','C','D','E','F'}; 3.在C++里,派生类的构造函数先于其基类的构造函数执行。 () 4.C++中的所有函数都是传值调用。 () 5.在类time中声明如下的函数原型: void~time();() 6.以下程序: classCA {public: virtualvoiddis()=0;}; classCB: publicCA {public: voidset(intm){k=m;} protected: intk; }; voidmain() {CBb;} 是正确的。 () 7.函数模板能够定义一个在不同数据类型基础上完成同一任务的函数。 () 8.以下语句: char*string=”test”; delete[]string;是正确的。 () 9.一个有指针数据成员的类必须要包含的成员函数有: 初始化构造函数,析构函数,拷贝构造函数和赋值运算符函数。 () 10.抽象基类中的所有虚函数都要声明为纯虚函数。 () 11.以下语句: char*string=newchar[10]; strcpy(string,”test”);//… delete[]string;是正确的。 () 12.枚举类型变量的值可以直接进行输入、输出。 () 三、读程题 1.下面程序在执行过程中,若顺序输入十个整数: 12345678910,其结果是什么。 #include classstack; classnode{ intdata; node*prev; public: node(intd,node*n){data=d;prev=n;} friendclassstack; }; classstack{ node*top; public: stack(){top=0;} voidpush(inti){ node*n=newnode(i,top);top=n;} intpop(){ node*t=top; if(top){ top=top->prev;intc=t->data; deletet;returnc;} return0;} }; voidmain(){ intc;stacks; for(inti=0;i<10;i++) {cin>>c;s.push(c);} for(i=0;i<10;i++) cout< cout< 2. #include #include classIncrement{ public: Increment(int=0,int=1); voidaddIncrement() {count+=increment;} voidprint()const; private: intcount; constintincrement;}; Increment: : Increment(intc,inti): increment(i) {count=c;} voidIncrement: : print()const{ cout<<"count="< cout<<"increment="< voidmain(){ Incrementobject(65,7); cout<<"before: "< object.print(); for(intj=0;j<3;j++){ object.addIncrement(); cout<<"after: "< object.print();}} 3. #include classpoint{ staticintcount; floatxcoord,ycoord; public: point(floatx=0,floaty=0) {xcoord=x;ycoord=y;count++;} staticintgetcount() {returncount;} ~point() {count--;}}; intpoint: : count=0; voidmain(){ cout< : getcount()<<""; point*p,a(32.98,-4.71),b,c; cout< : getcount()<<""; cout< p=newpoint[100]; cout< : getcount()<<""; delete[]p; cout< : getcount()< 4. #include classTest{ staticintcount; public: Test(){++count;} ~Test(){--count;} staticintgetCount(){returncount;}}; intTest: : count=0; voidmain(){ cout< : getCount(); Testt,tab[5],*p; cout<<'\t'< : getCount(); p=newTest[10]; cout<<'\t'< : getCount(); delete[]p; cout<<'\t'< : getCount()< 5. #include #include template T*v;intsz; public: vector(ints=100){ v=newT[sz=s];} vector(constvector&vv){ sz=vv.sz;v=newT[sz];} vector&operator=(constvector&vv){ if(&vv! =this){ delete[]v; sz=vv.sz; v=newT[sz]; for(inti=0;i v[i]=vv.v[i];} return*this;} ~vector(){delete[]v;} T&operator[](inti){ if(i<0||i>=sz){cerr<<"Error\n";exit (1);} returnv[i];}}; voidmain(){ vector for(inti=0;i<10;i++) v[i]=3*i+1; u=v; for(i=0;i<=10;i++) cout< 四、编程题 1.请完成以下程序: 设计一个学生类,其属性有学号、姓名、性别、年龄和C++成绩,并定义相应操作,重载析取符(>>)和插入符(<<)以支持I/O操作。 在main函数中定义学生对象数组,对于学生对象数组从磁盘文件“student.txt”进行输入,最后以学号n为参数在数组中查找学号为n的学生,并显示该生的全部信息。 #include<_____1_____> #include #include classstudent{ _____2_____; charname[20],sex; intage; floatscore; public: student(){} student(intnu,char*na,charse,intag,_____3_____sc){ num=nu;strcpy(name,na); sex=se;age=ag;score=sc;} intgetn(){ returnnum;} friendistream&operator>>(istream&s,student&st){ s>>st.num>>st.name>>st.sex>>st.age>>st.score; return_____4_____;} friendostream&operator<<(_____5_____s,conststudent&st){ s< ""< returns;}}; constintm=300; _____7_____main(){ students[m]; ifstreamf("____8_____"); inti=0; while(! f.eof()) f>>s[__9__]; intn,flag=1; cout<<"Entern: "; _____10_____; for(intj=0;j if(s[j].getn()==n){flag=0;cout<<"找到了: "< if(flag==1)cout<<"没找到。 \n"; } 2.请完成以下复数类的设计,复数类对象的创建及使用。 #include<____1____> #include #include classcomplex{ doublerpart,ipart; doubleabs()const; doublenorm()const; public: complex(doubler=0,doublei=0){ _____2_____;ipart=i;} complexoperator-(); friendcomplexoperator+(constcomplex&,constcomplex&); friendcomplexoperator-(constcomplex&,constcomplex&); friendcomplexoperator*(constcomplex&,constcomplex&); friendcomplexoperator/(constcomplex&,constcomplex&); friend___3___operator>(constcomplex&,constcomplex&); friendintoperator>=(constcomplex&,constcomplex&); friendintoperator<(constcomplex&,constcomplex&); friendintoperator<=(constcomplex&,constcomplex&); friendintoperator==(constcomplex&,constcomplex&); friendintoperator! =(constcomplex&,constcomplex&); friendistream&operator>>(istream&si,complex&c){ si>>c.rpart>>c.ipart; returnsi;} friendostream&operator<<(ostream&so,constcomplex&c){ so<<'('< _____4_____;}}; doublecomplex: : abs()const{ returnsqrt(rpart*rpart+_____5_____);} doublecomplex: : norm()const{ return(rpart*rpart+ipart*ipart);} complexcomplex: : operator-(){ returncomplex(-rpart,-ipart);} complexoperator+(constcomplex&c1,constcomplex&c2){ returncomplex(c1.rpart+c2.rpart),c1.ipart+c2.ipart);} complexoperator-(constcomplex&c1,constcomplex&c2){ returncomplex(_____6_____,c1.ipart-c2.ipart);} complexoperator*(constcomplex&c1,constcomplex&c2){ returncomplex(c1.rpart*c2.rpart-c1.ipart*c2.ipart, c1.rpart*c2.ipart+c1.ipart*c2.rpart);} complexoperator/(constcomplex&c1,constcomplex&c2){ complexres; doubled=c2.norm(); if(d! =0){ res.rpart=(c1.rpart*c2.rpart+c1.ipart*c2.ipart)/d; res.ipart=(c1.ipart*c2.rpart-c1.rpart*c2.ipart)/d;} else{cerr<<"diveby0.\n";exit (1);} ___7___;} intoperator>(constcomplex&c1,constcomplex&c2){ returnc1.abs()>c2.abs();} intoperator>=(constcomplex&c1,constcomplex&c2){ return_____8_____;} intoperator<(constcomplex&c1,constcomplex&c2){ returnc1.abs() intoperator<=(constcomplex&c1,constcomplex&c2){ returnc1.abs()<=c2.abs();} intoperator==(constcomplex&c1,constcomplex&c2){ returnc1.rpart==c2.rpart&&c1.ipart==c2.ipart;} intoperator! =(constcomplex&c1,constcomplex&c2){ return_____9______||c1.ipart! =c2.ipart;} voidmain(){ ___10___c1(1,2),c2(3,4),c3; cin>>c3;cout< c3=-c1*2+c2/c3*c1-6; cout< if(c1>c2)cout< elsecout< cin>>c1>>c2>>c3; cout< 3.有一家医院的门诊记录如下所示,已知该记录存放在一个”patient.dat”文件中,请编写一个程序,帮助医生计算一下每一位病人平均血压。 病人的编号病人血压的测量次数病人血压各次测量的结果 1001510012090110100 10022100120 1003390120130 10044807090100 10053120135110 ┆┆┆ 4.请完成以下集合类的设计,集合类对象的创建及使用。 #include constintmaxcard=20; classset{ intelems[maxcard],card; public: set(){card=____1____;} friendbooloperator&(int,set); friendbooloperator==(set,set); friend___2___operator! =(set,set); friendsetoperator+(set,set); friendsetoperator+(set,int); friendsetoperator-(set,int); ___3___setoperator*(set,set); friendbooloperator<(set,set); friendbooloperator<=(set,set); friendostream&operator<<(ostream&out,constset&s) {out< for(inti=0;i out< return____4____;}}; booloperator&(inte,sets){ for(inti=0;i if(s.elems[i]==e) returntrue; return____5_____;} booloperator==(sets1,sets2){ if(s1.card! =s2.card)returnfalse; for(inti=0;i if(! (s1.elems[i]&s2))returnfalse; returntrue;} booloperator! =(sets1,sets2) {return! (s1==s2)? true: false;} setoperator+(sets,inte) {setres=s; if(s.card if(! (e&s))res.elems[res.card++]=e; returnres;} setoperator+(sets1,sets2) {setres=s1; for(inti=0;i res=res+s2.elems[i]; returnres;} setoperator-(sets,inte) {setres=s; if(! (e&s))returnres; for(inti=0;i if(s.elems[i]==e) for(;i _____7______; returnres;} setoperator*(sets1,sets2){ _____8______; for(inti=0;i for(intj=0;j if(s1.elems[i]==s2.elems[j]) {res.elems[res.card++]=____9_____;break;} returnres;} booloperator<=(sets1,sets2){ if(s1.card>s2.card)returnfalse; for(inti=0;i if(! (s1.elems[i]&s2))returnfalse; returntrue;} booloperator<(sets1,sets2){ returns1.card true: false;} voidmain(){set______10_______; for(inti=0;i<100;i++)s1=s1+i; cout< if(s1! =s2)cout<<"\nTrue\n";elsecout<<"\nFalse\n"; s2=s1;cout< if(s1==s2)cout<<"\nTrue\n";elsecout<<"\nFalse\n"; for(i=0;i<20;i++)s1=s1-i; cout< s3=s1*s2;cout< if(s1 if(s1+s2<=s3)cout<<"\nTrue\n";elsecout<<"\nFalse\n";} 5.完成以下程序。 #include #include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象方法与C+ 面向 对象 方法 作业