2014年全国计算机等级《二级C++》上机考试冲刺试题(5)

考试总分:43分

考试类型:模拟试题

作答时间:60分钟

已答人数:967

试卷答案:有

试卷介绍: 2014年全国计算机等级《二级C++》上机考试冲刺试题(5)

开始答题

试卷预览

  • 1. 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl。程序中位于每个“//ERROR****found料****之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:Name:SmithAge:21ID:99999CourseNum:12Record:970注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#includeusingnamespacestd;classStudentlnfo{protected://ERROR********************found****************charName;intAge;intID:intCourseNum;floatRecord;public:Studentlnfo(char*name,intAge,intID,intcoumeNum,floatrecord);//ERROR********************found********************void~Studentlnfo(){}floatAverageRecord(){returnRecord/CourseNum;}voidshow()const{coutID=ID:CourseNum=courseNum:Record=record;}intmain(){Studentlnfost(’’Smith”,21,99999,12,970);st.show();return0;}[18分]
  • 2. 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中定义了vehiele类,并派生出motorcar类和bicycle类。然后以motorcar和bicycle作为基类,再派生出motorcycle类。要求将Vehicle作为虚基类,避免二义性问题。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:801501001注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。#includeclassvehicle{private:intMaxSpeed;intWeight;public://*************found************vehicle(intmaxspeed,intweight):——~vehicle(){};intgetMaxSpeed(){returnMaxSpeed;}intgetWeight(){retumWeight;}};//****************found************classbicycle:——publicvehicle{private:intHeight;public:bicycle(intmaxspeed,intweight,intheight):vehicle(maxspeed,weight),Height(height){}intgetHeight(){retumHeight;};};//*******************found**************classmotorcar:——publicvehicle{private:intSeatNum;public:motorcar(intmaxspeed。intweight,intseatnum):vehicle(maxspeed,weight),SeatNum(seatnum){}intgetSeatNum(){returnSeatNum;};};//*****************found***************classmotorcycle:——{public:motorcycle(intmaxspeed,intweight,intheight):vehicle(maxspeed,weight),bicycle(maxspeed,weight,height),motorcar(maxspeed,weight,1){}};voidmain(){motorcyclea(80,150,100);cout<<A.GETMAXSPEED()<cout<<A.GETWEIGHT()<cout<<A.GETHEIGHT()<cout<<A.GETSEATNUM()<}[24分]
  • 3. 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过l00。程序文件包括pmj3.h、proj3.cpp、writeToFile.obj。补充完成重载赋值运算符函数,完成深复制功能。屏幕上输出的正确结果应该是:Hello!Happynewyear!补充编制的内容写在“//**********333**********”与“//**********666**********”两行之间。不得修改程序的其他部分。注意:程序最后调用writeToFil。函数,使用另一组不同的测试数据,将不同的运行结果输出到文件0ut?dat中。输出函数writeToFile已经编译为obj文件。//proj3.h#include#includeusingnamespacestd;classMiniString{pubhc:friend。8tream&operator>(istream&input,MiniString&8)//重载流提取运算符{chartemp[100];//用于输入的临时数组temp[0]=’\0’://初始为空字符串input>>setw(100)>>temp;intinLen=strlen(temp);//输入字符串长度if(inLen!=0)}s.1ength=inLen;//赋长度if(s.sPtr!=0)delete[]s.sPtr;//避免内存泄漏s.sPtr=Hewchar[s.1ength+1];strcpy(s.sPtr,temp);//如果8不是空指针,则复制内容}elses.sPtr[0]=’\0’;//如果s是空指针,则为空字符串retuminput;}voidmodString(constchar}string2)//更改字符串内容{if(strin921=0)//如果strin92不是空指针,则复制内容{if(strlen(strin92)!=length){length=strlen(strin92);delete[]sPtr;sPtr=newchar[1ength+1];//分配内存}strcpy(sPtr,strin92);}elsesPtr[0]=’\0’;//如果string2是空指针,则为空字符串}MiniString&operator=fconstMiniString&otherString);MiniString(corotchar*s=""):lengtll((s!=0)?strlen(s):0)//构造函数{sPtT=0:if(1ength[=0)setString(S);}~MiniString()//析构函数{delete[]sPtr;}private:intlength;//字符串长度char*sPtr;//指向字符串起始位置voidsetString(constchar*string2)//辅助函数{sPtr=Dewchar[str|en(string2)+1];//分配内存if(stnIl92!=0)strcpy(sPtr,string2);//如果string2不是空指针,则复制内容elseslur[0]='\0';//如果string2是空指针,则为空字符串}};//pwj3.cpp#'include#includeusingnamespacestd;#include”proj3.h”MiniString&MiniStrin9::0perator=(constMiniString&otherString){//重载赋值运算符函数。提示:可以调用辅助函数setString//*************333**********//*************666**********}intmain(){MiniSu'ingstrl(”Heuo!”),str2;voidwriteToFile(constchar*);sir2=strl;//使用重载的赋值运算符str2.modString("Happynewyear!");cout<<STRL<<'\N':cout<<STR2<<'\N':writeToFile("");return0;}[18分]
  • 4. 下列有关内联函数的叙述中,正确的是()。[1分]

    A内联函数在调用时发生控制转移

    B内联函数必须通过关键字inline来定义

    C内联函数是通过编译器来实现的

    D内联函数函数体的最后一条语句必须是return语句

  • 5. 语句int*P=&k;定义了指针P,与这个语句等效的语句序列是()。[1分]

    Aint*p;P=&k;

    Bint*P;P=k;

    Cint*p;*P=&k;

    Dint*p;*P=k;

  • 6. 有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<”A”;}-A(){cout<<”-A”;}};classB:publicA{A*P;public:B(){cout<<”B”;P=newA();}-B(){cout<<”~B”;deletep;}};intmain(){Bobj;return0;}执行这个程序的输出结果是()。[1分]

    ABAA~A~B~A

    BABA~B~A~A

    CBAA~B~A~A

    DABA~A~B~A

  • 7. 下列关于c++流的描述中,错误的是()。[1分]

    Acout>>’A’表达式可输出字符A

    Beof()函数可以检测是否到达文件尾

    C对磁盘文件进行流操作时,必须包含头文件fstream

    D以ios_base::0ut模式打开的文件不存在时,将自动建立一个新文件

  • 8. 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。[1分]

    A提高耦合性降低内聚性有利于提高模块的独立性

    B降低耦合性提高内聚性有利于提高模块的独立性

    C耦合性是指一个模块内部各个元素间彼此结合的紧密程度

    D内聚性是指模块间互相连接的紧密程度

  • 9. 若有如下类声明:ClassMyClass{publiC:MyClass(){Cout<<1;}};执行下列语句MyClassa,b[2],*p[2];程序的输出结果是()。[1分]

    A11

    B111

    C1111

    D11111

  • 10. 下列函数模板的定义中,合法的是()。[1分]

    AtemplateTabs(TX){returnx<07-x:X;}

    BtemplateClassTabs(Tx){returnx<07-X:x;}

    CtemplateTabs(TX){returnx<07-x:X;}

    DtemplateTabs(Tx){returnX<0?-X:x;}

  • 11. 有如下程序:#includeusingnamespacestd;classBase{intx:public:Base(intn=0):x(n){cout<<N;}intgetX()const{returnx;}};cjassDerived:publicBase{intY:.J;;Iublic:Derived(intm,intn):y(m),Base(n){cout<<M;}Derived(intm):Y(m){cout<<M;}};intmain(){Deriveddl(3),d2(5,7);retum0;}执行这个程序的输出结果是()。[1分]

    A375

    B357

    C0375

    D0557

  • 12. 下列关于多态性的描述,错误的是()。[1分]

    Ac++语言中的多态性分为编译时的多态性和运行时的多态性

    B编译时的多态性可通过函数重载实现

    C运行时的多态性可通过模板和虚函数实现

    D实现运行时多态性的机制称为动态绑定

  • 13. 下列有关类成员的叙述中,正确的是()。[1分]

    A友元函数是类的成员函数

    B类成员的默认访问权限是私有的

    C类成员函数必须声明为公有的

    D类的静态数据成员不能是常成员

  • 14. 有如下程序:#inCludeusingnamespaCestd;ClaSSA{publiC:A(inti){x=i;}voiddispa(){Cout<<X<<’,’;}&NBSP;&NBSP;&NBSP;intx;};ClassB:publiCA{publiC:B(inti):A(i+10){x=i;}volddispb(){dispa();Cout<<X<<ENDL;}&NBSP;&NBSP;&NBSP;intx;};intmain()}Bb(2);b.dispb();return0;}执行这个程序的输出结果是()。[1分]

    A10,2

    B12,10

    C12,2

    D2,2

  • 15. 执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1;i一=2)tout<<’*’:[1分]

    A24

    B25

    C26

    D50

  • 16. 若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。[1分]

    AData+(DatA.;

    BDataoperator+(DatA.;

    CData+operator(DatA.;

    Doperator+(Data,DatA.;

  • 17. 将前缀运算符“--”重载为非成员函数,下列原型中能正确用于类中说明的是()。[1分]

    ADeCr&operator--(int);

    BDeCroperator--(DeCr&,int);

    CfriendDeCr&operator--(DeCr&);

    DfriendDeCroperator--(DeCr&,int);

  • 18. 在面向对象方法中,不属于“对象”基本特点的是()。[1分]

    A一致性

    B分类性

    C多态性

    D标识唯一性

  • 19. 对类的构造函数和析构函数描述正确的是()。[1分]

    A构造函数可以重载,析构函数不能重载

    B构造函数不能重载,析构函数可以重载

    C构造函数可以重载,析构函数也可以重载

    D构造函数不能重载,析构函数也不能重裁

  • 20. 关于在调用模板函数时模板实参的使用,下列表述中正确的是()。[1分]

    A对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

    B对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

    C对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

    D对于常规参数所对应的模板实参,任何情况下都不能省略

  • 21. 有如下程序:#includeusingnamespacestd;classObj{staticinti;public:Obj(){i++;}一Obj(){i一一;}staticintgetVal(){returni;}};intObj::i=0:voidf(){Objob2;cout<<OB2.GETVAL();}intmain(){Objobl;f();Obj}ob3=newObj;cout<getVal();deleteob3;cout<return0;}执行这个程序的输出结果是()。[1分]

    A232

    B231

    C222

    D221

  • 22. 下面描述中,不属于软件危机表现的是()。[1分]

    A软件过程不规范

    B软件开发生产率低

    C软件质量难以控制

    D软件成本不断提高

  • 23. 类的析构函数是在()调用的。[1分]

    A类创建时

    B创建对象时

    C删除对象时

    D不自动调用

  • 24. 有如下类定义:ClassAA{inta:PubliC:AA(intn=O):a(n){}};ClassBB:publiCAA{publiC:BB(intn)};其中横线处的缺失部分是()。[1分]

    A:a(n){}

    B:AA(n){}

    C{a(n);}

    D{a=n;}

  • 25. 决定c++语言中函数的返回值类型的是()。[1分]

    Areturn语句中的表达式类型

    B调用该函数时系统随机产生的类型

    C调用该函数时的主调用函数类型

    D在定义该函数时所指定的数据类型

  • 26. 有如下类定义:classAA{ima:public:intgetRef()const{return&a;}//①intgetValue()const{returna;}//②voidset(intn)const{a=n;}//③friendvoidshow(AAaA.const{cout<};其中四个函数的定义中正确的是()。[1分]

    A

    B

    C

    D

  • 27. 有如下数组声明:intnum[10];,下标值引用错误的是()。[1分]

    Anum[10]

    Bnum[5]

    Cnum[3]

    Dhum[o]

  • 28. 有以下程序:#includevoidfun(inta,intb,intC.{a=456,b=567,c=678;}voidmain(){intX=10,Y=20,Z=30;fun(X,Y,z);aout<<X<<’,’<<Y<<’,’<<Z<}输出结果是()。[1分]

    A30,20,10

    B10,20,30

    C456,567,678

    D678,567,456

  • 29. 通过运算符重载,可以改变运算符原有的()。[1分]

    A操作数类型

    B操作数个数

    C优先级

    D结合性

  • 30. 有如下程序段:inti=0,J=1;int&r=i;//①r=j;//②int*P=&i;//⑧*P=&r;//④其中会产生编译错误的语句是()。[1分]

    A

    B

    C

    D

  • 31. 有如下类定义:classMyBase{intk;public:MyBase(intn=O):k(n)}}intvalue()eonst{returnk;}};classMyDerived:MyBase{intj;public:MyDerived(inti):j(i)}}intgetK()const{returnk;}intgetJ()const{returnj;}};编译时发现有一处语法错误,对这个错误最准确的描述是()。[1分]

    A函数9etK试图访问基类的私有成员变量k

    B在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或private

    C类MyDerived缺少一个无参的构造函数

    D类MyDerived的构造函数没有对基类数据成员k进行初始化

  • 32. 有三个关系R、S和T如下:则由关系R和s得到关系T的操作是()。[1分]

    A自然连接

    B

    C

    D

  • 33. 有如下程序:#inCludeusingnamespaCestd:ClassCD{publiC:~CD(){Cout<<’C’:}private:Charname[80];};intmain(){CDa,*b,d[2];return0;执行这个程序的输出结果是()。[1分]

    ACCCC

    BCCC

    CCC

    DC

  • 34. 判断char型变量c是否为小写字母的正确表达式是()。[1分]

    A’a’<=c<=’z’

    B(c>=A.&&(c<=z)

    C(’a’>=C.||(’z’<=C.

    D(c>=’a’)&&(c<=,z,)

  • 35. 设inta=1,b=2;,则(a++)+b和a+++b这两个表达式的值分别为()。[1分]

    A3,3

    B3,4

    C4,3

    D4,4

  • 36. 如果派生类以proteCted方式继承基类,则原基类的proteCted成员和publiC成员在派生类中的访问属性分别是()。[1分]

    ApubliC和publiC

    BpubliC和proteCted

    CproteCted和publiC

    DproteCted和proteCted

  • 37. 在函数中,可以用aut0、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。[1分]

    Aauto

    Bextern

    Cregister

    Dstatic

  • 38. 下列程序的输出结果是()。#includeintrain(iltla,intB.{if(aelseretumb;retum0;}voidmain(){eout<<MIN(1,MIN(2,3))<}[1分]

    A0

    B1

    C2

    D3

  • 39. 在黑盒测试方法中,设计测试用例的主要根据是()。[1分]

    A程序内部逻辑

    B程序外部功能

    C程序数据结构

    D程序流程图

  • 40. 下列关于虚基类的描述,错误的是()。[1分]

    A设置虚基类的目的是为了消除二义性

    B虚基类的构造函数在非虚基类之后调用

    C若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用

    D若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数

  • 41. 在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。[1分]

    AO(n)

    BO(n2)

    CO(1092n)

    D0(n1092n)

  • 42. 在软件开发中,需求分析阶段可以使用的工具是()。[1分]

    AN—s图

    BDFD图

    CPAD图

    D程序流程图

  • 43. 有如下类声明:classBase{protected:intamount;public:Base(intn=0):amount(n){}intgetAmount()const{retumamount;}};classDerived:publicBase{protected:intvalue;public:Derived(intm,intn):value(m),Base(n){}intgetData()const{returnvalue+amount;}}:已知x是一个Derived对象,则下列表达式中正确的是()。[1分]

    Ax.value+X.getAmount()

    Bx.getData()一x.getAmount()

    Cx.getData()一x.amount

    Dx.value+X.amount

相关试卷
相关题库