4 C++面向对象程序设计A卷 和参考答案_第1页
4 C++面向对象程序设计A卷 和参考答案_第2页
4 C++面向对象程序设计A卷 和参考答案_第3页
4 C++面向对象程序设计A卷 和参考答案_第4页
4 C++面向对象程序设计A卷 和参考答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

C++面向对象程序设计(甲)座位号:(A)卷参考答案座位号:注意:答案直接写在答题纸上,答在试卷上无效,考试后答题纸和试卷一同上交一、单项选择题(每题2分,总计20分)题号12345答案CDADA题号678910答案CCCBD二、程序填空题(每空2分,总计20分)(1)dated,intday(2)day>dys[d.mo-1](3)temp.n=n+s.n(4)s3.disp()(5)A(i+10)或A(6*i)(6)dispa()(7)【virtual】voidf()(8)f()(9)booloperator()(intx)(10)count_if(a.begin(),a.end(),Pass())三、阅读程序题(每题6分,总计30分)1.阅读该程序,给出程序的输出结果。n=10,k=3n=20,k=3n=30,k=32.阅读该程序,给出程序的输出结果。n=93.阅读该程序,给出程序的输出结果。54.12China4.阅读该程序,给出程序的输出结果。anihCevoL5.阅读该程序,给出程序的输出结果。8/3=2【6/0=】6isdividedbyzero!Thatisok.座位号:四、编程题(每题15分,总计30分)座位号:1.按照要求,编写程序。评分标准:要求采用抽象类和类继承,若不采用则扣分。#include<iostream>usingnamespacestd;//雇员类classEmployee{protected:int_id;double_salary;string_name;public:Employee(intid,stringname):_id(id),_name(name){}virtual~Employee(){}virtualdoubleCalcSalary()=0;};//经理类classManager:publicEmployee{public:Manager(intid,stringname):Employee(id,name){}virtualdoubleCalcSalary(){_salary=8000;return_salary;};};//兼职技术员类classTechnician:publicEmployee{int_workHour;public:Technician(intid,stringname):Employee(id,name){}voidSetWorkHour(intworkHour){_workHour=workHour;}virtualdoubleCalcSalary(){_salary=100*_workHour;return_salary;};};//销售经理类classSalesman:publicEmployee{double_salesMount;public:Salesman(intid,stringname):Employee(id,name){}voidSetSalesMount(doublesalesMount){_salesMount=salesMount;}virtualdoubleCalcSalary(){_salary=0.04*_salesMount;return_salary;};};classSalesManager:publicEmployee{double_salesTotalMount;public:SalesManager(intid,stringname):Employee(id,name){}voidSetSalesTotalMount(doublesalesTotalMount){_salesTotalMount=salesTotalMount;}virtualdoubleCalcSalary(){_salary=5000+0.005*_salesTotalMount;return_salary;};};intmain(){Managerzhang(1000,"张三");Technicianli(1000,"李四");Salesmanwang(1000,"王五");SalesManagerzhao(1000,"赵六");li.SetWorkHour(50);wang.SetSalesMount(175000);zhao.SetSalesTotalMount(1500000);Employee*pEmployeeA[]={&zhang,&li,&wang,&zhao};for(inti=0;i<4;i++){cout<<pEmployeeA[i]->CalcSalary()<<endl;}}

