1、计算机二级C+笔试243 模拟 计算机二级(C+)笔试243一、选择题(每小题2分,共70分) 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:下列叙述中正确的是A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试D.程序经调试改错后不必进行再测试参考答案:C 答案解析:程序设计是指设计、编制和调试程序的方法和过程。软件测试的原则:软件开发人员即程序员应当避免测试自己的程序。应尽早地、不断地进行软件测试,而且必须反复地分阶段进行测试。第2题:下列数据结构中,能用二分法进行查找的是A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序
2、线性链表参考答案:A 答案解析:二分法查找的前提条件是被查找的线性表必须是有序的。第3题:下列关于栈的描述中正确的是A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素参考答案:C 答案解析:栈是一种数据结构,是在某一端进行插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。在栈顶进行插入或删除操作,不需要修改栈底指针。栈的实现可以采用顺序存储也可以采用链表存储。第4题:下列叙述中正确的是A.一个逻辑数据结构只能有一种存储结构
3、B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率参考答案:D 答案解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和在此集合中定义的若干关系来表示。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。但是不同的存储结构的数据的处理效率不同。第5题:下列叙述中正确的是A.软件工程只是解决软件项目的
4、管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题参考答案:C 答案解析:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。第6题:下列对于软件的叙述中正确的是A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是
5、尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则参考答案:C 答案解析:软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。第7题:为了使模块尽可能独立,要求A.模块的内聚程序要尽量高,且各模块间的耦合程序要尽量强B.模块的内聚程序要尽量高,且各模块间的耦合程序要尽量弱C.模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱D.模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强参考答案:B 答案解析:为了使模块尽可能独立,要求模块的内聚程度尽量高,且各模块之间的耦合程度要尽量弱。第8题:下列叙述中正确的是A.程序就是软件B.软件开发不受
6、计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合参考答案:D 答案解析:软件是一系列按照特定顺序组织的计算机数据和指令的集合。软件并不只是包括在计算机上运行的程序,与这些程序相关的文档也被认为是软件的一部分。简单地说,软件就是程序加文档和数据的集合体。第9题:数据独立性是数据库技术的重要特点之一。所谓数据独立性是指A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上3种说法都不对参考答案:D 答案解析:数据独立性是指建立在数据的逻辑结构和物理结构分离的基础上,用户以简单的逻辑结构操作数据而无须考虑数据的物
7、理结构,转换工作由数据库管理系统实现。数据独立性分为数据的物理独立和数据的逻辑独立。第10题:用树状结构表示实体之间联系的模型是A.关系模型B.网状模型C.层次模型D.以上3个都是参考答案:C 答案解析:实体之间的关系模型包括层次模型、网状模型和关系模型,其中,层次模型可以由树状结构来表示。第11题:为了取代C中带参数的宏,在C+十中使用A.重载函数B.内联函数C.递归函数D.友元函数参考答案:B 答案解析:内联函数是inline,当程序中出现对该函数的调用时,编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参代替形参。一般在程序运行时不再进行函数调用,代替了C语言中的宏定义。第12
8、题:下列关于类定义的叙述中,正确的是A.类定义中包括数据成员和函数成员的声明B.类成员的缺省访问权限是保护的C.数据成员必须被声明为私有的D.成员函数只能在类体外进行定义参考答案:A 答案解析:在类的定义中,类的数据成员和成员函数可在类中声明,在类中或者类外定义均可。在类外定义成员函数时,要加上类名和域作用符,类名:为前缀,在类中的成员的默认访问权限为私有的。第13题:下列关于派生类构造函数和析构函数的叙述中,错误的是A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有默认构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销
9、毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数参考答案:D 答案解析:在通常情况下,派生类和基类的构造函数的执行顺序为:先执行基类的构造函数,然后执行派生类的构造函数;当撤销派生类对象时,先执行派生类的析构函数,随后再执行基类的析构函数。第14题:通过运算符重载,可以改变运算符原有的A.操作数类型B.操作数个数C.优先级D.结合性参考答案:A 答案解析:运算符重载不能改变运算符原有的优先级、结合特性和操作数个数。运算符重载不能创建新的运算符,运算符重载可以改变运算符参数的类型和返回值的类型。第15题:有如下函数模板: template T souare(T x)(returll
10、x * x;) 其中T是A.函数形参B.函数实参C.模板形参D.模板实参参考答案:C 答案解析:函数模板定义的一般格式为: Templatetypename类型参数返回类型 函数名(模板形参表)函数体第16题:使用输入/输出操作符setw,可以控制A.输出精度B.输出宽度C.对齐方式D.填充字符参考答案:B 答案解析:setw(n)设置域宽为n,用于输出。第17题:下列字符串中,不可以用作C+标识符的是A.y_2006B._FEST_HC.ReturnD.switch参考答案:D 答案解析:在C+中,变量标识符必须是以大小写字母、下画线开始,由数字或者字母下画线等组成的一个字符串,其中C+关键
11、字不能作为标识符,不能包含-、+、*、/等运算符号。C+变量区分大小写,所以Retrun不是关键字,而是一个合法变量;swith为关键字,所以不能定义为标示符。第18题:字面常量42、4.2、42L的数据类型分别是A.long、double、intB.long、float、intC.int、double、longD.int、float、long参考答案:D 答案解析:根据题干可知,分别为整型、浮点型和长整型。第19题:执行下列语句段后,输出字符“*”的个数是 for(int i=50;il;-i)cout”*”A.48B.49C.50D.51参考答案:B 答案解析:for(int i=50;i
12、1;-i),i为502,故打印49个*。第20题:有如下程序段,其中会产生编译错误的语句是 inti=0,j=1; int r=i; / r=j; / int * p=i; / * p=r; /A.B.C.D.参考答案:A 答案解析:赋值运算符不能将int地址(指针)赋值给int变量。第21题:在下面的定义语句中,画线处应填入的内容是 class Fred public: void print( )coutdataendl; void setData(double D. data=d; static int count; private: double data; ; _count=0;/静态
13、数据成员的定义A.intB.static intC.int Fred:D.static int Fred:参考答案:C 答案解析:静态数据成员在类中声明,对它的访问可通过类名进行。第22题:有如下程序: #includeiostream using namespace std; class Base protected:int i; public:int j; ; class Derived:public Base int m; public:int n; ; int main( ) Derived d; di=0; /1 d.j=0; /2 dn1=0; /3 dn=0; /4 return
14、 0; 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是A.1和2B.1和3C.2和3D.2和4参考答案:B 答案解析:基类被派生类公有派生时,可以在派生类中访问基类中的公有数据成员和保护数据成员,私有数据成员在派生类中不能被直接访问,保护数据成员和私有数据成员均不能被派生类对象直接访问。如果一个类的数据成员没有被限定就会被默认为私有数据成员,私有数据成员不能直接被类对象访问。第23题:在表达式x-y中,“-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可以表示为A.xoperator-(y)B.operator-(y,x)C.y operat
15、or-(x)D.operator-(x,y)参考答案:A 答案解析:非成员函数重载的运算符的显示调用格式为:aaoperatorbb,其中是重载运算符号。第24题:下列函数模板定义中错误的是A.templateclass QB.templateclass Q Q F(Q x)return Q+x; Q F(Q x)return x+x;C.templateclass TD.templateclass T T F(T x)return x * x; bool F(T x)return x1;参考答案:A 答案解析:在函数模板定义中,类型参数不能参与运算。第25题:已知outfile是一个输出流对
16、象,要想将outfile的文件指针定位到当前位置之前321字节处,正确的函数调用语句是A.outfileseekp(321,ios_base:cur);B.outfileseekp(321,ios_base:beg);C.outfileseekp(-321,ios_base:beg);D.outfileseekp(-321,ios_base:cur);参考答案:D 答案解析:在文件中偏移定位时的初始值ios:base_beg将指针定位在文件的开始位置;ios:base_cur将指针定位在文件的当前位置;ios:base_end将指针定位在文件的结束位置。从当前位置往后偏移量为正,从当前位置往前
17、偏移,偏移量为负。第26题:有如下程序: #includecstring #includeiostream using namespace std; class MyString public: MyString(const char * s); MyString( )delete data; protected: unsigned len; char * data; ; MyString:MyString(const char * s) len=strlen(s); data=new char1en+1; strcpy(data,s); int main( ) MyString a(C+Pr
18、ogreanfing); MyString b( A) ; return 0; 在运行上面的程序时出错,错误的原因是A.构造函数的实参不允许是本类的对象B.没有定义实现深层复制(深复制)的复制构造函数C.构造对象a时实参与形参类型不符D.系统不能生成缺失的复制构造函数参考答案:B 答案解析:当类中的数据成员有指针时,必须使用深层复制构造函数,否则会发生指针悬挂。在进行函数析构时,会出现指针丢失现象。第27题:有如下程序: #includeiostream using namespaee std; class Demo public: Demo( )coutdefault constructor
19、n; Demo(const Demo x)coutcopy constructorn; ; Derno userCore(DemoB. Demo c(B. ;return c; int main( ) Demo a,d; coutcalling userCode( )n; d=userCode(A) ; return 0; 执行上面程序的过程中,构造函数Demo( )和Demo(const Demo &x)被调用的次数分别为A.1和1B.1和2C.2和3D.2和4参考答案:C 答案解析:无参构造函数调用和复制构造函数调用的Demo a,d;调用2次无参构造函数Demo( ),在Demo use
20、rCore(Demo B. Demo c(B. ;return c;函数中,Demo b调用一次复制构造函数,Demo c(B. 调用一次复制构造函数,在函数返回值时还要调用一次复制构造函数,故Demo(const Demo x)的调用次数为3次。第28题:已知在函数func中语句this-ff=0;与语句ff=0;的效果完全相同。对于这一现象,下列叙述中错误的是A.ff是某个类的数据成员,func是该类的友元函数B.ff是某个类的数据成员,func是该类的成员函数C.this-ff和ff是同一个变量D.func不是一个静态成员函数参考答案:A 答案解析:类的静态数据成员和友元函数,不能拥有t
21、his指针。第29题:如下程序的输出是 #includeiostream using namespace std; class Base public: Base( )coutBB;f( ); void f( )coutBf; ; class Derived:public Base public: Derived( )eoutDD; void f( )coutDf; ; int main( )Derived d;return 0;A.BBBff)DB.BBDfDDDfC.DDD.DDBBBf参考答案:A 答案解析:当创建派生类对象时,首先调用基类的构造函数,最后调用派生类的构造函数。第30题:
22、下列叙述中错误的是A.公有继承时基类中的public成员在派生类中仍是public成员B.私有继承时基类中的protected成员在派生类中仍是protected成员C.私有继承时基类中的public成员在派生类中是private成员D.保护继承时基类中的public成员在派生类中是protected成员参考答案:B 答案解析:在私有继承方式下,所有的类成员都继承为私有成员。第31题:下列是关于派生类声明的开始部分,其中正确的是A.class virtual B:publice AB.virtual class B:publice AC.class B:public A virtalD.cla
23、ss B:virtual public A参考答案:D 答案解析:派生类的声明格式如下: class派生类名:继承方式基类名派生类的数据成员和成员函数 virtual为虚继承,是继承方式,所以应该放在派生类名后面。第32题:在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是A.后缀一元运算符B.前缀一元运算符C.无操作数的运算符D.二元运算符参考答案:B 答案解析:在成员函数重载中,一元函数重载在函数声明中可以没有任何形参,操作数就是对象本身;但是作为后缀运算符重载时,则必须在形参中添加参数。第33题:关于关键字class和typename,下列说法中正确的是A.程序中所有
24、的typename都可以替换为classB.程序中所有的class都可以替换为typenameC.A和B都正确D.A和B都不正确参考答案:B 答案解析:只有在目标声明中,typename和class才可以相互替换,即typename可以被class替换,而有的class,不一定能被typename替换。第34题:如下程序的输出结果是 #includeiostream #includeiomanip using namespace std; class CSum int x,y; public: CSum(int x0,int y0):X(x0),y(y0) friend ostream& op
25、erator(ostream& os,const CSum& xA) ossetw(5)xa.x+xa.y: return os; ; int main( ) CSum y(3,5); coutsetfill(*)8; couty; return 0; A.88B.*88C.*8*8D.8*8参考答案:D 答案解析:输出流控制中,如果没有指定对齐方式,则默认为左对齐、右填充,CSum类使“”运算符出栈,并将输出控制为宽度为5,coutsetfill(*)8;执行时就打印8*,然后执行couty;打印8,故答案为D。第35题:有如下程序: #includeiostream using names
26、pace std; class Stack public: Stack(unsignedn=10):size(n)rep_=new intsize;top=0; Stack(Stack& s):size(s.size) rep_=new intsize; fbr(inti=0;isize;i+)rep_i=s.rep_i; top=s.top; Stack( )delete rep_; void push(intA) rep一_top=a;top+; int pop( )-top;return rep_top; b001 isEmpty( )constreturn top=0; private
27、: int * rep_; unsigned size,top; ; int main( ) Stack sl; for(int i=1;i5;i+)s1push(i); Stack s2(s1); for(i=1;i3;i+)cout-s2pop( ),; s2pusl:(6); s1push(7); while(!s2isEmpty( )couts2pop( ),; return 0: 程序的输出结果是A.4,3,2,1,B.4,3,6,7,2,1,C.4,3,6,2,1,D.1,2,3,4,参考答案:C 答案解析:堆栈组织元素的原则是“先进后出”,Stack s2(s1);使用复制构造函
28、数新建s2,里面有元素1,2,3,4。for(i=1;i3;i+)couts2pop( ),;使栈顶元素4,3出栈,s2push(6)将6压入栈顶。while(!s2isEmpty( ) couts2pop( ),;使元素6,2,1出栈,故答案为4,3,6,2,1。二、填空题(每空2分,共30分)第36题:在深度为7的满二叉树中,度为2的结点个数为_。参考答案:63详细解答:第37题:软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于_测试。参考答案:黑盒详细解答:等价类划分法是将所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每个子集中选择少数具有代表性的数据作为测
29、试用例。该方法是一种常用的黑盒用例分析方法。第38题:在数据库系统中,实现各种数据管理功能的核心软件称为_。参考答案:DBMS详细解答:一个完整的数据库系统(DBS)包括数据库(DB. 和数据库管理系统(DBMs),其中,数据库管理系统实现各种数据管理功能,是数据库系统的核心。第39题:软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于_阶段。参考答案:开发 解释软件的生命周期一般包括3个阶段:软件定义、软件开发及软件维护阶段。软件定义阶段包括:可行性研究与计划制定和需求分析阶段;软件的开发阶段包括了软件设计、软件实现软件的编码和测试等内容;在软件维护阶段,主要是对软件的运行和维护。详细解答:第40题:在结构化分析使用的数据流图(DFD. 中,利用_对其中的图形元素进行确切解
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1