国家二级C++机试(选择题)模拟试卷16(共140题)_第1页
国家二级C++机试(选择题)模拟试卷16(共140题)_第2页
国家二级C++机试(选择题)模拟试卷16(共140题)_第3页
国家二级C++机试(选择题)模拟试卷16(共140题)_第4页
国家二级C++机试(选择题)模拟试卷16(共140题)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C++机试(选择题)模拟试卷16(共4套)(共140题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共37题,每题1.0分,共37分。)1、下列叙述中正确的是()。A、栈是"先进先出"的线性表B、队列是"先进后出"的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:栈是先进后出的线性表,所以A)错误;队列是先进先出的线性表,所以B)错误;循环队列是线性结构的线性表,所以C)错误。2、支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A)。3、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个,所以本题中是5+1=6个。4、下列排序方法中,最坏情况下比较次数最少的是()。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序标准答案:D知识点解析:冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。5、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、编译程序B、操作系统C、教务管理系统D、汇编程序标准答案:C知识点解析:编译软件、操作系统、汇编程序都属于系统软件,只有C)教务管理系统才是应用软件。6、下面叙述中错误的是()。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行"错误定位"是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。7、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度标准答案:B知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A)错误,B)正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C)与D)错误。8、数据库应用系统中的核心问题是()。A、数据库设计B、数据库系统设计C、数据库维护D、数据库管理员培训标准答案:A知识点解析:数据库应用系统中的核心问题是数据库的设计。9、有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为()。A、选择B、投影C、插入D、连接标准答案:B知识点解析:投影运算是指对于关系内的域指定可引入新的运算。本题中S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择B。10、将E-R图转换为关系模式时,实体和联系都可以表示为()。A、属性B、键C、关系D、域标准答案:C知识点解析:从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。11、字面常量42、4.2、42L的数据类型分别是()。A、long、double、intB、long、float、intC、int、double、longD、int、float、long标准答案:C知识点解析:本题考查整型变量的类型和浮点变量的类型,42默认为int型数据,42后面加上L后,表示long型数据,4.2默认为double型数据。12、执行下列语句段后,输出字符"*"的个数是()。for(inti=50;i>1;--i)cout<<′*′;A、48B、49C、50D、51标准答案:B知识点解析:本题考查for循环语句,--i表示用之前先减1,那么这个for循环语句只有50到2时才会输出"*",所以总共输出49次。13、有如下程序段:inti=0,j=1;nt&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。14、必须用一对大括号括起来的程序段是()。A、switch语句中的case标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体标准答案:D知识点解析:本题考查C++基本控制结构,A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。15、下列符号中不属于C++关键字的是()。A、friendB、namespaceC、continueD、byte标准答案:D知识点解析:本题考查C++关键字,属于基本常识,显然D选项不正确。16、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不同,但不能只有函数的返回值类型不同而参数的个数和类型相同的重载。所以本题答案为C。17、下列有关运算符重载的叙述中,正确的是()。A、运算符重载是多态性的一种表现B、C++中可以通过运算符重载创造新的运算符C、C++中所有运算符都可以作为非成员函数重载D、重载运算符时可以改变其结合性标准答案:A知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为A。18、在下列原型所示的C++函数中,按"传值"方式传递参数的是()。A、voidf1(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);标准答案:A知识点解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。其中B、C选项都是传递变量指针,D选项为引用形参,所以本题答案为A。19、将前缀运算符"--"重载为非成员函数,下列原型中能正确用于类中说明的是()。A、Decr&operator--(int);B、Decroperator--(Decr&,int);C、friendDecr&operator--(Decr&);D、friendDecroperator--(Decr&,int);标准答案:D知识点解析:非成员函数重载用友元函数的形式实现,"--"运算符重载分为前置和后置两种重载方式。用友元函数来实现"--"运算符的重载时,前置"--"运算符的重载的一般格式为:friendoperator--(ClassName&);后置++运算符的重载的一般格式为:friendoperator--(ClassName&,int)。所以答案为D。20、有如下函数定义:voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=0,y=1;func(x,y);则变量x和y的值分别是()。A、0和1B、1和1C、0和2D、1和2标准答案:C知识点解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。本题中实参x为传值方式,所以x的值不会改变;y为引用形参,所以会改变。故本题答案为C。21、下列运算符中,不能被重载的是()。A、&&B、!=C、.D、++标准答案:C知识点解析:C++不能重载的运算符只有5个,即"."、".*"、"::"、"?:"、"sizeof",故本题答案为C。22、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。23、下列关于类定义的说法中,正确的是()。A、类定义中包括数据成员和函数成员的声明B、类成员的缺省访问权限是保护的C、数据成员必须被声明为私有的D、成员函数只能在类体外进行定义标准答案:A知识点解析:类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。24、有如下程序:#includeusingnamespacestd;classA{public:staticinta;voidinit(){a=1;}A(inta=2){init();a++;}};intA::a=0;Aobj;intmain(){cout<<obj.a;return0;}运行时输出的结果是()。A、0B、1C、2D、3标准答案:B知识点解析:本题考查构造函数,本题中对类中的a数据成员先是赋值为0,当定义了对象obj时,执行构造函数,将a的值变为了1,所以输出1。25、以下关键字不能用来声明类的访问权限的是()。A、publicB、staticC、protectedD、private标准答案:B知识点解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。26、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。27、派生类的成员函数不能访问基类的()。A、公有成员和保护成员B、公有成员C、私有成员D、保护成员标准答案:C知识点解析:本题考查3种继承方式,其中,基类的私有成员始终为基类私有。所以派生类无法访问基类的私有成员。本题答案为C。28、有如下类定义:classAA{inta;Public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)________________};其中横线处的缺失部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。所以本题答案为B。29、有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test(){cout<<"constructor"<A、3B、constructordestructorC、copyconstructordestructorD、3destructor标准答案:D知识点解析:本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象A(3),对象带着参数,所以执行带参数的构造函数,输出3,然后执行析构函数,输出destructor。所以本题答案为D。30、若有如下类声明:classMyClass{public:MyClass(){cout<<1;}};执行下列语句MyClassa,b[2],*p[2];程序的输出结果是()。A、11B、111C、1111D、11111标准答案:B知识点解析:本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a以及对象数组b[2],共执行3次构造函数,对象指针不调用构造函数。所以本题答案为B。31、有如下程序:#includeusingnamespacestd;classPoint{public:staticintnumber;public:Point(){number++;}~Point(){number--;}};intPoint::number=0;intmain(){Point*ptr;PointA,B;{Point*ptr_point=newPoint[3];ptr=ptr_point;}PointC;cout<A、3B、4C、6D、7标准答案:C知识点解析:本题考查默认构造函数,题目中定义一个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。32、有如下程序:#includeusingnamespacestd;classSample{friendlongfun(Samples);public:Sample(longa){x=a;}private:longx;};longfun(Samples){if(s.x<2)return1;returns.x*fun(Sample(s.x-1));}intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));}cout<<sum;return0;}执行这个程序的输出结果是()。A、120B、16C、154D、34标准答案:C知识点解析:本题考查默认构造函数,当i=0、1时,fun(Sample(i))为1;当i=2时,fun(Sample(i))为2;当i=3时,fun(Sample(i))为6;当i=4时,fun(Sample(i))为24;当i=5时,fun(Sample(i))为120。所以总和为154。33、有如下程序:classBase{public:intdata;};classDerived1:publicBase{};classDerived2:protectedBase{};intmain(){Derived1d1;Derived2d2;d1.data=0;//①d2.data=0;//②return0;}下列关于程序编译结果的描述中,正确的是()。A、①②皆无编译错误B、①有编译错误,②无编译错误C、①无编译错误,②有编译错误D、①②皆有编译错误标准答案:C知识点解析:本题考查公用继承和保护继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中Derived1公用继承Base,所以①编译正确,Derived2保护继承Base,所以②编译不正确。34、如下函数模板:templateTsquare(Tx){returnx*x;}其中T是()。A、函数形参B、函数实参C、模板形参D、模板实参标准答案:C知识点解析:本题考查模板函数的基本概念,根据模板函数的定义,T是模板形参,所以答案为C。35、下列函数模板的定义中,合法的是()。A、templateTabs(Tx){returnx<0?-x:x;}B、templateclassTabs(Tx){returnx<0?-x:x;}C、templateTabs(Tx){returnx<0?-x:x;}D、templateTabs(Tx){returnx<0?-x:x;}标准答案:A知识点解析:本题考查模板函数的基本概念,根据模板函数的定义,所以答案为A。36、在C++中,cin是一个()。A、类B、对象C、模板D、函数标准答案:B知识点解析:本题考查流对象cin,属于基础知识,cin是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为B。37、下列控制格式输入/输出的操作符中,能够设置浮点数精度的是()。A、setprecisionB、setwC、setfillD、showpoint标准答案:A知识点解析:iomanip中定义的操纵符包括:setfill(ch)用ch填充空白、setprecision(n)将浮点精度置为n、setw(w)、读写w个字符的值showpoint设置小数点。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共39题,每题1.0分,共39分。)1、下列关于栈叙述正确的是()。A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A)错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2、下列叙述中正确的是()。A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,所以B)正确。所以有一个以上根结点的数据结构一定是非线性结构,所以A)错误。循环链表和双向链表都是线性结构的数据结构。3、下列关于二叉树的叙述中,正确的是()。A、叶子结点总是比度为2的结点少一个B、叶子结点总是比度为2的结点多一个C、叶子结点数是度为2的结点数的两倍D、度为2的结点数是度为1的结点数的两倍标准答案:B知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择B4、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护,所以选择A。5、某系统总体结构图如下图所示:该系统总体结构图的深度是()。A、7B、6C、3D、2标准答案:C知识点解析:根据总体结构图可以看出该树的深度为3,比如:XY系统---功能2----功能2.1,就是最深的度数的一个表现。6、程序调试的任务是()。A、设计测试用例B、验证程序的正确性C、发现程序中的错误D、诊断和改正程序中的错误标准答案:D知识点解析:程序调试的任务是诊断和改正程序中的错误。7、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。8、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。9、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、投影D、并标准答案:A知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T中元组可以判断R和S做的是自然连接操作。10、下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择A。11、下列字符串中不能作为C++标识符使用的是A、INTB、testC、_1481D、1temp标准答案:D知识点解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线3种字符组成,且第一个字符必须为字母或者下划线。所以D选项错误。12、下列语句中错误的是A、constint*p=0;B、constinty=99;C、constintx;D、constint*p=newint(100);标准答案:C知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变,C++定义const类型变量时必须初始化,否则编译不通过。所以C选项错误。13、有如下程序:#includeusingnamespacestd;intmain(){intsum;for(inti=0;i<3;i+=1){sum=i;for(intj=i;j<9;j++)sum+=j;}cout<<sum<A、39B、17C、110D、37标准答案:D知识点解析:考查for循环语句,本题中两层for循环,每次i循环,sum都被重新赋值,所以当i=2时,执行完for循环后sum为37。所以答案为D。14、下列语句中,正确的是A、charstr="abcde";B、char*str="abcde";C、charstr[5]="abcde";D、char*str[5]="abcde";标准答案:B知识点解析:本题考查字符串的定义,A选项中,定义了一个字符,而用字符串赋值,所以错误,C选项定义了字符数组,但是赋值的字符串实际上有6个字符,所以赋值错误,D选项定义了一个字符串指针数组,赋值错误。15、有如下程序段:inti=1;intj=4;intmain(){inti=8,j=i;cout<A、14B、81C、88D、18标准答案:C知识点解析:全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明,本题中定义了两个全局变量i,j,所以主函数中对全局变量重新赋值输出后为88,所以答案为C。16、下列关于函数参数的叙述中,正确的是A、在函数原型中不必声明形参类型B、在调用一个函数时,若函数中修改了形参变量的值,则对应的实参变量的值也被修改C、函数形参的生存期与整个程序的运行期相同D、函数的形参在函数被调用时获得初始值标准答案:D知识点解析:本题考查函数参数的相关知识,函数原型中必须声明形参类型,所以A选项错误,调用一个函数时如果修改了形参值,那么实参可能改变也可能不改变,所以B选项错误,函数形参的生存期一般在函数执行整个函数中存在,除了静态变量。17、下列关于赋值运算符=重载的叙述中,正确的是A、赋值运算符只能作为类的成员函数重载B、默认的赋值运算符实现了"深层复制"功能C、重载的赋值运算符函数有两个本类对象作为形参D、如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符标准答案:A知识点解析:本题考查字符串的定义,A选项中,定义了一个字符,而用字符串赋值,所以错误,C选项定义了字符数组,但是赋值的字符串实际上有6个字符,所以赋值错误,D选项定义了一个字符串指针数组,赋值错误。18、在对函数进行原型声明时,下列语法成分中不需要的是A、函数返回类型B、函数参数列表C、函数名D、函数体标准答案:D知识点解析:函数原型中,函数名、函数返回值、函数参数列表是需要的,而函数体在函数申明时不需要。所以答案为D。19、在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是A、+B、()C、<<D、++标准答案:B知识点解析:本题考查重载运算符,C++规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选B。20、若已经声明了函数原型"boolfun(boola,intb=0);",则下列重载函数声明中正确的是A、boolfun(boola=true,intb=0);B、intfun(boola,intB);C、voidfun(doublea,intB);D、voidfun(boola,intb=0);标准答案:C知识点解析:本题考查函数重载相关知识,重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。ABD选项的形参都与原函数相同,所以不能作为重载函数,选项C正确。21、下列运算符函数中,肯定不属于类Number的成员函数的是A、Numberoperator+(Number);B、Numberoperator-(Number);C、Numberoperator*(int);D、Numberoperator/(Number,Number);标准答案:D知识点解析:答案D的形式是重载为友元函数,而友元函数不属于类的成员函数。所以重载为友元函数需要两个参数,通过参数传递的方式得到参加运算的两个对象。其他的是重载为类的成员函数,由于对象本身代表了一个操作数,所以其参数只需要一个,其为参加运算的另一个操作数。22、已知函数f的原型为voidf(int&a,double*b);变量x、y的定义是intx;doubley;则下列调用该函数的语句中正确的是A、f(x,&y);B、f(x,y);C、f(&x,&y);D、f(&x,y);标准答案:A知识点解析:本题考查函数的调用,函数原型中第一个参数为引用,第二个参数为指针,所以只有A选项正确。23、在C++中,编译系统自动为一个类生成默认构造函数的条件是A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:本题考查默认构造函数,如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数。C选项正确。24、有如下程序:#includeusingnamespacestd;classSample{public:Sample(){}~Sample(){cout<<’*’;}};intmain(){Sampletemp[2],*pTemp[2];return0;}运行这个程序输出星号*的个数为A、1B、2C、3D、4标准答案:B知识点解析:本题考查构造函数和析构函数,题中定义了对象数组,那么析构时就析构两次,输出两个*。答案为B。25、下列有关类成员的叙述中,正确的是A、友元函数是类的成员函数B、类成员的默认访问权限是私有的C、类成员函数必须声明为公有的D、类的静态数据成员不能是常成员标准答案:B知识点解析:友元函数不是类的成员函数,但是可以具有类的成员的一些访问权限,类的成员访问权限默认是私有的,类的成员函数可以声明为私有,类的静态数据成员可以是常成员。26、下列关于虚函数的叙述中,正确的是A、虚函数不得是静态成员函数B、从虚基类继承的函数都是虚函数C、只能通过指针或引用调用虚函数D、抽象类中的成员函数都是虚函数标准答案:A知识点解析:本题考查虚函数,在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数成为虚函数,虚函数不得是静态成员函数,但可以是友元函数27、下列关于基类和派生类关系的叙述中,正确的是A、派生类中的成员可以访问基类中的任何成员B、每个类最多只能有一个直接基类C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:本题考查继承与派生,派生类中的成员访问基类中的成员由派生方式决定,一个类可以有多个直接基类,如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数(此时,由编译器自动生成缺省构造函数)时,在派生类构造函数的定义中可以省略对基类构造函数的调用,即省略"<基类名>(<参数表>)"。本题答案为D。28、有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是类D的对象,则下列语句中不违反访问控制权限的是A、obj.fun1();B、obj.fun2();C、obj.fun3();D、obj.fun4();标准答案:A知识点解析:本题考查派生类对基类成员的访问属性,派生类私有继承基类,那么基类的公用成员和保护成员在派生类中成为私有成员,所以派生类可以直接使用基类的公用成员,A选项正确。29、有如下类定义:classCup{public:Cup(doubleval,stringcr="red"):price(val),color(cr){}//①~Cup();//②private:stringcolor;//③doubleprice=5.8;//④};在标注号码的语句行中存在语法错误的是A、①B、②C、③D、④标准答案:D知识点解析:本题考查如何初始化对象,其中类的数据成员是不能再声明类时初始化的,所以D选项错误,在定义类的同时对数据成员price进行赋值是错误的。30、有如下类定义:classTV{public:TV(ints=41,stringbr="TCL"):size(s),brand(br){}~TV(){}private:intsize;stringbrand;};若执行语句TVli,*net[2],company[3];则TV类的构造函数被调用的次数是A、6次B、4次C、3次D、2次标准答案:B知识点解析:本题考查构造函数和析构函数,题中定义了一个对象,以及对象数组,那么构造函数需要执行4次,而*net[2]并不执行构造函数,所以答案为B。31、有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr,stringcr):brand(br),color(cr){++count;}~MyBag(){--count;}staticintGetCount(){returncount;}private:stringbrand,color;staticintcount;};_____________________intmain(){MyBagone("CityLife","Gray"),two("Micky","Red");cout<A、intcount=0;B、staticintcount=0;C、intMyBag::count=0;D、staticintMyBag::count=0;标准答案:C知识点解析:本题考查构造函数和析构函数,以及静态数据成员,题目中要求输出2,那么定义两个对象时,就执行构造函数,使得静态数据成员++count,得到2,那么count初始化就应该为0,静态数据成员初始化时,只能在类体外进行初始化,一边形式为:数据类型类型::静态数据成员名=初值32、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/C54B、/N41/S54C、/C41/N54D、/C41/C54标准答案:A知识点解析:本题考查构造函数相关知识,本题中定义一个对象room1,执行room1.Print时执行构造函数给size赋值为41,然后执行voidPrint(){cout<<’/’<<’N’<33、有如下类定义:classVechicle{//基类public:Vechicle(strings):name(s){}protected:stringname;};_____________________{//Vechicle的派生类public:Bicycle(stringname):Vechicle(name){}};横线处缺失部分为A、classVechicle:publicBicycleB、classBicycle:classVechicleC、classBicycle:publicVechicleD、classBicycle:publicclassVechicle标准答案:C知识点解析:本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类的一般形式为:class派生类名:[继承方式]基类名题目中只有公用继承才能使用基类中name成员,所以C选项正确。34、有如下程序:#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0):x(xx),y(yy){}voidSetX(intxx){x=xx;}voidSetY(intyy){y=yy;}private:intx,y;};classCircle:Point{public:Circle(intr):radius(r){}intGetRadius(){returnradius;}private:voidSetRadius(intr){radius=r;}intradius;};intmain(){Circlec1(5);c1.SetX(1);//①c1.SetY(2);//②c1.SetRadius(10);//③cout<A、①B、②C、③D、④标准答案:D知识点解析:本题考查对象成员的引用,在类外引用对象的数据成员时,只能访问public成员而不能访问private成员所以C选项错误,D选项正确,派生类公用继承基类,但是不能继承基类的私有成员,所以执行c1.SetX(1)错误,同理B选项错误。35、有如下程序:#include#includeusingnamespacestd;classPerson{public:Person(stringn):name(n){cout<<’P’;}private:stringname;};classDate{public:Date(inty=2012,intm=12,intd=21):year(y),month(m),day(d){cout<<’D’;}private:intyear,month,day;};classStudent:publicPerson{public:Student(stringn,inty,intm,intd,charc):birthday(y,m,d),sex(c),Person(n){cout<<’S’;}private:Datebirthday;charsex;};intmain(){Studentstu1("Zhang",1990,10,1,’F’);return0;}运行时的输出结果是A、SB、PSC、DPSD、PDS标准答案:D知识点解析:本题考查派生类的构造函数,派生类的构造函数初始化时按照参数列表初始化顺序,所以先初始化Person(n),输出P,然后依次输出D和S,答案为D选项。36、有如下程序:#include#includeusingnamespacestd;classInstrument{public:Instrument(stringt="乐器",stringn="无名"):type(t),name(n){}virtualstringGetType()const{return"乐器";}virtualstringGetName()const{return"无名";}protected:stringtype,name;};classPiano:publicInstrument{public:Piano(stringn,stringt="钢琴"):Instrument(t,n){}stringGetType()const{return"钢琴";}stringGetName()const{returnname;}};intmain(){Instrument*pi=newPiano("星空");cout<GetType()<<’-’<GetName();deletepi;return0;}运行时的输出结果是A、钢琴-星空B、钢琴-无名C、乐器-星空D、乐器-无名标准答案:A知识点解析:本题考查虚函数的运用,本题中基类Instrument,派生类Piano,其中虚函数为GetType,当定义Instrument*pi=newPiano("星空")时,调用派生类的GetType函数,得到type为钢琴,name为星空,所以输出钢琴-星空。选项A正确。37、下列关于模板的叙述中,错误的是A、调用模板函数时,在一定条件下可以省略模板实参B、可以用int、double这样的类型修饰符来声明模板参数C、模板声明中的关键字class都可以用关键字typename替代D、模板的形参表中可以有多个参数标准答案:C知识点解析:本题考查类模板是是类的抽象,类是类模板的实例。模板的类型参数由关键字class或关键字typename及其后的标识符构成,(在标准C++之前关键字typename没有被支持,把这个关键字加入到C++中的原因是因为有时必须要靠它来指导编译器解释模板定义。)本题C选项错误。38、下列模板声明中,有语法错误的是A、templateTfun(Tx){returnx;}B、templateTfun(Tx,intn){returnx*n;}C、templateTfun(T*p){return*p;}D、templateTclassA{Tn;};标准答案:D知识点解析:本题考查模板的定义,B选项中x为T类型的,n为int型的,但是x*n就不一定是T类型的,所以错误。39、若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test.txt文件的是A、ifstreamfin;fin.open("d:\\test.txt",ios_base::in);B、fstreamfio;fio.open("d:\\test.txt",ios_base::out);C、ofstreamfout;fout.open("d:\\test.txt",ios_base::out);D、ofstreamfout;fout.open("d:\\test.txt",ios_base::app);标准答案:A知识点解析:本题考查文件流的一些操作,ios::in是以输入方式打开文件,如果没有则不会创建一个新文件,所以A选项正确。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共26题,每题1.0分,共26分。)1、有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test0{cout+"constructor"+end1;}test(inta){cout+a+end1;}test(consttest&test){a=test.a;cout+,,copyconstructor"+end1;{test(){Cout+"destructor"+end1;){;intmain(){testA(3);return0;{运行时输出的结果是()。A、3B、constructordestructorC、copyconstructordestructorD、3destructor标准答案:D知识点解析:此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一个,而在销毁时又会隐含调用唯一的析构函数。此题中,主函数创建对象A是会隐含调用test(inta)这个构造函数,输出3:接着主函数结束,对象A销毁又隐含调用~test()析构函数输出destructor。2、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。3、有如下程序:#includeusingnamespacestd;classPart{public:Part(intx=0):va1(x){cout<A、123321B、213312C、213D、123123标准答案:B知识点解析:此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序,最后执行自身的构造函数。析构顺序与之相反。本题中,Whole类中有两个Part类的成员p1和p2,根据它们定义的顺序,先构造pl再构造p2。所以,首先被构造的是p1(y),输出2;第二个被构造的是p2(x),输出1:最后调用析构函数,输出va1的值3;析构函数调用顺序与构造函数相反。故最后输出213312。4、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<A、0B、1C、01D、001标准答案:D知识点解析:此题考查的是类的构造。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序.>执行自身的构造函数。本题中,首先会构造基类Base,调用Base类的构造函数,输出0;然后还定义了一个Base类的对象,再次调用Base类的默认构造函数输出0;最后构造自身,因主函数中传入了构造参数1,所以输出1。故最后输出结果是:001。5、有如下类定义:classMyClass{Intvalue;public;MyClass(intn):value(n){}intgerValue()const{returnvalue;}};则类MyClass的构造函数的个数是()。A、1个B、2个C、3个D、4个标准答案:A知识点解析:此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造函数可以重载;在创建对象时,系统会自动调用构造函数。6、在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:如果一个类中定义了一个缺省的构造函数,则使用该函数,如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函致。7、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operator=(constMyClass&x){cout<<3;return*this;}~MyClass0{cout<<4;}};intmain(){MyClassobjl(1),obj2(2),obj3(obj1);return0:}运行时的输出结果是()。A、112444B、11114444C、121444D、11314444标准答案:A知识点解析:当创建MyClass类对象obj1(1)和obj2(2)时候,调用类构造函数会输出两个1,然后创建类对象obj3(obj(1))时,会调用拷贝类构造函数,输出一个2,然后当main函数结束时候,调用三个对象的析构函数会输出三个4。8、有如下程序:#include#includeusingnamespacestd;classXCF{inta;public:XCF(intaa=0):a(aa){tout<<"1";}XCF(XCF&x){a=x.a;cout<<"2";}~XCF(){cout<*pd=newXCF(8);cout<Geta();deletepd;return0;}运行时的输出结果是()。A、1215588B、1218855C、12185D、128512标准答案:B知识点解析:在这个程序中在建立对象d1(5)时,调用构造函数XCF(intaa=0):a(aa){coat<<"1";},输出1;在建立d2(d1)时,调用拷贝构造函数XCF(XCF&x){a--x.a;cout<<"2";},输出2:在建立newXCF(8)对象时,调用构造函数XCF(intaa=0):a(aa){cout<<"1";},输出1;语句cout<Geta()的功能是输出8;语句deletepd;调用析构函数~XCF(),输出8;当退出程序时,分别释放对象d2、d1,输出55。9、有如下程序:#includeusingnamespacestd;classONE{intc;public:ONE():c(0){cout<<1;}ONE(intn):c(n){cout<<2;}};classTWO{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<3;}};intmain(){TWOt(4);return0;}运行时的输出结果是()。A、3B、23C、123D、213标准答案:C知识点解析:由类TWO的定义可知,其成员为类ONE的两个对象one1和one2。所以在主函数中构建类TWO的对象t(4)时,先后调用类ONE的构造函数ONE():c(0){cout<<1;}和ONE(inn):c(n){cout<<2;)输出12,然后再调用类TWO的构造函数TWO(intm):one2(m){cout<<3;),输出3。10、Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是()。Samplea[2],*P=newSample;A、0B、1C、2D、3标准答案:D知识点解析:在C++中,声明一个类对象时,编译程序需要调用类的构造函数为对象分配存储空间,进行必须的初始化。在本题的这条语句中,声明了一个Sample类型的包含2个数组元素的数组a[2],一个指向类Sample对象的指针P,所以Sample类的构造函数共调用了3次。11、有如下程序:#includeusingnamespacestd;classToy{public:Toy(char*_n){strepy(name,_n);count++;}~ToyO{count--;}char*GetName(){returnname;}staticintgetCount(){returncount;}private:charname[10];staticintcount;};intToy∷count=0;intmain0{Toyt1("Snoopy"),t2("Mickey"),t3("Barbie");cout<A、1B、2C、3D、运行时出错标准答案:C知识点解析:类Toy中包含一个字符数组name和一个静态整型变量count。在程序中首先给类Toy的成员count的赋初始值0,然后在主函数中,定义了三个。Toy对象t1、t2、t3,并分别对它们的nallle字段赋值,在赋值的同时变量count的值加1,所以最后变量count的值等于3。12、有如下程序:#includeusingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<’?’;}Name(char*fname){strcpy(name,fname);cout<<’?’;}};intmain(){Namenames[3]={Name("张三"),Name("李四")};return0;}运行此程序输出符号?的个数是()。A、0B、1C、2D、3标准答案:D知识点解析:类Name有两个构造函数,在默认构造函数中,给字符数组name赋空值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,name[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出三个“?”符号。13、有如下程序#includeusingnamespacestd;classTest{public:Test(){}Test(constTest&t){cout<<1;}};Testfun(Test&u){Testt=u;returnt;}intmain(){Testx,y;x=fun(y);return0;}运行这个程序的输出结果是()。A、无输出B、1C、11D、111标准答案:C知识点解析:在类Test中定义拷贝构造函数Test(constTest&t),其函数体为输出1,在主函数main中,当执行语句x=fun(y),调用拷贝函数用对象y的值构造对象u,输出1,在执行函数tim()的return语句时,调用拷贝函数构造匿名对象,输出1。14、若MyClass为一个类,执行“MyClassa[4],*p[5],”语句时会自动调用该类构造函数的次数是()。A、2B、5C、4D、9标准答案:C知识点解析:语句MyClassa[4],*p[5]不仅定义了4个MyClass对象,分别为a[0],a[1],a[2],a[3],而且定义了5个指向MyClass对象的指针变量,分别为*p[0],*p[1],*p[2],*p[3],*p[4],所以共调用MyClass的构造函数4次。15、有如下程序:#includeusingnamespacestd;classCD{public:~CD(){cout<<’C’;}private:charname[80];};intmain(){CDa,*b,d[2];remrn0;}运行时的输出结果是()。A、CCCCB、CCCC、CCD、C标准答案:B知识点解析:在这个程序的主函数中定义了3个CD类的实例对象a,d[0],d[1]和一个指向CD类对象的指针变量b,所以当程序结束时,执行CD的析构函数输出字符C三次。16、有如下程序:#includeusingnamespacestd;classXA{inta;public:statichatb:Xa(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA∷b=0;intmain(){XAd1(2),d2(3);cout<A、5B、6C、7D、8标准答案:C知识点解析:执行XA类的实例变量d1(2)时,成员函数d1.get()的返回值等于2,XA.b的值等于1,执行XA类的实例变量d2(3)时,成员函数d1.get()的返回值等于3,XA.b的值等于2,所以输出结果为2+3+2=7。17、下列关于析构函数的描述中,错误的是()。A、析构函数可以重载B、析构函数由系统自动调用C、每个对象的析构函数只被调用一次D、每个类都有析构函数标准答案:A知识点解析:一般情况下,析构函数在对象的生存周期即将结束的时候由系统自动调用。在调用完成之后,对象也就消失了,相应的内存空间也被释放。析构函数没有参数,因此析构函数不能重载,一个类中只能定义一个析构函数。18、下列关于构造函数的描述中,错误的是()。A、构造函数名与类名相同B、构造函数可以有返回值C、构造函数可以重载D、每个类都有构造函数标准答案:B知识点解析:构造函数具有下面4个特殊的性质:构造函数的名字必须与类名相同;构造函数不指定返回类型,它隐含有返回值,由系统内部使用;构造函数可以有一个或多个参数,因此构造函数可以重载;在创建对象时。系统会自动调用构造函数。19、若PAT是一个类,则程序运行时,语句“PAT{*ad}[3];”调用PAT的构造函数的次数是(A、0B、1C、2D、3标准答案:A知识点解析:语句“PAT(*ad)[3]”定义了含有3个元素的指向类PAT。类型的指针数组ad。20、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){cout<<’*’;}MyClass(MyClass&a){cout<<’#’;}~MyClass(){cout<<’@’;}};intmain();MyClassa;Myclassb(a);return0;}运行时的输出结果是()。A、*@#@B、#@*@C、*#@@D、#*@@标准答案:C知识点解析:程序在执行时,先创建类对象a。输出*,再创建类对象b,输出撑,然后再依次调用类对象b和a的析构函数,输出两个21、有如下程序:#includeusingnamespacestd;classMonkey{public:Monkey(){cout<<’M’;}Monkey(charn){cout<*p2;p2=newMonkey(’X’);deletep2;return0:}运行这个程序的输出结果是()。A、MYXB、MYMYC、MXYD、MXYY标准答案:D知识点解析:在类Monkey中定义了默认的构造函数和带参数的构造函数,所以在主函数中,定义Monkey的对象p1时,调用默认的构造函数,输出M;定义Monkey的对象p2时,调用带参数的构造函数,输出X;在执行“deletep2;”语句时,调用析构函数,输出Y,在退出程序时,调用析构函数输出Y。22、下列关于类成员对象构造函数调用顺序的叙述中,正确的是()。A、与它们在初始化列表中的顺序相同B、与它们在类中声明的顺序相同C、与析构函数的调用顺序相同D、顺序不确定标准答案:B知识点解析:类成员对象构造函数的调用是按照在类中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行构造的。23、有如下程序:#include#includeusingnamespacestd;classMyString{public:charstr[80];MyString(constchar*s){strcpy(str,s);}MyString&operator+=(MyStringa){strcat(str,a.str);return*this;}};ostream&operator<<(ostream&s,constMyString&z){returns<A、abCB、cdeC、abcdeD、abccde标准答案:D知识点解析:在类MyString中,定义了带参数的构造函数MyString(constchar*s),其作用是把s指向的字符串拷贝到字符组s仃中。在类中还对运算+=进行重载定义,其作用是把字符串str和a相连接并赋给str,所以在主函数中执行x+=y时,结果为ahccde。24、下列关于this指针的叙述中,正确的是()。A、任何与类相关的函数都有this指针B、类的成员函数都有this指针C、类的友元函数都有this指针D、类的非静态成员函数才有this指针标准答案:D知识点解析:此题考查的是this指针的使用。类的每一个成员函数都有一个隐含的常量指针,即this指针。类的静态成员函数不能含有this指针,因为this指针是一个指向本对象的指针。25、有如下头文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是()。A、f1B、f2C、f3D、f4标准答案:C知识点解析:此题考查的是this指针。this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。题目中,只有f3()满足“类的非静态成员函数”的要求,故应选C选项。26、下列程序段中包含4个函数。其中具有隐含this指针的是()。intfunl();classTest{public:intfun2();friendintfun3();staticintfun4();}A、fun1B、tim2C、fun3D、fun4标准答案:B知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针知道自己属于哪一个对象。this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确的地表示出了成员函数当前操作的数据所属的对象。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共38题,每题1.0分,共38分。)1、下列叙述中正确的是A、所谓算法就是计算方法B、程序可以作为算法的一种描述方法C、算法设计只需考虑得到计算结果D、算法设计可以忽略算法的运算时间标准答案:B知识点解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序,A选项错误。算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果,C选项错误。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的,D选项错误。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法,B选项正确。2、下列各序列中不是堆的是A、(91,85,53,36,47,30,24,12)B、(91,85,53,47,36,30,24,12)C、(47,91,53,85,30,12,24,36)D、(91,85,53,47,30,12,24,36)标准答案:C知识点解析:若有n个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆:大根堆,所有结点的值大于或等于左右子结点的值;小根堆,所有结点的值小于或等于左右子结点的值。A、B、D选项属于大根堆,C选项由于47<91,判断属于小根堆,但91>85,不满足条件,不是堆,故正确答案为C选项。3、深度为5的完全二叉树的结点数不可能是A、15B、16C、17D、18标准答案:A知识点解析:在树结构中,定义一棵树的根结点所在的层次为1,其他结点所在的层次等于它的父结点所在的层次加1,树的最大层次称为树的深度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。深度为5的二叉树,结点个数最多为25-1=31,最少为24=16,不可能是15,故正确答案为A选项。4、设二叉树如下:则前序序列为A、ABDEGCFHB、DBGEAFHCC、DGEBHFCAD、ABCDEFGH标准答案:A知识点解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序遍历为ABDEGCFH,中序遍历为DBGEAFHC,后序遍历为DGEBHFCA,故A选项正确。5、下面描述不属于软件特点的是A、软件是一种逻辑实体,具有抽象性B、软件在使用中不存在磨损、老化问题C、软件复杂性高D、软件使用不涉及知识产权标准答案:D知识点解析:软件具有以下特点:软件是一种逻辑实体,具有抽象性;软件没有明显的制作过程;软件在使用期间不存在磨损、老化问题;对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素,如知识产权等。故选项D正确。6、下面对类-对象主要特征描述正确的是A、对象唯一性B、对象无关性C、类的单一性D、类的依赖性标准答案:A知识点解析:对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反映属于该对象类型的所有对象的性质。对象具有的性质,类也具有。故A选项正确。7、在数据库中,数据模型包括数据结构、数据操作和A、数据约束B、数据类型C、关系运算D、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论