2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(3)

考试总分:43分

考试类型:模拟试题

作答时间:60分钟

已答人数:967

试卷答案:有

试卷介绍: 2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(3)

开始答题

试卷预览

  • 1. 使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。例如:str1为“asdfsfdfg”str2为“sf”则返回1str2为“df”则返回3注意:不能修改函数的其他部分。试题程序:#include//注意只能使用int类型,不能类型转换intfun(char*str1,char*str2){}voidmain(){charstr1[1024];charstr2[256];cout<<"pleaseinputastring:"<cin.getline(str1,1024);cout<<"pleaseinputotherstring;"<<endlcin.getline(str2,256);cout<cout<return;}[24分]
  • 2. 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:sizeof(S1)=5sizeof(s2)=10sizeof(s3)=1注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。(1)不能删除assert()语句。(2)只能修改后面的数字。提示:assert函数如果为假,则会产生一个中断异常。试题程序:#include#includevoidmain(){char*s1="abc"://********error********assert(sizeof(s1)==3):cout<<"sizeof(s1)=5"<chars2[10]="ab"://********error********assert(sizeof(s2)==2);cout<<"sizeof(s2)=10"<chars3=23://********error********assert(sizeof(s3)==4);cout<<"sizeof(s3)=1"<return;}[18分]

    A(1)不能删除assert()语句。

    B(2)只能修改后面的数字。提示:assert函数如果为假,则会产生一个中断异常。试题程序:#include#includevoidmain(){char*s1="abc"://********error********assert(sizeof(s1)==3):cout<<"sizeof(s1)=5"<chars2[10]="ab"://********error********assert(sizeof(s2)==2);cout<<"sizeof(s2)=10"<chars3=23://********error********assert(sizeof(s3)==4);cout<<"sizeof(s3)=1"<return;}[18分]

  • 3. 使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示矩形的CRect类,但类CRect的定义并不完整。请按要求完成下列操作,将类CRect的定义补充完整。(1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数据。请在注释1之后添加适当的语句。(2)完成默认构造函数CRect的定义,指定默认实参为0,它们都是double型的数据。请在注释2之后添加适当的语句。(3)定义函数体为空的析构函数。请在注释3之后添加适当的语句。(4)在main函数中定义GReet类的实例rect2,并把re-ct1的值赋给rect2。请在注释4之后添加适当的语句。注意:除在指定位置添加语句之外,不要改动程序中的其他内容。试题程序:#includeclassCRect{private://********1********public://********2********//********3********voidSetPoints(double,double,double,double);voidSetLeftPoint(doublem){leftPoint=m;}voidSetRightPoint(doublem){rightPoint=m;}voidSetTopPoint(doublem){topPoint=m;}voidSetBottomPoint(doublem){bottomPoint=m;}voidDisplay();};CReet::CRect(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::Setpoints(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=n;bottomPoint=b;}voidCRect::Display(){cout<<"left-toppointis("<<leftpoint<<","<<top-Point<<")"<<'\n';cout<<"right-bottompointis("<<rightpoint<<","<<bottompoint<<")"<<'\n';}voidmain(){CRectrect0;rect0.Display();rect0.SetPoints(20,20.6,30,40);rect0.Display();CRectrectl(0,0,150,150);rect1.SetTopPoint(10.5);rect1.SetLeftPoint(10.5);//********4********rect2.Display();}[18分]

    A(1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数据。请在注释1之后添加适当的语句。

    B(2)完成默认构造函数CRect的定义,指定默认实参为0,它们都是double型的数据。请在注释2之后添加适当的语句。

    C(3)定义函数体为空的析构函数。请在注释3之后添加适当的语句。

    D(4)在main函数中定义GReet类的实例rect2,并把re-ct1的值赋给rect2。请在注释4之后添加适当的语句。注意:除在指定位置添加语句之外,不要改动程序中的其他内容。试题程序:#includeclassCRect{private://********1********public://********2********//********3********voidSetPoints(double,double,double,double);voidSetLeftPoint(doublem){leftPoint=m;}voidSetRightPoint(doublem){rightPoint=m;}voidSetTopPoint(doublem){topPoint=m;}voidSetBottomPoint(doublem){bottomPoint=m;}voidDisplay();};CReet::CRect(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::Setpoints(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=n;bottomPoint=b;}voidCRect::Display(){cout<<"left-toppointis("<<leftpoint<<","<<top-Point<<")"<<'\n';cout<<"right-bottompointis("<<rightpoint<<","<<bottompoint<<")"<<'\n';}voidmain(){CRectrect0;rect0.Display();rect0.SetPoints(20,20.6,30,40);rect0.Display();CRectrectl(0,0,150,150);rect1.SetTopPoint(10.5);rect1.SetLeftPoint(10.5);//********4********rect2.Display();}[18分]

  • 4. 下列字符串中可以用作C++标识符的是()。[1分]

    A2009var

    Bgoto

    Ctest-2009

    D123

  • 5. 有下列二叉树,对此二叉树前序遍历的结果是()。[1分]

    AACBEDGFH

    BABDGCEHE

    CHGFEDCBA

    DABCDEFGH

  • 6. 以下不能正确创建输出文件对黎并使其与磁盘文件相关联的语句是()。[1分]

    Aofstreammyfile;myfile.open("d:ofile.txt");

    Bofstream*myfile=newofstream;myfile->open("d:ofile.txt”);

    Cofstreammyfile("d:ofile.txt");

    Dofstream*myfile=new("d:ofile.txt");

  • 7. 对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。[1分]

    A冒泡排序为n/2

    B冒泡排序为n

    C快速排序为n

    D快速排序为n(n-1)/2

  • 8. 下列选项中不属于软件生命周期开发阶段任务的是()。[1分]

    A软件测试

    B概要设计

    C软件维护

    D详细设计

  • 9. 有如下程序:#includeusingnamespacestd;voidf1(int&X,int&y){intz=x;x=y;y=z;}voidf2(intX,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<return0;}运行时的输出结果是()。[1分]

    A10

    B16

    C26

    D36

  • 10. 最简单的交换排序方法是()。[1分]

    A快速排序

    B选择排序

    C堆排序

    D冒泡排序

  • 11. 下列语句都是程序运行时的第一条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是()。[1分]

    Acout<<internal<<12345;

    Bcout<<left<<12345;

    Ccout<<right<<12345;

    Dcout<<setw(6)<

  • 12. 下列关于栈叙述正确的是()。[1分]

    A栈顶元素最先能被删除

    B栈顶元素最后才能被删除

    C栈底元素永远不能被删除

    D以上三种说法都不对

  • 13. 下列叙述中正确的是()。[1分]

    A全局变量的作用域一定比局部变量的作用域范围大

    B静态类别变量的生存期贯穿于整个程序的运行期间

    C函数的形参都属于全局变量

    D未在定义语句中赋初值的aut0变量和static变量的初值都是随机值

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

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

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

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

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

  • 15. 有如下程序:#includeusingnamespacestd;classPoint{intX,Y;publicpoint(intx1=0,inty1=O)tx(x1),y(y1){}intget(){returnx+y;}};classCircle{pointcenter;intradius;publiccircle(intCX,intcy,intr):center(cx,cy),radius(r){}intget(){returncenter.get()+radius;)};intmain(){circlec(3,4,5);cout<<c.get()<return0;}运行时的输出结果是()。[1分]

    A5

    B7

    C9

    D12

  • 16. 设有定义charstr[80];以下不能将输入数据first\nsecond\n读取到数组str中的语句是()。[1分]

    Acin.get(str,strlen(str));

    Bcin.getline(str,strlen(str));

    Ccin>>str;

    Dcin.read(str,strlen(str));

  • 17. 若PAT是一个类,则程序运行时,语句“PAT(*ad){3};”调用PAT的构造函数的次数是()。[1分]

    A0

    B1

    C2

    D3

  • 18. 有如下程序:#includeusingnamespacestd;classPoint{intX,y;public:Point(intx1=0,inty1=0):X(x1),y(y1){}intget(){returnx+y;}};classCircle{Pointcenter;intradius;public:Circle(intCX,intcy,intr):center(CX,cy),radius(r){}intget(){returncenter.get()+radius;}};intmain(){Circlec(3,4,5);cout<<c.get()<return0;}运行时的输出结果是()。[1分]

    A5

    B7

    C9

    D12

  • 19. 下列枚举类型的定义中,包含枚举值3的是()。[1分]

    Aenumtest{RED,YELLOW,BLUE,BLACK};

    Benumtest{RED,YELLOW=4,BLUE,BLACK);

    Cenumtest{RED=-1,YELLOW,BLUE,BLACK};

    Denumtest{RED,YELLOW=6,BLUE,BLACK);

  • 20. 类模板templateclassX{…},其中友元函数f对特定类型T(如int),使函数f(x)成为x模板类的友元,则其说明为()。[1分]

    Afriendvoidf();

    Bfriendvoidf(x);

    CfriendvoidA::f();

    DfriendvoidC::f(x);

  • 21. 下列各组类型声明符中,含义相同的一组是()。[1分]

    Aunsignedlongint和long

    Bsignedshort和short

    Cunsignedshort和short

    Dshortint和int

  • 22. 下列是重载为非成员函数的运算符函数原型,其中错误的是()。[1分]

    AFractionoperator+(Fraction,Fraction);

    BFractionoperator-(Fraction);

    CFraction&operator=(Fraction&,Fraction);

    DFraction&operator+=(Fraction&,Fraction):

  • 23. 下列关于函数模板的描述中,正确的是()。[1分]

    A函数模板是一个实例函数

    B使用函数模板定义的函数没有返回类型

    C函数模板的类型参数与函数的参数相同

    D通过使用不同的类型参数,可以从函数模板得到不同的实例函数

  • 24. 若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test,txt文件的是()。[1分]

    Aifstreamfin;fin.open("d:\\test.txt",iso_base::in);

    Bfstreamfi0;ri0.open("d:\\test.txt",is0_base::out);

    Cofstream。fort;lout.open("d:\\test.txt",ios_base::out);

    Dofstreamfout;fout.open("d:\\test.txt",is0_base::app);

  • 25. 数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。[1分]

    ADB包括DBS和DBMS

    BDBMS包括DB和DBS

    CDBS包括DB和DBMS

    D没有任务关系

  • 26. 下列叙述中正确的是()。[1分]

    A软件测试应该由程序开发者来完成

    B程序经调试后一般不需要再测试

    C软件维护只包括对程序代码的维护

    D以上三种说法都不对

  • 27. 若有定义语句“charS[10]="1234567\0\0";”,则strlen(s)的值是()。[1分]

    A7

    B8

    C9

    D10

  • 28. 有3个关系R、S和T如下表所示:则由关系R和S得到关系T的操作是()。[1分]

    A自然连接

    B

    C

    D

  • 29. 对下列二叉树进行中序遍历的结果是()。[1分]

    AACBDFEG

    BACBDFGE

    CABDCGEF

    DFCADBEG

  • 30. 下列选项中,能用作数据常量的是()。[1分]

    Ao115

    Bo118

    C1.5e1.5

    D115L

  • 31. 下列关于运算符重载的描述中,正确的是()。[1分]

    A运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符

    B一元运算符只能作为成员函数重载

    C二元运算符重载为非成员函数时,参数表中有一个参数

    DC++中可以重载所有的运算符

  • 32. 下列代码段声明了3个类:classPerson{);classStudent:publicPerson{};classUndergraduate:Student{);下列关于这些类之间关系的描述中,错误的是()。[1分]

    A类Person是类Undergraduate的基类

    B类Undergraduate从类Student公有继承

    C类Student是类Person的派生类

    D类Undergraduate是类Person的派生类

  • 33. 下列各类函数中,不是类的成员函数的是()。[1分]

    A构造函数

    B抽象类

    C派生类

    D以上都不对

  • 34. 若有如下程序:#includeusingnamespacestd;classTestClassl{private:inta;public:TestClassl(inti){a=i:}voiddisp(){cout<<a<<",";}};classTestClass2{private:intb:public:TestClass2(intj){b=j;}voiddisp(){cout<<b<<",";}};classTestClass3:publicTestClass2,publicTestClassl{private:intc;public:TestClass3(intk):TestClass1(k-2),TestClass2(k+2){c=k:}voiddisp(){TestClasssl::disp();TestClasss2::disp();cout<<c<}};intmain(){TestClass30bj(10);obj.disp();return0;}程序执行后的输出结果是()。[1分]

    A10,10,10

    B10,12,14

    C8,10,12

    D8,12,10

  • 35. 下列程序的输出结果为()。#includeclassTestClass{public:TestClass(){val++;}static,intval;};intTestClass::val=0;voidmain(){TestClasscsl;cout<<csl.val<<"";TestClasscs2;TestClasscs3,cs4;cout<<cs2.val<}[1分]

    AO3

    B13

    C14

    D24

  • 36. 有两个关系R、S如下所示:由关系R通过运算得到关系S,则所使用的运算为()。[1分]

    A选择

    B投影

    C插入

    D连接

  • 37. 若MyClass是一个类名,其有如下语句序列:MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是()。[1分]

    A1

    B2

    C3

    D4

  • 38. 下列关于纯虚函数与抽象类的描述巾,错误的是()。[1分]

    A纯虚函数是一种特殊的虚函数,它没有具体的实现

    B抽象类是指具有纯虚函数的类

    C一个基类声明了纯虚函数,该基类的派生类一定不是抽象类

    D抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

  • 39. 下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他3条语句不同,该语句是()。[1分]

    Acout<<internal<<12345;

    Btout<<left<<12345;

    Ccout<<right<<12345;

    Dtout<<setw(6)<

  • 40. 以下程序的输出结果是()。voidmain(){inta=4,b=5,c=0,d;d=!a&&!b‖!c;cout<<d<}[1分]

    A1

    B0

    C非0的数

    D-1

  • 41. 有如下四个语句:①cout<<'A'<<seifill('*')<<left<<setw(7)<<'b'<②cout<<setfill('*')<<left<<setw(7)<<'a'<<'b'<③cout<<'A'<<serfill('*')<<right<<setw(7)<<'b'<④cout<<setfill('*')<<right<<setw(7)<<'a'<<'b'<其中能显示A******B的是()。[1分]

    A①和③

    B①和④

    C②和③

    D②和④

  • 42. 将运算符“+”重载为非成员函数,下列原型声明中,错误的是()。[1分]

    AMyClockoperator+(MyClock,long);

    BMyClockoperator+(MyClock,MyCloek);

    CMyCloekoperator+(long,long);

    DMyClockoperator+(long,MyCloek):

  • 43. 下面关于break语句的描述中,不正确的是()。[1分]

    Abreak可以用于循环体内

    Bbreak语句可以在for循环语句中出现多次

    Cbreak语句可以在switch语句中出现多次

    Dbreak语句可用于if条件判断语句内

相关试卷
相关题库