2021年辽宁省大连市全国计算机等级考试C++语言程序设计测试卷(含答案).docx
2021年辽宁省大连市全国计算机等级考试C+语言程序设计测试卷(含答案)学校:班级:姓名:考号:一、L选择题(10题)1.()既可重载为一元运算符,又可重载为二元运算符。A,“*,B."="C."=”和“*"D.“*”和"*+”2 .有如下类的定义。那么空格处的语句是()。classMyClassintxjy;public:MyClass(intxl=0,intyl=O)x=xl;y=yl;staticvoidchange()x+=10;y+=10;A.staticB.constC.privateD.不需要填入内容3 .如果表达式-y中的±-''和“尸是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为A.operator/(x.operator-(),y);B.operator/(operator-(x),y);C.x.operator-().Operator/(y);D.y.operator/(operator-(x);4 .下列关于栈的描述,错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针5 .以下数据结构中不属于线性数据结构的是oA.队列B.线性表C二叉树D.栈6 .有如下程序;#include<iostream>usingnamespacestd;classDAintk;public:DA(intx=l):k(x)-DA()cout<<k;intmain()DAd=DA(3),DA(3),DA(3);DA*p=newDA12J;deleteJp;return();这个程序的输出结果是()。A.lllB.333C.11333D.111337 .下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构8 .数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率9 .在C+语言中,封装是借助于什么达到的?A.结构B.类C.数组D.函数9,设有定义:Classpersonintnum;charname10;public:voidinit(intn,char*m);.;personstd30则以下叙述不正确的是A.std是一个含有30个元素的对象数组B.std数组中的每个元素都是person类的对象C.std数组中的每个元素都有自己的私有变量num和nameD.std数组中的每个元素都有各自的成员函数init10 .以下哪个特征不是面向对象思想中的主要特征()。A.多态B.继承C.封装D.垃圾回收二、单选题(13题)11 .对于拷贝构造函数和赋值操作的关系,正确的是A.拷贝构造函数和赋值操作是完全一样的操作B.进行赋值操作时,会调用类的构造函数C.当调用拷贝构造函数时,类的对象正在被建立并被初始化D.拷贝构造函数和赋值操作不能在同一个类中被同时定义12. 一个类的友元函数能够访问该类的oA.私有成员B.保护成员C.公有成员D.所有成员13 .开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作A.软件投机B.软件危机C.软件工程D.软件产生14 .下面关于类和对象的描述中,错误的是()。A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量B.类和对象之间的关系是抽象和具体的关系C.对象是类的实例,一个对象必须属于一个已知的类D.类是具有共同行为的若干对象的统一描述体15 .设有两个字符串P和q,求q在P中首次出现位置的运算称为()OA.A.连接B.模式匹配C.求子串D.求串长16 .下面描述中错误的是()。A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具17 .对于一个类定义,下列叙述中错误的是A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数。C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数。D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。18 .设栈S的初始状态为空。元素a,b,c,d,ejf依次通过栈S,若出栈的顺序为b,d,c,f,e,a,则栈S的容量至少应该为A.3B.4C.5D.619 .在一个派生类的成员函数中,试图调用其基类的成员函数“void出);",但无法通过编译。这说明()oA.f()是基类的私有成员B.f()是基类的保护成员C.派生类的继承方式为私有D.派生类的继承方式为保护20 .以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句是OoA.ofstreammyfile;mynle.open(fcd:ofile.txt'');B.ofstream*mynle=newofstream;mynle->open(ud:Ofile.txf,);C.ofstreammyhle(ud:ofle.txf,);D.ofstream*mynle=new(d:ofile.txf,);21 .下列对字符数组进行初始化中,()是正确的。A.charsl=,abcd";B.chars23=,xyz;C.chars3=a",xy");D.chars423=,xyz,mnp,);22 .使用ifstream流类定义流对象并打开磁盘文件时,文件的隐含打开方式为()oA.ios:inB.ios:outC.ios:inlios:outA没有默认23 .有如下程序:#include<iostream.h>Usingnamespacestd;ClassDemo(public:Demo()cout<<defaultconstructorn;Demo(constDemo&x)cont<<,copyconstruc-torn,1;;DemouserCode(Demob)Democ(b);returnC;intmain()(Demoa;d;cout<<callinguserCode()n”;d=userCode(a):returnO;)执行上面程序的过程中,构造函数Demo()和Demo(ConStDemO&x)被调用的次数分别是()。A.1和1B.1和2C.2和3D.2和4三、2.填空题(12题)24 .哈夫曼树是【】。25 .有以下程序:#include<iostream>usingnamespacestd;classBase(public:Base()(K=O;)intx;);classDerivedl:virtualpublicBase(public:Derivedl()(x=10;);classDerived2:virtualpublicBase26 .已知数组a中有n个元素,下列语句将数组a中从下标xl开始的k个元素移动到从下标x2开始的k个元素中,其中0<=xl<x2<n,x2+k<nt请将下列语句补充完整。for(inti=xl+k1;i>=xl;i)a=ai;27 .软件开发环境是全面支持软件开发全过程的集合。28 .继承的方式有公有继承、私有继承和【】3种。29 .软件测试的目的是尽可能发现软件中错误,通常【】是在代码编写阶段可进行的测试,它是整个测试工作的基础。30 .派生类的成员一般分为两部分,一部分是【】,另一部分是自己定义的新成员。31 .是数据库设计的核心。32 .以下程序的执行结果是o#include<iostream.h>classA(inta:public:voidseta(intx)a=x;voidshowa()cout<<a<<endl;);classBintb;public:voidsetb(intx)b=x;voidshowb()cout<<b<<end1;);33 .通过使用new和delete两个运算符进行的分配为【】存储分配。34 .假设inta=l,b=2;则表达式a+-b的值为【】。35 .多态性分为两类:编译时的多态性和【】的多态性。四、程序改错题(10题)36 .使用VC+6.。打开考生文件夹下的源程序文件1cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*e*or*的下面。试题程序:#include<iostream.h>voidmaininti=O;charstr12O;cout<<Enterastringendwith?.',<<endl;/*error*cin.getline(str,120);/*error*while(str)(/*error*if(stri)=a)stri=stri-a+A;i÷÷)cout<<str<<endl;return;)37 .使用VC+6.。打开考生文件夹下的源程序文件Lcpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*e*or*的下面。试题程序:#include<iostream.h)intmain(try(throw(error");)II*error*catch(chars)(cout<<s<<endl;)try(throw(int)0);)II*error*catch(cout<<i<<endl;)try(throw(O);throw("error);)/*error*catchreturnO;38 .使用VC+6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=1number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/*eor*的下面。试题程序:#include<iostream.h>classTC(public:TC(inti)(numbe=i;)voidSetNumber(intm)