2.按照要求,编写程序。座位号:座位号:评分标准:不可存在内存泄露。#include<iostream>#include<vector>#include<cstdlib>usingnamespacestd;classMatrix{public:Matrix(introw,intcol);//构造rowxcol大小矩阵Matrixoperator+(constMatrix&rhs)const;//相同大小矩阵相加Matrixoperator-(constMatrix&rhs)const;//相同大小矩阵相减voidDisplay()const;//显示矩阵//矩阵元素,可作为右值constint&at(introw,intcol)const{return_datas[row][col];}//矩阵元素,可作为左值int&at(introw,intcol){return_datas[row][col];}//矩阵行数intGetRowCount()const{return_datas.size();}//矩阵列数intGetColCount()const{return_datas[0].size();}private://存放矩阵元素,本类没有直接动态分配,无需重载拷贝构造和赋值vector<vector<int>>_datas;};Matrix::Matrix(introw,intcol){for(inti=0;i<row;i++){vector<int>dataRow(col);_datas.push_back(dataRow);}}MatrixMatrix::operator+(constMatrix&rhs)const{Matrixresult(this->GetRowCount(),this->GetColCount());for(unsignedinti=0;i<_datas.size();i++){for(unsignedintj=0;j<_datas[i].size();j++){result.at(i,j)=this->at(i,j)+rhs.at(i,j);}}returnresult;}MatrixMatrix::operator-(constMatrix&rhs)const{Matrixresult(this->GetRowCount(),this->GetColCount());for(unsignedinti=0;i<_datas.size();i++){for(unsignedintj=0;j<_datas[i].size();j++){result.at(i,j)=this->at(i,j)-rhs.at(i,j);}}returnresult;}voidMatrix::Display()const{for(unsignedinti=0;i<_datas.size();i++){for(unsignedintj=0;j<_datas[i].size();j++){cout.width(5);cout<<at(i,j);}cout<<endl;}cout<<endl;}intmain(){MatrixA(5,6),B(5,6);inti,j;for(i=0;i<A.GetRowCount();i++)for(j=0;j<A.GetColCount();j++)A.at(i,j)=rand()%100;for(i=0;i<A.GetRowCount();i++)for(j=0;j<A.GetColCount();j++)B.at(i,j)=rand()%100;A.Display();B.Display();MatrixC=A+B;C.Display();MatrixD=A-B;D.Display();return0;}

