版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++程序设计试卷及答案试卷A一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.对C++语言和C1.A.C++兼容CBA.C++兼容CB.C++部分兼容CC.C++不兼容CD.C兼容C++2.A.cerrB.2.A.cerrB.cinC.coutD.cfile在C++中使用流进行输入输出,其中用于屏幕输出的对象是(A.freeB.createA.freeB.createC.deleteD.realse3.对使用关键字new3.4.如没有使用private4.A.privateB.publicC.D.friend5.A.privateB.publicC.D.tected使用值传递方式将实参传给形参,下列说法正确的是(A.形参是实参的备份B.实参是形参的备份C.形参和实参是同一对象D.形参和实参无联系6.A.其之前所有参数都必须赋值B.6.A.其之前所有参数都必须赋值B.其之后所有参数都必须赋值C.其前、后所有参数都必须赋值D.其前、后所有参数都不必赋值在函数调用时,如某一默认参数要指明一个特定值,则有(7.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是(A.intm=A.intm=max(22,max(59,70));B.intm=max(max(22,59),70);C.8.intm=max(22,59,70);下列哪个类型函数不适合声明为内联函数(C.8.intm=max(22,59,70);下列哪个类型函数不适合声明为内联函数(D.intm=max(59,max(22,70));A.函数体语句较多B.函数体语句较少C.函数执行时间较短D.函数执行时间过长9.A.intFunc(int,int,int)9.A.intFunc(int,int,int);B.doubleFunc(int,int);C.doubleFunc(double,double);D.doubleFunc(int,double);intFunc(int,int);不可与下列哪个函数构成重载(10.对类中声明的变量,下列描述中正确的是(A.属于全局变量B.只属于该类C.属于该类,某些情况下也可被该类不同实例所共享DA.属于全局变量B.只属于该类C.属于该类,某些情况下也可被该类不同实例所共享D.任何情况下都可被该类所有实例共享11.类的私有成员可在何处访问(通过子类的对象访问B.本类及子类的成员函数中通过子类的对象访问B.本类及子类的成员函数中C.通过该类对象访问D.本类的成员函数中12.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是()编译器总是自动创建一个不带参数的构造函数这个类没有构造函数这个类不需要构造函数该类不能通过编译13.一个类可包含析构函数的个数是()A.0个B.1个C.至少一个D.0个或多个this指针存在的目的是()保证基类公有成员在子类中可以被访问保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码保证基类保护成员在子类中可以被访问保证基类私有成员在子类中可以被访问下列关于类的权限的描述错误的是()类本身的成员函数只能访问自身的私有成员类的对象只能访问该类的公有成员普通函数不能直接访问类的公有成员,必须通过对象访问—个类可以将另一个类的对象作为成员在编译指令中,宏定义使用哪个指令()A.#includeB.#defineC.#ifD.#else设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是()A.A类构造函数先执行C.两者并行执行下列描述错误的是()A.在创建对象前,静态成员不存在C.静态成员不能是虚函数对于友元描述正确的是()A.友元是本类的成员函数C.友元不是函数B.成员构造函数先执行D.不能确定B.静态成员是类的成员静态成员函数不能直接访问非静态成员B.友元不是本类的成员函数D.友元不能访问本类私有成员在protected派生方式中,派生类可以访问基类中的哪种成员()A.public和privateB.public和protectedC.protected和privateD.仅protected二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。TOC\o"1-5"\h\z设要把一个文件输出流对象myFile与文件“f:\myText.txt相关联,所用的C++语句是:。C++中ostream类的直接基类是。23.运算符[]只能用运算符来重载,不能用友元运算符来重载。定义虚函数所用的关键字是。vector类中用于返回向量中第1个对象的方法是。在C++中,利用向量类模板定义一个具有20个char的向量E,其元素均被置为字符't',实现此操作的语句是类的继承是指子类继承基类的和成员函数。不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为。指令指示编译器将一个源文件嵌入到带该指令的源文件之中。设类A有成员函数voidFun(void);若要定义一个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是:。设在程序中使用如下语句申请了一个对象数组:Point*ptr=newPoint[2];则在需要释放ptr指向的动态数组对象时,所使用的语句是。在保护派生中,基类权限为Private的成员在派生类中。类A有如下成员函数intA::fun(doublex){return(int)x/2;}intA::fun(intx){returnx*2;}设a为类A的对象,在主函数中有ints=a.fun(6.0)+a.fun(2),则执行该语句后,s的值为。对象传送的消息一般由3部分组成:接收对象名、调用操作名和。将指向对象的指针作为函数参数,形参是对象指针,实参是对象的。在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是。在C++中,声明布尔类型变量所用的关键字是。执行下列代码inta=29,b=100;cout<<setw(3)<<a<<b<<endl;程序的输出结果是:。执行下列代码coutvv〃Hex:〃<<hex<<255;程序的输出结果为。C++语言中可以实现输出一个换行符并刷新流功能的操控符。三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.#include<iostream.h>main(){intx=5,y=6;constint*p=&x;*p=y;cout<<*p<<endl;}42.#include<iostream.h>classf{private:intx,y;public:f1(){x=0;y=0;}print(){coutvvxvv“vvyvvendl;}}main(){fa;a.f1(1,1);a.print();}43.#include<iostream.h>classf{private:intx=0,y=0;public:voidf1(inta,intb){x=a;y=b;}voidget(){cout<<x<<'<<y<<;en}dl};main(){fa;a.f1(1,3);a.get();}44.#include<iostream.h>classpoint{private:floatx;public:voidf(floata){x=a;}voidf(){x=0;}friendfloatmax(point&a,point&b);};floatmax(point&a,point&b){return(a.x>b.x)?a.x:b.x;}main(){pointa,b;a.f(2.2);b.f(3.3);cout<<a.max(a,b);}45.#include<iostream.h>template<classT>classf{private:Tx,y;public:voidf1(Ta,Tb){x=a;y=b;}Tmax(){retum(x>y)?x:y;}};main(){fa;a.f1(1.5,3.8);'cout<<a.x<<a.y<<a.max()<<endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)46.完成下面类中的成员函数的定义。classpoint{private:intm,n;public:point(int,int);point(point&);};point::point(inta,intb){m=a;=b;}point::point(){m=t.m;n=t.n;}47.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。#include<iostream>usingnamespacestd;pi=3.14159;voidmain(){doubler;coutvv〃r=〃;\doublel=2.0*pi*r;doubles=pi*r*r;coutvv〃\nThelongis:〃vvlvvendl;coutvv〃Theareais:〃vvsvvendl;}48.在下划线处填上缺少的部分。#include<iostream>#include<fstream>usingnamespacestd;classcomplex{public:intreal;intimag;complex(intr=0,inti=0){real=r;imag=i;}};complexoperator+(,complex&b){intr=a.real+b.real;inti=a.imag+b.imag;return;}voidmain(){complexx(1,2),y(3,4),z;z=x+y;coutvvz.realvv"+〃vvz.imagvv"i〃vvendl;}49.程序的输出结果如下:1,950,30请根据输出数据在下面程序中的下划线处填写正确的语句。源程序如下:#include<iostream>usingnamespacestd;classbase{private:intm;public:base(){};base(inta):m(a){}intget(){returnm;}voidset(inta){m=a;}};voidmain(){base*ptr=newbase[2];ptr->set(30);ptr=;ptr->set(50);basea[2]={1,9};coutvva[0].get()vv〃,〃vva[l].get()vvendl;coutvvptr->get()<<〃,〃;ptr=ptr-l;cout<<<<endl;delete[]ptr;}50.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。#include<iostream>usingnamespacestd;voidmain(){floata,b;//函数cha的原型声明a=l2.5;b=6.5;floatc=;//调用函数chacout<<c<<endl;}floatcha(floatx,floaty){floatw;w=x-y;returnw;}五、程序分析题(本大题共4小题,每小题5分,共20分)51.给出下面程序的输出结果。#include<iostream.h>template<classT>classSample{Tn;public:Sample(Ti){n=i;}intoperator==(Sample&);};template<classT>intSample<T>::operator==(Sample&s){if(n==s.n)return1;elsereturn0;}voidmain(){Sample<int>sl(2),s2(3);.coutvv〃si与s2的数据成员〃vv(sl==s2?〃相等〃:〃不相等“)vvendl;Sample<double>s3(2.5),s4(2.5);coutvv"s3与s4的数据成员〃vv(s3==s4?〃相等〃:〃不相等“)vvendl;}52.给出下面程序的输出结果。
#include<iostream>usingnamespacestd;template<classT>Tmax(Tml,Tm2){return(m1>m2)?ml:m2:}voidmain(){)<<endl;coutvvmax(l,7)<<“\t〃vvmax(2.0,5.0)vvendl;coutvvmax('yzb‘vv〃\t〃vvmax(〃A〃,〃a")<<endl;53.给出下面程序的输出结果#include<iostream>usingnamespacestd;classA{public:intx;A(){}A(inta){x=a;}intget(inta){returnx+a;}};voidmain(){Aa(8);int(A::*p)(int);p=A::get;cout<<(a.*p)(5)<<endl;A*pi=&a;cout<<(pi->*P)(7)<<endl;}54.给出下面程序的输出结果。include<iostream>#include<string>usingnamespacestd;classBook{char*title;char*author;intnumsold;public:Book(){}Book(constchar*strl,constchar*str2,constintnum)intlen=strlen(strl);title=newchar[len+l];strcpy(title,str1);len=strlen(str2);author=newchar[len+1];strcpy(author,str2);numsold=num;}voidsetbook(constchar*str1,constchar*str2,constintnum){intlen=strlen(str1);title=newchar[len+1];strcpy(title,str1);len=strlen(str2);author=newchar[len+1];strcpy(author,str2);numsold=num;}〜Book(){deletetitle;deleteauthor;}voidprint(ostream&output){outputv<〃书名:〃vvtitlevvendl;outputv<〃作者:〃vvauthorvvendl;outputvv〃月销售量:〃vvnumsoldvvendl;}.};voidmain(){Bookobj1(〃数据结构〃,〃严蔚敏〃,200),obj2;obj1.print(cout);obj2.setbook(〃C++语言程序设计〃,〃李春葆〃,210);obj2.print(cout);}六、程序设计题(本大题共1小题,共10分)55.在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形#includeviostream.h>#includevmath.h>classpoint{private:floatx,y;public:point(floata,floatb){x=a;y=b;}point(){x=0;y=0;},voidset(floata,floatb){x=a;y=b;}floatgetx(){returnx;}floatgety(){returny;}};classtri{pointx,y,z;floats1,s2,s3;public;...settri(....);//用于输入三个顶点坐标test();//用于判断是否构成三角形};请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1A2C3C4A5A6A7C8A9B10C11D12A13B14B15A16B17B18A19B20B二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.myFile.open(“f:\\myText.txt”)22.ios23.成员24.virtual25.front26.Vectorvchar>E(20't‘)27数据成员28多态性29#include30Void(A::*pafn)()=A::Fun;31Delete[]ptr;32不能直接访问33734必要的参数35地址36-137bool382910039Hex:ff40endl三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。.*p=y;//*p不能作为左值.a.fl(l,l);〃函数原型不匹配.private:intx=0,y=0;〃数据成员不能直接赋值.coutvva.max(a,b);//max不是a的成员函数.coutvva.xvva.yvva.max()vvendl;〃私有成员不能直接访问四、完成程序题(本大题共5小题,每小题4分,共20分)___n=b;point::point(__point&_t).constdouble__pi=3.14159;cin>>r;complexoperator+(__complex&a,complex&b)return_complex(r,i)___;ptr=__ptr+l;cout<<___ptr->get()<<endl;_floatcha(floatx,floaty)_;_floatc=_cha(a,b);//调用函数cha五、程序分析题(本大题共4小题,每小题5分,共20分).S1与S2的数据成员不相等S3与S4数据成员相等52.75—书名:数据结构作者:严蔚敏
53.a131554.六、程序设计题(本大题共1小题,共10分)55.voidtri::settri(floatxlfloatylfloatx2,floaty2,floatx3floaty3){x.set(x1,y1);y.set(x2,y2);z.set(x3,y3);}voidtri::test(){s1=sqrt((x.getx()-y.getx())*(x.getx()-y.getx())+(x.gety()-y.gety())*(x.gety()-y・gety()));s2=sqrt((x.getx()-z.getx())*(x.getx()-z.getx())+(x.gety()-z.gety())*(x.gety()-z.gety()));s3=sqrt((y・getx()-z.getx())*(y.getx()-z.getx())+(y・gety()-z.gety())*(y.gety()-z.gety()));一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。对C++中主函数描述正确的是()名称为main,可为多个B.名称不限,可为多个C.名称为main,必须有且只能有一个D.名称不限,必须有且只能有一个调用声明为intresult(inta,intb)的函数时,正确的方法是()result(1,2)B.result(1)C.result(0.1,0.3)D.result(1,2,3)3.用于包含C++标准库iostream的预处理指令是()B.#include<iostream>D.#include‘iostream'B.#include<iostream>D.#include‘iostream'B.boolC.#define‘iostream'TOC\o"1-5"\h\z无类型标识符是指()A.voidC.shortD.long从本质上看,引用是被引用变量的()A.拷贝B.别名C.复制D.克隆下面关于数组的初始化正确的是()charstr[]={'a','b','c'};charstr[2]={'a','b','c'};charstr[1][2]={{'a','b'},{'e','d'}};charstr[][]={'a','b','c'};C++类中定义的成员默认访问属性为()A.publicB.privateC.protectedD.friend8•决定C++语言中函数的返回值类型的是()return语句中的表达式类型调用该函数时系统随机产生的类型调用该函数时的主调用函数类型在定义该函数时所指定的数据类型9.函数int&min(int&,int&)返回参数中较小者,设有两整型变量inta=10;intb=15;在执行语句在执行语句min(a,b)--;之后,a,b值分别为()A.9,14B.9,15C.10,14D.10,15TOC\o"1-5"\h\z声明函数为内联函数时所使用的关键字为()A.constB.inlineC.shortD.signed函数intsum(inta=l,intb=1,intc=3)可与下列哪个函数同时声明()A.doublesum(int);B.charsum(int,int);C.intsum(double);D.intsum(int,int,int);函数模板templatevtypenameT>voidFunc(T,T)可具有下列哪种实例化形式()A.voidFunc(float,int)B.voidFunc(char,char)C.voidFunc(int,double)D.voidFunc(bool,float)下列访问成员的方式哪个是正确的()A.对象名•对象成员名B.对象指针名•对象成员名C.对象名—对象成员名D.类名—对象成员名14•对类A,复制构造函数的原型是()A.A::A(constA&);B.A::A(constA*);C.A::A(constA);D.A::A();对classpoint,如使用point*ptr=newpoint[2];创建对象数组,则删除此数组使用的语句是()A.deleteptr[2];B.delete[]ptr;C.deleteptr[];D.delete[2]ptr;下列哪个编译指令不属于条件编译指令()A.#ifB.#elseC.#endifD.#error类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x的值为()A.未初始化B.等于a.xC.等于0D.随机TOC\o"1-5"\h\z使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是()A.strlen()B.strcap()C.strcat()D.strcmp()基类中的public成员,通过public派生,其在派生类中的访问权限为()A.不可访问B.privateC.protectedD.public不同对象调用同名函数,但导致完全不同行为的现象称为()A.抽象B.封装C.继承D.多态性二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。在C++语言的面向对象设计框架中,是程序的基本组成单元。执行代码doublepi=3.1415192;coutvvsetprecision(3)vvpi;程序的输出结果是C++语言提供的的基本控制结构可以分为3种类型:顺序结构、和循环结构。TOC\o"1-5"\h\z要使用STL库提供的对数组进行降幂排序算法,在源程序中需要包含的头文件是。在C++标准库中,用类来表示复数。将对象作为函数参数,是将实参对象的传递给形参对象,这种传递是单向的。C++函数的返回类型可以是除数组与以外的任何类型。28•能提供封装的C++关键字是。在C++的类声明中,用public关键字声明的类成员的访问权限是。开发一个C++语言程序的步骤通常包括编辑、、连接、运行和调试。C++类中的函数在对象的生存期结束时被自动调用。友元函数可以存取类的、公有成员和保护成员。TOC\o"1-5"\h\z若类的成员函数用关键字static进行修饰,这样的成员函数称为。在C++中,创建派生类对象时,总是先从的初始化开始的。类的继承是指派生类继承基类的数据成员和。36•在C++中,利用向量类模板定义一个具有20个double的向量,其元素均被置为0.5,实现此操作的语句是vector类中用于返回向量中的最后一个对象的方法是。虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数声明时应使用关键字。在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计白特性。执行下列代码cout<<showpoint<<123.0;程序的输出结果是。三、改错题(本大题共5小题,每小题4分,共20分)下面的每个程序都有一处错误,请用下横线标出错误所在行并给出修改意见。#include<iostream>usingnamespacestd;intmain(){intnum;max=10;num=1while(num<max)num++;cout<<“Num=“<<num;return0;}#include<iostream>usingnamespacestd;classA{voidshow(){coutvv〃Hello!";}};intmain(){Aa;a.show();return0;}#include<iostream>usingnamespacestd;intmain(){constintnum=20;intscores[num];for(inti=1;i<=num;i++){scores[i]=i;}return0;}#include<iostream>usingnamespacestd;classCMax{private:intxx;intyy;public:CMax(intx,inty){xx=x;yy=y;}voidsetValue(intx,inty){xx=x;yy=y;}intmax(){returnxx>yy?xx:yy;}};voidmain(){CMaxm();m.setValue(20,30);coutvv〃Max=〃vvm.max()vvendl;}#includeviosiream>usingnamespacestd;classA{public:charname[255];private:char*getName(){returnname;}};classB:publicA{public:B(char*n){strcpy(name,n);}};voidmain(){Bb(〃Hello!〃);coutvv〃Name:"vvb.getName();}四、完成程序题(本大题共5小题,每小题4分,共20分将下面程序补充完整,使程序输出结果为:BeginWelcomeShowEnd程序如下:#includeviostream>usingnamespacestd;classA{public:{coutvv"Begin"vvendl;}voidshow(){coutvv"Show"vvendl;}{coutvv"End"vvendl;}};Aobject;intmain(){coutvv"Welcome"vvendl;object.show();return0;}请将下面程序补充完整,使程序可以正常打印9x9乘法口诀。#includeviostream>usingnamespacestd;classA{private:inta;intb;public:{a=x;b=y;}voidset(intx,inty){a=x;b=y;}voiddisplay(){coutvvavv*'vvbvv'='vva*b;}};intmain(){Aa(1,1);for(inti=1;iv=9;i++){for(intj=1;;j++){a.set(j,i);a.display();coutvv"";}coutvvendl;}return0;}将下面程序补充完整,使程序可以输入学生信息并计算平均成绩#includeviostream>#includevstring.h>usingnamespacestd;classStudent{private:charname[255];intscore[10];public:Student(charn[],ints[]){,for(inti=0;i<10;i++){score[i]=s[i];}}voidShow(){intsum=0;for(inti=0;i<10;i++){}coutv<〃名字:〃<<namevv〃,平均成绩:〃vvsum/10;}};voidmain(){charname[255];intscore[10];coutv<〃姓名:〃;cin>>name;for(inti=0;i<10;i++){coutv<〃成绩〃vvi+lvv〃:〃;cin>>score[i];}Students(name,score);s.Show();}将下面程序补充完整,使程序可以正常运行,并释放内存。#includeviostream.h>classA{private:T*data;intlength;public:A(intlen){length=len;data=newT[len];}〜A(){}T&operator[](inti){returndata[i];}};intmain(){Avint>obj(2);obj[0]=1;obj[1]=2;coutvvobj[0]vvendl;coutvvobj[1]vvendl;}}return0;}将下面程序补充完整,使程序运行结果为C1assAClassB程序如下:#include<iostream.h>#include<string.h>classA{public:virtualvoidGetA()=0;};classB:publicA{private:charstr[32];public:voidGetA(){coutvv〃ClassA"vvendl;}constchar*GetB(){}B(char*s){strcpy(str,s);}};voidmain(){A*a;Bb("ClassB");a=;a->GetA();coutvvb.GetB()vvendl;return;}五、程序分析题(本大题共2小题,每小题5分,共10分)#includeviostream>usingnamespacestd;intmain(){inti,j;for(i=l;iv=4;i+=1)for(j=2;jv=4;j+=j){if(i+jv5)coutvv"+";elsecoutvv"*";}return0;#include<iostream>usingnamespacestd;classA{inta;public:A(intaa=0){a=aa;}〜A(){cout<<"DestructorA!〃vvavvendl;}};classB:publicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;}〜B(){cout<<"DestructorB!"<<b<<endl;}};voidmain(){Bx(5),y(6,7);}六、程序设计题(本大题10分)53.下面Shape类是一个表示形状的抽象类,Area()为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。形状的抽象类声明如下:classShape{public:virtualdoubleArea()=0;};一、单项选择题(本大题共20小题,每小题1分,共20分)C2.A3.B4.A5.B6.A7.B8.D9.B10.B11.C12.B13.A14.A15.B16.D17.B18.C19.D20.D二、填空题(本大题共20小题,每小题1分,共20分)21.垄22.3.1423.选择结构24.plex26.值27.函数28.Class29.公有的30.编译31.析构32.私有成员33.静态成员函数34.基类35.成员函数36.Vector<double>E(20,0.5)37.back()38.Virtual39.封装40.123.000三、改错题(本大题共5小题,每小题4分,共20分)max=10;在main函数中max变量未定义a.show();或voidshow()类A的成员函数show默认为私有,不可访问i<=num或scores[i]=i;数组访问越界44CMaxm();定义对象时,参数和给出构造函数不一致cout<<"Name:"vvb.getName();不可访问基类A的私有成员函数getName四、完成程序题(本大题共5小题,每小题4分,共20分)A()~A()47.A(intx,inty)j<=iStrcpy(name,n)sum+=score[i];Template<classT>delete[]data50.Returnstr&b五、程序分析题(本大题共2小题,每小题5分,共10分)51.+*+*****52.DestructorB!7DestructorA!6DestructorB!0DestructorA!5六、程序设计题(本大题共1小题,共10分)classcircle:publicshape{public:Circle(doubler){radius=r;}doublearea()const{return3.1416*radius*radius;}private:doubleradius;}classtrapezoid:publicshape{public:trapezoid(doubletop,doublebottom,doublehigh){t=top;b=bottom;h=high;}doublearea()const{return(t+b)*h*0.5;}private:doublet,b,h;}classtriangle:publicshape{public:triangle(doublebottom,doublehigh){b=bottom;h=high;}doublearea()const{returnb*h*0.5;}private:doubleb,h;}C++面向对象程序设计模拟试题3一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.说明虚函数的关键字是()。A.inlineB.virtualC.defineD.static在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。A.mainB.MAINC.nameD.functioncout是某个类的标准对象的引用,该类是()。A.ostreamB.istreamC.stdoutD.stdin如果在类外的非类的成员函数中有函数调用CPoint::func();贝V函数func()是类CPoint的()。A.私有静态成员函数B.公有非静态成员函数C.公有静态成员函数B.友元函数如果class类中的所有成员在定义时都没有使用关键字public、private或protected,贝V所有成员缺省定义为()。A.publicB.protectedC.privateD.static一个类的所有对象共享的是()。A.私有数据成员B.公有数据成员C.保护数据成员D.静态数据成员动态联编所支持的多态性称为()。A.虚函数B.继承C.编译时多态性D.运行时多态性定义类模板时要使用关键字()。A.constB.newC.deleteD.template对虚基类的定义()。A.不需要使用虚函数B.必须使用虚函数C.必须使用privateD.必须使用public类类型转换函数()。A.不能带有参数B.只能带一个参数C.只能带2个参数D.只能带3个参数二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“厂错误的划上“X”。虚函数在基类和派生类之间定义,并且要求函数原型完全一致。()抽象类可以用来直接创建对象。()3•内联函数类体内实现时必须使用关键字inline°()模板类与类模板的意义完全相同。()常对象只能调用常成员函数。()重载函数要求函数有相同的函数名,但通常具有不同的参数序列。()三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。在用C++进行程序设计时,最好用()代替malloc。函数模板中紧随template之后尖括号内的类型参数都要寇以保留字()。3.编译时多态性可以用()函数实现。4.拷贝构造函数用它所在类的()作为参数。5.用关键字static修饰的类的成员称为()成员。6.重载运算符“+”的函数名为()。四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果1.阅读下面程序,写出输出结果。#include<iostream>usingnamespacestd;classCArray{public:CArray(intiArray[],intiSize):m_pArray(iArray),m_iSize(iSize){}intGetSize(){returnm_iSize;}int&operator[](intiIndex){returnm_pArray[iIndex-1];}private:int*m_pArray;//指向一个数组空间intm_iSize;//数组元素个数};intmain(){ints[]={3,7,2,1,5};CArrayoArray(s,5);oArray[1]=9;for(inti=1;i<=5;i++){cout<<oArray[i]<<"";}cout<<endl;return0;}上面程序的输出结果为:2.阅读下面程序,写出输出结果#include<iostream>usingnamespacestd;template<classType>voidPrint(Typea[],intn){for(inti=0;i<n;i++){cout<<a[i]<<"";}}intmain(){inta[]={5,6,8};doubleb[]={6.8,9.6};Print(a,sizeof(a)/sizeof(int));Print(b,2);cout<<endl;return0;}上面程序的输出结果为:3.阅读下面程序,写出输出结果#include<iostream>usingnamespacestd;classCTest{public:CTest(intiVar):m_iVar(iVar){m_iCount++;}~CTest(){}voidPrint()const;staticintGetCount(){returnm_iCount;}private:intm_iVar;staticintm_iCount;};intCTest::m_iCount=0;voidCTest::Print()const{cout<<this->m_iVar<<""<<this->m_iCount<<}intmain(){CTestoTest1(6);oTest1.Print();CTestoTest2(8);oTest2.Print();cout<<CTest::GetCount();cout<<endl;return0;}上面程序的输出结果为:4.阅读下面程序,写出输出结果。#include<iostream>usingnamespacestd;classCTest{public:CTest(intiX=0,intiY=0,intiZ=0):m_iZ(iZ){m_iX=iX;m_iY=iY;}voidPrint(){cout<<m_iX<<endl;cout<<m_iY<<endl;}voidPrint()const{cout<<m_iZ<<endl;}private:intm_iX,m_iY;constintm_iZ;};intmain(){CTestoTest1;oTest1.Print();CTestoTest2(1,6,8);oTest2.Print();constCTestoTest3(6,0,18);oTest3.Print();cout<<endl;return0;}上面程序的输出结果为:五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原因,并加以改正1.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include<iostream>//1usingnamespacestd;//2//3classCTest//4{//5public://6CTest(intiVar=0):m_iArr(iVar)//7{//8cout<<"构造函数:"<<m_iArr<<endl;//9}//10//11void~CTest()//12{//13cout<<"析造函数:"<<m_iArr<<endl;//14}//15//16private://17intm_iArr;//18};//19//20//21intmain()//22{//23CTestoTest1,oTest2(8);//24cout<<endl;//25//26return0;//27}//282.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include<iostream>//1usingnamespacestd;//2//3classCTest//4{//5public://6CTest(intiA=0,intiB):m_iA(iA),m_iB(iB)//7{//8}//9//10voidShow()//11{//12cout<<m_iA<<","<<m_iB<<endl;//13}//14//15private://16intm_iA,m_iB;//17};//18//19//20intmain()//21{//22CTestoTest(12,16);//23oTest.Show();//24cout<<endl;//25//26return0;//27}//283.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正#include<iostream>//1usingnamespacestd;//2//3classCTest//4{//5public://6CTest(intiVar=0)//7{//8m_iVar=iVar//9}//10//11voidPrint()const//12{//13cout<<m_iVar<<endl;//14}//15//16private://17constintm_iVar;//18};//19//20//21intmain()//22{//23constCTestoTest(16);//24oTest.Print();//25cout<<endl;//26//27return0;//28}//294.下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正#include<iostream>//1usingnamespacestd;//2//3classCBase//4{//5public://6CBase(intiBase=0):m_iBase(iBase)//7{//8}//10//11virtualvoidShow()=0;//12//13intGet()const//14{//15returnm_iBase;//16}//17//18private://19intm_iBase;//20};//21//22classCDerive:publicCBase//23{//24public://25CDerive(intiBase=0,intiDerive=0):CBase
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石河子大学《影像诊断学》2023-2024学年第一学期期末试卷
- 石河子大学《数据库管理》2021-2022学年期末试卷
- 石河子大学《景观生态学原理》2022-2023学年第一学期期末试卷
- 沈阳理工大学《数据库原理》2023-2024学年期末试卷
- 沈阳理工大学《化工原理A》2021-2022学年第一学期期末试卷
- 沈阳理工大学《电路实验》2021-2022学年期末试卷
- 沈阳理工大学《产品语义学应用设计》2021-2022学年第一学期期末试卷
- 沈阳理工大学《nux系统程序设计》2023-2024学年期末试卷
- 合伙承包高钙粉合同
- 同步新课堂高中历史专题二近代中国维护国家主权的斗争课时训练7伟大的抗日战争含解析人民版必修1
- 【8物(科)期中模拟】合肥市2023-2024学年八年级上学期期中模拟物理作业试卷
- 情商与智慧人生学习通超星期末考试答案章节答案2024年
- 液化气站双重预防体系手册
- 盘扣式卸料平台施工方案
- 《无人驾驶航空器飞行管理暂行条例》考试复习题库(含答案)
- 引发剂I分解(课堂PPT)
- 机电工程预留预埋质量检查表
- 设备对中技术PPT课件
- 分析工具(世纪大桥标准答案)
- 监理取费标准670号文
- 第2章推销自己PPT课件
评论
0/150
提交评论