计算机程序设计(C++)期末测试客观题及答案.docx
一、单选题1、有关析构函数的说法不正确的是()0A.析构函数和构造函数一样可以有形参B.析构函数无任何函数类型C.析构函数的功能是做对象被注销前应做的工作D.析构函数有且仅有一个正确答案:A2、下列哪个关于加号、运算符重载的成员函数声明格式是正确的。A.POINToperator+(POINTa,POINTb);B.POINT+(POINTb);C.POINToperator+();DTOINToperator+(POINTb);正确答案:D3、假定POlNT为一个类,X为该类公有的数据成员,a为该类的一个对象,则访问a对象中数据成员X的格式为()。A.a->xB.a×C.a.xD.a(×)正确答案:C4、假定变量a定义为“inta=7则下面定义P的语句哪个是正确的?A.intp=&a;8.1 nt*p=a;C.int&p=*a;D.intp=a;正确答案:D5、假定一条定义语句为“inta10,x,*p=a;,若要把数组a中下标为3的元素值赋给X,则不正确的语句为()。A.x=a3;B. ×=p3;C. x=*(p+3);D.x=*p+3;正确答案:D6、()是给变量取一个别名,它引入了变量的同义词。A.结构体B.枚举C.引用D.指针正确答案:C7、类成员的访问权限中,()成员只能被本类的成员函数和其友元函数访问,但不能被派生类直接访问。A.publicB.constC.protected0.private正确答案:D8、关于构造函数,下列说法不正确的是()。A.构造函数无任何函数返回类型B.构造函数不能有参数C.构造函数在创建对象时自动执行D.构造函数的名字和类名相同正确答案:B9、阅读下面程序,该程序的运行结果是()classBASEcharc;public:BASE(charn)x(n)BASE()cout<<c;;classDERIVED:publicBASEcharc;public:DERIVED(charn):BASE(n+l),c(n)DERIVED()cout<<c;;intmain()DERIVEDa('X,);returnO;)A.YXB.XYC.XD.YY正确答案:B10、C+中常用的Cin是一个()oA.对象B.类C.函数D.命令正确答案:A×为该类)o11、假定BoX为一个类,VOIUmeo为该类公有的函数成员,:的一个对象,则访问X对象中函数成员volume()的格式为(A.x.volumeB.x.volume()C.x->volume()D.×->volume正确答案:B12、假定BoX为一个类,则执行“BOXx/语句时将()oA.自动调用第一个构造函数B.自动调用拷贝构造函数C.自动调用无参构造函数D.自动调用带参构造函数正确答案:C13、假定BOX为一个类,intfun()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。A.intBOX:fun()B.BOX:intfun()C.BOX:fun()D.intBOX:fun()正确答案:D14、与COUt<<endl;不等价的是()。A.cout<<'×A'B.cout<<'12,;C.cout<<,0,;D.cout<<'n'正确答案:C15、在公有继承的情况下,基类非私有成员在派生类中的访问权限是)oA.仅类内能访问B.不能直接访问C.类外均可访问D.保持不变正确答案:D16、应在下列程序划线处填入的正确语句是()。classBase(public:voidfun()cout<<<,Baseclass-funn";classDerived:publicBase(public:voidfun()(显式调用基类的函数fun()cout<<"Derivedclass-funn");A.this->fun();B.Base->fun();C.Base.fun();D.Base:fun();正确答案:D17、在类外可以用a.×的形式访问派生类对象a的基类成员X,其中x应是()oA.保护继承的公有成员B.公有继承的私有成员C.公有继承的公有成员D.公有继承的保护成员正确答案:C18、面向对象方法的多态性是指()。A.一个类可以派生出多个特殊类B.针对一消息,不同的对象可以以适合自身的方式加以响应C.一个对象在不同的运行环境中可以有不同的变体D.一个对象可以是由多个其他对象组合而成的正确答案:B19、假定已有定义“intb10;int*pb则不正确的赋值语句为()。A.pb=newint(5);B.pb=b;C.pb=newint;D.pb=*b;正确答案:D20、若有定义intn=2,*p=8m,*q=p;,则一下非法的赋值语句是()。A.n=*qB.p=q;C.p=nD.*p=*q;正确答案:C二、判断题1、基类的私有成员被派生类公有继承后,在派生类中可以直接访问。正确答案:X2、构造函数可以重载,析构函数不能重载。正确答案:3、类的私有成员不能被继承。正确答案:X4、类的析构函数不能被继承。正确答案:5、如果一个类不定义构造函数,则用它声明对象时,就不会执行构造函数。正确答案:X三、填空题1、如果一个类中至少有一个纯虚函数,则该类称为正确答案:抽象类27、若有:inti;int&j=i;i=10;j=i+l;则i的值为(直接写数字)正确答案:1128、下列程序的执行结果是()。classA(public:A()cout<<"a"-A()cout<<,b";classB:publicA(public:B()cout<<,c"-B()cout<<"d";intmain()Bb;returnO;正确答案:acdb29、下列程序的功能是:统计子字符串SUbStr在字符串str中出现的次数。例如:若字符串为"aaaslkaaas”,子字符串为“as”,则应输出2。若字符串为UaSaSasa”,子字符串为"asa”,则应输出3。写出在程序【处应填写的表达式。intfun(char*substrzchar*str)(intijzk,num=0;for(i=0;stri;i+)(for(j=i,k=0ubstrk=strjjk+zj+)(if(substrk+l=,O,)num+;*space*returnnum;正确答案:break30、下列程序的功能是将数组的最大元素与第一个元素交换,最小元素与最后一个元素交换。阅读程序,在【出填写合适的表达式(用英文符号,如非必要,标识符间不留空格)。voidmax_min(intarray,intN)/N表示数组的元素个数int*max,*min,kj;int*p,*arr_end;/*sPACE*Iarr_end=【;max=min=array;for(p=array+l;p<arr_end;p+)(if(*p>*ma×)max=p;elseif(*p<*min)min=p;)k=*max;I=*min;*max=*array;*min=*(array+N-l);*array=k;*(array+N-l)=l;正确答案:array+N