C++面向对象程序设计(甲)(A)卷注意:答案直接写在答题纸上,答在试卷上无效,考试后答题纸和试卷一同上交一、单项选择题(每题2分,总计20分)1.若定义语句为constchar*ptr;,ptr应该是______。A.指向字符变量的指针B.指向字符的常量指针C.指向字符串常量的指针D.指向字符串的常量指针2.对定义重载函数的下列要求中,_____是错误的。A.要求参数的个数不同B.要求参数中至少有一个类型不同C.要求参数个数相同时,参数类型不同D.要求函数的返回值不同3.有以下类的说明,请指出A、B、C、D四个语句错误的是_____。classCSample{inta=2.5;//ACSample();//Bpublic:CSample(intval);//C~CSample();//D};4.一个类的友元函数能够访问该类的_____。A.只有私有成员B.只有保护成员C.只有公有成员D.所有成员5.下列运算符中,_____运算符在C++中不能重载。A.?:B.+C.–D.<=6.以下对模板的说明,正确的是_____。A.template<T>B.template<classT1,T2> C.template<classT1,classT2> D.template<classT1;classT2>7.关于多继承二义性的描述中,_____是错误的。A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B.解决二义性的最常用的方法是对成员名的限定C.基类和派生类中出现同名函数,也存在二义性问题D.一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性8.以下基类中的成员函数,哪个表示纯虚函数_____。A.virtualvoidvf(int);B.voidvf(int)=0;C.virtualvoidvf()=0;D.virtualvoidvf(int){}9.在C++中,打开一个文件就是将这个文件与一个_____建立关联;关闭一个文件就取消这种关联。A.类B.流C.对象D.结构10现有语句intiarray[]={0,1,2,3,4,5,6,6,6,7,8};vector<int>ivector(iarray,iarray+sizeof(iarray)/sizeof(int));请问要找出ivector之中小于7的元素个数,采用下面哪个算法_____。A.find_ifB.countC.sortD.count_if二、程序填空题(每空2分,总计20分)1.请在下面程序的横线处填上适当内容,以使程序完整,并使运行结果为:2/10/2004#include<iostream.h>staticintdys[]={31,28,31,30,31,30,31,31,30,31,30,31};classdate{ intmo,da,yr;public: date(intm,intd,inty) {mo=m;da=d;yr=y;} date() {} voiddisp() {cout<<mo<<"/"<<da<<"/"<<yr<<endl;} voidleap(inta){ if(a%4==0&&a%100!=0||a%400==0) dys[1]=29; elsedys[1]=28;} frienddateoperator+(_______(1)_______) { day+=d.da; d.leap(d.yr); while(_______(2)_______) { d.leap(d.yr); day-=dys[d.mo-1]; if(++d.mo==13) { d.mo=1; d.yr++; } } d.da=day; returnd; }};intmain(){ dated1(2,10,2003),d2;intn; cin>>n;//从键盘输入365 while(n<0){cin>>n;} d2=d1+n; d2.disp();}2.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:n=30#include<iostream.h>template<classT>classSample{ Tn;public: Sample(){} Sample(Ti){n=i;} Sample<T>operator+(constSample<T>&); voiddisp(){cout<<"n="<<n<<endl;}};template<classT>Sample<T>Sample<T>::operator+(constSample<T>&s){ Sample<T>temp; _______(3)_______; returntemp;}intmain(){ Sample<int>s1(10),s2(20),s3; s3=s1+s2; _______(4)_______;}3.请在下面程序的横线处填上适当字句,以使程序完整,并使程序的输出为AConstructor2BConstructor2x1=12x2=2#include<iostream.h>classA{public: A(){cout<<"AConstructor1"<<endl;} A(inti){x1=i;cout<<"AConstructor2"<<endl;}; voiddispa(){cout<<"x1="<<x1<<endl;}private: intx1;};classB:publicA{public: B(){cout<<"BConstructor1"<<endl;} B(inti):_____(5)_____{x2=i;cout<<"BConstructor2"<<endl;} voiddispb() { _____(6)_____; cout<<"x2="<<x2<<endl; }private: intx2;};intmain(){ Bb(2); b.dispb();}4.请在下面程序的横线处填上适当字句,以使程序完整,并使程序的输出为构造base对象调用base::f()构造derive对象调用derive::f()#include<iostream.h>classbase{public: base() { cout<<"构造base对象"<<endl; f(); } _________(7)_________{cout<<"调用base::f()"<<endl;}};classderive:publicbase{public: derive() { cout<<"构造derive对象"<<endl; _________(8)_________; } voidf(){cout<<"调用derive::f()"<<endl;}};intmain(){ derived;}5.下面程序用STL的条件计数算法和自定义的函数对象对一个存放在整数向量类对象中的学生成绩进行统计及格人数并显示结果。请在下面程序的横线处填上适当字句,以使程序完整。#include<iostream>#include<vector>#include<algorithm>#include<functional>usingnamespacestd;classPass{public:____________________(9)___________________{returnx>=60;}};intmain(){vector<int>a;intcount;a.push_back(78);a.push_back(92);a.push_back(52);count=____________________(10)___________________;cout<<"count="<<count<<endl;}三、程序阅读题(每题6分,总计30分)1.#include<iostream.h>classCSample{private: intn; staticintk;public: CSample(inti){n=i;k++;} voiddisp();};voidCSample::disp(){ cout<<"n="<<n<<",k="<<k<<endl;}intCSample::k=0;intmain(){ CSamplea(10),b(20),c(30); a.disp(); b.disp(); c.disp();}2.#include<iostream.h>classSample{ intn;public: Sample(){} Sample(intm){n=m;} Sampleoperator--(int) { Sampleold=*this; n--; returnold; } voiddisp(){cout<<"n="<<n<<endl;}};intmain(){ Samples(10); s--; s.disp();}3.#include<iostream.h>#include<string.h>template<classT>Tmax(Tx,Ty) { return(x>y?x:y);}char*max(char*x,char*y) { if(strcmp(x,y)>=0) returnx; else returny;}intmain(){ cout<<max(2,5)<<endl; cout<<max(3.14,4.12)<<endl; cout<<max("China","Beijing")<<endl;}4.#

温馨提示

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

评论

0/150

提交评论