《C++程序设计》模拟试题(一)一、选择题(本大题共10小题,每小题2分,共20分)1.C++源程序文件扩展名为(B)。A..hB..cppC..1ibD..obj2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是(A)。A.cinB.coutC.cerrD.clog3.对于类中没有设置访问属性的数据成员,其默认为(C)。A.publicB.protectedC.privateD.static4.下列关于类和对象的叙述中,错误的是(A)。A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系5.类的构造函数是在定义该类的一个(C)时被自动调用执行的。A.成员函数B.数据成员C.对象D.友元函数6.派生类的对象可以访问以下哪种情况继承的基类成员(D)。A.私有继承的私有成员B.公有继承的私有成员C.私有继承的保护成员D.公有继承的公有成员7.intFunc(int,int);不可与下列哪个函数构成重载(B)。A.intFunc(int,int,int);B.doubleFunc(int,int);C.doubleFunc(double,double);D.doubleFunc(int,double);8.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。A.intAA::a()B.intAA:a()C.AA::a()D.AA::inta()9.设函数voidswap(int,int)将交换两形参的值,如两整型变量inta=10;intb=15;则执行swap(a,b)后,a、b值分别为(B)。A.10,10B.10,15C.15,10D.15,1510.当一个类A或函数f()被声明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D)。A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员D.任何权限的成员二、填空题(本大题共10小题,每小题2分,共20分)1.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用iostream.h头文件。2.同一个函数名可以对应着多个不同的函数实现,每一类实现对应着一个函数体,称为函数重载。3.在C++中,当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含的指针,称之为this指针。4.假定A为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为x.a()。5.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为n-1。6.在C++中,对于基类的protected成员,当以public方式派生一个新类时,该成员将成为派生类的protected成员。7.能够用来作为基类派生出新类,却不能创建自己的对象的类称为抽象类。8.在C++程序中使用的cout标识符是系统类库中定义的ostream类中的一个对象。9.若x=5,y=10,则xy的逻辑值为False。10.执行“charch=14*5+2;coutchendl;”语句序列后,得到的输出结果为H。三、阅读下列程序,写出执行结果(本大题共5小题,每小题4分,共20分)1.#includeiomanip.hvoidmain(){inta[9]={2,4,6,8,10,12,14,16,18};for(inti=0;i9;i++){coutsetw(5)*(a+i);if((i+1)%3==0)coutendl;}}运行结果:246810121416182.#includeiostream.h#includestring.hvoidmain(){char*a[5]={student,worker,cadre,soldier,peasant};char*p1,*p2;p1=p2=a[0];for(inti=0;i5;i++){if(strcmp(a[i],p1)0)p1=a[i];if(strcmp(a[i],p2)0)p2=a[i];}coutp1,p2endl;}运行结果:worker,cadre3.#includeiostreamusingnamespacestd;classSimple{intx,y;public:Simple(){x=y=0;}Simple(inti,intj){x=i;y=j;}voidcopy(Simple&s);voidsetxy(inti,intj){x=i;y=j;}voidprint(){coutx=x,y=yendl;}};voidSimple::copy(Simple&s){x=s.x;y=s.y;}voidfunc(Simples1,Simple&s2){s1.setxy(30,40);s2.setxy(70,80);}voidmain(){Simpleobj1(1,2),obj2;obj2.copy(obj1);func(obj1,obj2);obj1.print();obj2.print();}运行结果:x=1,y=2x=70,y=804.#includeiostream.hclassA{public:A();voidShow();~A();private:staticintc;};intA::c=0;A::A(){coutconstructor.endl;c+=10;}voidA::Show(){coutc=cendl;}A::~A(){coutdestructor.endl;}voidmain(){Aa,b;a.Show();b.Show();}运行结果:constructorconstructorc=20c=20destructordestructor5.#includeiostream.hclassbase{intn;public:base(){};base(inta){coutconstructingbaseclassendl;n=a;coutn=nendl;}~base(){coutdestructingbaseclassendl;}};classsubs:publicbase{intm;public:subs(inta,intb):base(a){coutconstructingsubclassendl;m=b;coutm=mendl;}~subs(){coutdestructingsubclassendl;}};voidmain(){subss(1,2);}运行结果:constructingbaseclassn=1constructingsubclassn=2应为mdestructingsubclassdestructingbaseclass四、完成程序题(本大题共5小题,每小题4分,共20分)1.#includeiostream.hclassSample{intx,y;public:Sample(){x=y=1;}Sample(inta,intb){x=a;y=b;}voiddisp(){coutx=x,y=yendl;}};voidmain(){Samples1,s2(2,3);s1.disp();s2.disp();}输出结果为:x=0,y=0x=2,y=32.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。#includeiostreamusingnamespacestd;constdoublepi=3.14159;voidmain(){doubler;coutr=;cinr;doublel=2.0*pi*r;doubles=pi*r*r;coutThelongis:lendl;coutTheareais:sendl;}3.#includeiostreamusingnamespacestd;voidmain(){floata,b;floatcha(floatx,floaty);//函数cha的原型声明a=12.5;b=6.5;floatc=cha(a,b);//调用函数chacoutcendl;}floatcha(floatx,floaty){floatw;w=x-y;returnw;}4.根据输出结果,在下划线处填上正确的语句。#includeiostream.hclassBase{public:virtualvoidPrint(){coutBase::Printendl;}};classClassA:publicBase{public:voidPrint(){coutClassA::Printendl;}};classClassB:publicBase{public:voidPrint(){coutClassB::Printendl;}};voidmain(){ClassAa;ClassBb;Base*p;p=&a;p-Print();p=&b;p-Print();}输出结果为:ClassA::PrintClassB::Print5.#includeiostreamusingnamespacestd;templateclassTTfun(Tx)//定义函数模板{Ty;y=x*x;returny;}voidmain(){floata=2.5;coutfun(a)endl;}五、编程题(本大题共2小题,每小题10分,共20分)1.创建一个雇员类employee,其数据成员有姓名、街道地址、市、省和邮政编码,将该类的对象数据打印出来。解:#includeiostream.h#includestring.hclassemployee{protected:charname[10];//姓名charstreet[20];//街道地址charcity[10];//市charprov[10];//省charpost[7];//邮政编码intno;//记录序号public:employee(char[],char[],char[],char[],char[],int);voidchangename(charstr[]);voiddisplay();};employee::employee(charn[],chars[],charc[],charp1[],charp2[],intnum){strcpy(name,n);strcpy(street,s);strcpy(city,c);strcpy(prov,p1);strcpy(post,p2);no=num;}voidemployee::display(){cout输出记录noendl;cout姓名:nameendl;cout街道地址:streetendl;cout市:cityendl;cout省:provendl;cout邮政编码postendl;}voidmain(){employeeobj1(王华,中华路15号,武汉市,湖北省,430070,1);employeeobj2(杨丽,天津路30号,南京市,江苏市,210020,2);obj1.display();obj2.display();}运行结果:输出记录1姓名:王华街道地址:中华路15号市:武汉市省:湖北省邮政编码:430070输出记录2姓名:杨丽街道地址:天津路30号市:南京市省:江苏省邮政编码:2100202.设计一个学生类student,包括数据成员姓名和三门课程成绩,利用重载运算符“+”将所有学生的成绩相加放在一个对象中,再对该对象求各门课程的平均分。解:#includeiostream.h#includeio