您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 自考C++试题及答案(9套合集)-3-4.
2010年全国自考C++程序设计模拟试卷(三)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.设有定义inti;doublej=5;,则10+i+j值的数据类型是()A.intB.doubleC.floatD.不确定2.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()A.constchar*p=“ABCD”;B.char*constp=“ABCD”;C.charconst*p=“ABCD”;D.constchar*constp=“ABCD”;3.类的构造函数被自动调用执行的情况是在定义该类的()A.成员函数时B.数据成员时C.对象时D.友元函数时4.已知类A是类B的友元,类B是类C的友元,则()A.类A一定是类C的友元B.类C一定是类A的友元C.类C的成员函数可以访问类B的对象的任何成员D.类A的成员函数可以访问类B的对象的任何成员5.假定一个类的构造函数为“A(inti=4,intj=0){a=i;b=j;}”,则执行“Ax(1);”语句后,x.a和x.b的值分别为()A.1和0B.1和4C.4和0D.4和16.关于this指针使用说法正确的是()A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码B.保证基类私有成员在子类中可以被访问。C.保证基类保护成员在子类中可以被访问。D.保证基类公有成员在子类中可以被访问。7.所谓多态性是指()A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C.一个对象调用不同名称的函数D.一个对象调用不同名称的对象8.友元关系不能()A.提高程序的运行效率B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.继承9.语句ofstreamf(“TEMP.DAT”,ios::app|ios::binary)?的功能是建立流对象f,试图打开文件TEMP.DAT并与之连接,并且()A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件10.构造函数不具备的特征是()A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明11.在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()A.受限制B.保持不变C.受保护D.不受保护12.假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb;},则执行Ax(4,5);语句后,x.a和x.b的值分别为()A.3和15B.5和4C.4和20D.20和513.C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念14.在类中说明的成员可以使用关键字的是()A.publicB.externC.cpuD.register15.C++语言中所有在函数中定义的变量,连同形式参数,都属于()A.全局变量B.局部变量C.静态变量D.函数16.在私有继承的情况下,基类成员在派生类中的访问权限()A.受限制B.保持不变C.受保护D.不受保护17.使用地址作为实参传给形参,下列说法正确的是()A.实参是形参的备份B.实参与形参无联系C.形参是实参的备份D.实参与形参是同一对象18.C++的继承性允许派生类继承基类的()A.部分特性,并允许增加新的特性或重定义基类的特性B.部分特性,但不允许增加新的特性或重定义基类的特性C.所有特性,并允许增加新的特性或重定义基类的特性D.所有特性,但不允许增加新的特性或重定义基类的特性19.对于int*pa[5];的描述,正确的是()A.pa是一个指向数组的指针,所指向的数组是5个int型元素B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量C.pa[5]表示某个数组的第5个元素的值D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针20.以下基类中的成员函数表示纯虚函数的是()A.virtualvoidtt()=0B.voidtt(int)=0C.virtualvoidtt(int)D.virtualvoidtt(int){}二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。1.单目运算符作为类成员函数重载时,形参个数为__0_个。2.抽象类中至少要有一个_纯虚__函数。3.设类A有成员函数voidf(void);若要定义一个指向类成员函数的指针变量pf来指向f,该指针变量的声明语句是:_void(A::*pf)(void);__。4.执行下列程序doublea=3.1415926,b=3.14;coutsetprecision(5)a,setprecision(5)bendl;程序的输出结果是3.1416,3.14___。5.vector类中用于删除向量中的所有对象的方法是___。6.重载的运算符保持其原有的_操作数__、优先级和结合性不变。7.编译时的多态性通过_重载__函数实现。8.基类的公有成员在派生类中的访问权限由_继承方式__决定。9.假设类X的对象x是类Y的成员对象,则“YObj”语句执行时,先调用类_X__的构造函数。10.下列程序段的输出结果是___。11.下列程序段的输出结果是___。12.C++中ostream的直接基类_ios__。13.intn=0;while(n=1)n++;while循环执行次数是_无限次__。14.C++中有两种继承:单继承和_多重继承__。15.在C++中,利用向量类模板定义一个具有10个int的向量A,其元素均被置为1,实现此操作的语句是___。16.vector类中向向量尾部插入一个对象的方法是___。17.C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取引用___方式。18.若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_声明__语句。19.在C++中有两种参数传递方式:传值和_引用__。20.将指向对象的引用作为函数的形参,形参是对象的引用,实参是_对象名__。三、改错题(本大题共5小题,每小题4分,共20分)1.classABC{inta;public:ABC(intaa)a(aa){}ABC(intaa):a(aa){};};2.#includeiostream.hclassAton{intX,Y;protected:intzx,zy;public:voidinit(inti,intj){zx=i;zy=j;}Aton(inti,intj,intn=0,intm=0){X=i,Y=j,zx=m,zy=n;}添加inlineintX(){returnX};};voidmain(){AtonA(25,20,3,5);A.init(5,9);coutA.X()endl;3.#includeiostream.hclassBas{public:~Bas(){coutBasconstructendl;}virtualvoidf()=0;};classDev:publicBas{public:~Dev(){coutBasconstructendl;}virtualvoidf(){coutDev::fendl;}};voidmain(){Bas*a=newBas();Bas*a;Devp;a=&p;a-f();}4.以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。#includeiostream.hvoidswap(int&a,int&b){a=a+b;b=a-b;a=a-b;}voidmain(){inta=19,b=15;couta=a,b=bendl;swap(&a,&b);swap(a,b);couta=a,b=bendl;}5.#includeiostream.hvoidmain(){inti(3),j(8);int*constp=&i;int*p=&i;cout*pendl;p=&j;cout*pendl;}四、完成程序题(本大题共5小题,每小题4分,共20分)1.在下面程序横线处填上适当内容,使程序执行结果为:hello,andylin。#includeiostream#includestring.husingnamespacestd;classmystring{public:char*pdata;mystring(intlen){pdata=newchar[len+1];}~mystring(){deletepdata;}voidshow(){coutpdataendl;}};voidfun(mystring**array,intlen){mystring*old=*array;_*array=newmystring(len)______;memcpy(*array,old,len);}voidmain(){mystringstr(20);mystring*pstr=&str;mystring**ppstr=&pstr;strcpy(str.pdata,hello,andylin);fun(ppstr,20);str.show();_______}2.在下面程序横线处填上适当字句,完成类的定义。classline;classbox{private:intcolor;intupx,upy;intlowx,lowy;public:friendintsame_color(linel,boxb);voidset_color(intc){color=c;}voiddefine_box(intx1,inty1,intx2,inty2){upx=x1;upy=y1;lowx=x2;lowy=y2;}};classline{private:intcolor;intstartx,starty;intendx,endy;public:friendintsame_color(linel,boxb);voidset_color(intc){color=c;}voiddefine_line(intx1,inty1,intx2,inty2){startx=x1;starty=y1;endx=x2;endy=y2;}};intsame_color(linel,boxb){if(l.color==b.color)return1;return0;}3.下面程序用来求直角三角形斜边长度。#includeiostream.h#includemath.hclassPoint{private:doublex,y;friendLine;__________public:Point(doublei=0,doublej=0){x=i;y=j;}Point(Point&p){x=p.x;y=p.y;}};classLine{private:Pointp1,p2;public:Line(Point&xp1,Point&xp2):p1(xp1),p2(xp2)________{}doubleGetLength();};doubleLine::GetLength(){doubledx=p2.x-p1.x;doubledy=p2.y-p1.y;returnsqrt(dx*dx+dy*dy);}voidmain(){Pointp1,p2(6,8);LineL1(p1,p2);coutL1.GetLength()endl;}4.在下面程序的底画线处填上适当的字句,使该程序执
本文标题:自考C++试题及答案(9套合集)-3-4.
链接地址:https://www.777doc.com/doc-6663541 .html