版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(选择题)模拟试卷6(共9套)(共343题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共38题,每题1.0分,共38分。)1、下面关于算法的叙述中,正确的是()。A、算法的执行效率与数据的存储结构无关B、算法的有穷性是指算法必须能在执行有限个步骤之后终止C、算法的空间复杂度是指算法程序中指令(或语句)的条数D、以上三种描述都正确标准答案:B知识点解析:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。2、下列二叉树描述中,正确的是()。A、任何一棵二叉树必须有一个度为2的结点B、二叉树的度可以小于2C、非空二叉树有0个或1个根结点D、至少有2个根结点标准答案:B知识点解析:二叉树是由n≥0个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。二叉树具有如下两个特点:①非空二叉树只有一个根结点;②每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。3、如果进栈序列为A,B,C,D,则可能的出栈序列是()。A、C,A,D,BB、B,D,C,AC、C,D,A,BD、任意顺序标准答案:B知识点解析:栈的操作原则为后进先出。选项B)中出栈顺序可按“A进,B进,B出,C进,D进,D出,C出,A出”实现。4、下列各选项中,不属于序言性注释的是()。A、程序标题B、程序设计者C、主要算法D、数据状态标准答案:D知识点解析:注释一般为序言性注释和功能性注释。序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。5、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。6、下列不属于软件工程3个要素的是()。A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。7、数据库系统在其内部具有3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是()。A、外模式B、概念模式C、内模式D、存储模式标准答案:B知识点解析:概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。8、将E-R图转换到关系模式时,实体与联系都可以表示成()。A、属性B、关系C、记录D、码标准答案:B知识点解析:E-R图由实体、实体的属性和实体之间的联系3个要素组成,关系模型的逻辑结构是一组关系模式的集合,将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。如下表所示。9、某二叉树中度为2的结点有10个,则该二叉树中有()个叶子结点。A、9B、10C、11D、12标准答案:C知识点解析:根据二叉树的性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。10、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<“A”;)~A(){cout<<“~A”;)};classB:publicA{A*p;public:B(){cout<<"B";p=newA;}~B(){cout<A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:此题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出A,然后调用子对象的构造函数输出B,p=newA再调用类A的构造函数输出A;析构函数的调用顺序和构造函数的调用顺序相反。11、若有以下程序:#includeusingnamespacestd;classA{public:A(inti,intj){a=i;b=j;}voidmove(intx,inty){a+=x;b+=y;}voidshow(){cout<A、3,4B、6,8C、6,9D、4,3标准答案:C知识点解析:此题的执行过程如下:首先Bd(3,4);语句调用B类的构造函数:B(inti,intj),B的构造函数中调用基类A的构造函数,使得a=3,b=4;d.fun(、)会调用函数move(3,5),使得(3,4)和(3,5)的对应部分分别相加,最后输出6,9。12、有如下程序:#includeusingnamespacestd;classTest{public:Test(){n+=2;)~Test(){n-=3;}staticintgetNum(){retumn;}private:staticintn:};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<“n=”<A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:语句Test*p=newTest;会调用类的构造函数Test(){n+=2;},使n的值由原来的1变为3,然后deletep调用类的析构函数~Test(){n-=3;},因为n是static型变量,所以会在3的基础上减3使得输出结果为0。13、假定MyClass为一个类,那么下列的函数说明中,()为该类的析构函数。A、void~MyClass():B、MyClass(intn);C、MyClass():D、~MyClass0:标准答案:D知识点解析:CH语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass()。14、下列情况中,不会调用拷叭构造函数的是()。A、用一个对象去初始化同一类的另一一个新对象时B、将类的一个对象赋值给该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时标准答案:B知识点解析:拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名::类名(const类名&引用对象名)。当一个类的对象赋值给该类的另一个对象时,是赋值而不是创建对象,所以不会调用拷贝构造函数。15、下列有关拷贝构造函数的描述中错误的是()。A、拷贝构造函数是一种构造函数B、拷贝构造函数与一般的构造函数一样,可以设置多个形参C、每一个类中都必须有一个拷贝构造函数D、拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象标准答案:B知识点解析:拷贝构造函数是一个特殊的构造函数,它用一个己知的对象初始化一个正在创建的同类对象,它不能指定函数返回类型;只有一个参数,是同类的某个对象名的引用。每一个类中都必须有一个拷贝构造函数,如果类中未声明,编译器会自动生成一个公有的拷贝构造函数。16、类MyClass的定义如下,若要对value赋值,则下面语句正确的是()。classMyClass{public:MyClass0{}MyClass(inti){value=newint(i):}int*value;};A、MyClassmy;my.value=10;B、MyClassmy;*my.value=10;C、MyClassmy;my.*value=10;D、MyClassmy(10);标准答案:D知识点解析:因题目中定义的指针value是指向变量i的,所以直接利用语句MyClass(inti)f,value=newint(i);}对value进行赋值即可。17、若有如下程序:#includeusingnamespacestd;ints=0:classsample{staticintn;public:sample(inti){n=i;)staticvoidadd(){s+=n;)};intsample::n=0;intmain(){samplea(2),b(5);sample::add0;cout<A、2B、5C、7D、3标准答案:B知识点解析:执行语句“samplea(2),b(5)”;的结果是使n的值最终变为5,sample::add()语句调用函数staticvoidadd(),使得S=S+n=5。18、下列运算符中不能在C++中重载的是()。A、?:B、+C、一D、<=标准答案:A知识点解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符;除了.、.*、一>*、::、?:这五个运算符之外,其他运算符都可以重载。19、下列重载函数中,正确的是()。A、voidfun(inta,floatb);voidfun(intC,foatd)B、voidfun(inta,floatb);voidfun(floata,intb)C、floatfun(inta,floatb);intfun(intb,floata);D、intfun(inta,hatb);floatfun(inta,intb)标准答案:B知识点解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。20、以下不正确的是()。A、语句for(i=0;;i++)表示无限循环B、for(;;)表示无限循环C、for()表示无限循环D、while(1)表示无限循环标准答案:C知识点解析:选项C)是一个错误的for语句格式,for()语句中三个表达式可以省略。但是两个分号(:)不能省略。21、有如下程序:intx=3;do{x一=2:count<A、1B、30C、1-2D、死循环标准答案:C知识点解析:第一次循环输出1,第二二次循环输出是-2。在输出二次循环后!(-x)为0条件不满足。停止循环。22、若有以下定义,说法错误的是()。inta=100,*p=&a:A、声明变量P,其中*表示P是一个指针变量B、变量P经初始化,获得变量a的地址C、变量P只可以指向一个整型变量D、变量P的值为100标准答案:D知识点解析:p是一个指针,用来存储a变量的地址,而100是存储在该地址的一个值用p表示的为*p。23、若已定义inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0A、a[p—a]B、*(&a[i])C、p[i]D、a[10]标准答案:D知识点解析:数组有N个元素,则数组元素引用为a(0)~a(N.1),共计N个,没有a(10)i塞个元素,最后的元素是a(9)。24、有如下程序:#includeusingnamespacestd;classsample{private:intx,y;public:sample(inti,intj){x=i:y=j;}voiddisp0{cout<<“disp1”<A、disp1B、disp2C、disp1disp2D、程序编译时出错标准答案:B知识点解析:因为对象a被定义为常对象,所以a.disp()语句调用的是类的常成员函数voiddisp()const,输出的结果是disp2。25、有如下类的定义,横线处的语句是()。classTestClass{________intx,y;public:TestClass(inta=0,intb=0){X=a:y=b;}staticvoidchange(){y-=10;y一=10;}};A、publicB、privateC、staticD、protected标准答案:C知识点解析:因为staticvoidchange()为静态函数,静态函数主要访问静态数据,不访问非静态数据。所以函数中访问了数据y,所以下划线的数据类型应对应为static。26、有如下程序:#includeusingnamespacestd;classTestClass{protected:TestClass(){cout<<‘x’;}TestClass(charc){cout<A、yB、yxC、xyD、yy标准答案:C知识点解析:程序中的类TestClass为基类,TestClassl为TestClass的派生类。由main主函数入手,定义TestClass1类型的对象d1,参数值为y。TestClassl类继承17estClass,所以主函数中“TestClassldl(V);”语句首先调用调用基类中的“TestClass(){cout<<‘x’;}”输出x,然后调用“TestClassl(charc){cout<27、下面是关于派生类声明的开始部分,其中正确的是()。A、classvirtualB:publicAB、virtualclassB:publicAC、classB:publicAvirtualD、classB:virtualpublicA标准答案:D知识点解析:声明派生类的~一般形式为:class派生类名:[继承方式]基类名。其中继承方式包括:oublic,private,protected,而virtual为C++中的关键字。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。28、在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。A、autoB、externC、registerD、static标准答案:A知识点解析:此题考查的是存储类型。C++语言变量的存储类型分为如下几种类型:auto一一函数内部的局部变量;static一一静态存储分配:extern…全局变量;register一一变量存储在硬件寄存器中。29、若有以下程序:#includeusingnamespacestd;classTestClass{public:voidwhoO{cout<<“TestClass”<who();return0:}则该程序运行后的输出结果是()。A、TestClass1B、TestClassC、0D、无输出标准答案:B知识点解析:程序中的TestClasl为TestClass的派生类,主函数。main中定义TestClass对象*p,TestClassl对象obj1,然后p引用obj1,执行p->who()则是调用基类中的who函数,输出TestClass。30、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:如果派生类私有继承基类,不能访问基类中的私有成员,所以A)、B)是错误的。派生类是对基类的具体化,所以C)错误的。如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类,即选择D)。31、下面叙述错误的是()。A、派生类可以使用private派生B、对基类成员的访问必须是无二义性的C、基类成员的访问能力在派生类中维持不变D、赋值兼容规则也适用于多继承的组合标准答案:C知识点解析:在建立派生类的时候,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对基类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个因素共同决定基类成员在派生类中的访问属性。所以本题选择C)。32、下列程序的输出结果为2,横线处应添加语句()。#includeusingnamespacestd;classTestClass1{public:voidfun(){cout<<1;}};classTestClass2:publicTestClass1{public:voidfun0{cout<<2;)};intmain(){TestClass1*p=newTestClass2;p->fun();deletep;retum0:}A、publicB、privateC、virtualD、protected标准答案:C知识点解析:由主函数main入手,定义TestClass1类的指针对象p指向派生类TestClass2。因为基类和派生类中都有fun函数,题目要求输出为2,就是基类对象访问派生类中fun函数。通过虚函数与指向基类对象的指针变量的配合使用,就能方便调用同名函数。所以这里将基类中的fun函数声明为virtual。并且当一个成员函数被声明为虚函数后,其派生类中的同名函数自动成为虚函数。33、要使程序执行后的输出结果为ABCD,应在横线处添加语句()。#includeusingnamespacestd;classA{public:A(){cout<<~A;}};classB:________{public:B0{cout<<’B’;}};classC:virtualpublicA{public:C(){cout<<’C’;)};classD:publicB,publicC{public:DO{cout<<’D’;}};voidmain(){Dobj;}A、publicAB、privateAC、protectedAD、virtualpublicA标准答案:D知识点解析:由主函数main入手,定义了类D对象obj。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为“ABCD”,依次为类A,类B,类C,类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。34、下面的描述中,正确的是()。A、virtual可以用来声明虚函数B、含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C、即使基类的构造函数没有参数,派生类也必须建立构造函数D、静态数据成员可以通过成员初始化列表来初始化标准答案:A知识点解析:在基类中用virtual声明成员函数为虚函数,所以A是正确的。纯虚函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数是一种特殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初始化。35、若要把函数voidfun0定义为TestClass的友元函数,则应该在类TestClass的定义中加入的语句是()。A、voidfriendfun()B、friendfun()C、friendvoidfun()D、TestClassvoidfun()标准答案:C知识点解析:如果在类以外的其他地方定义了一个函数,在类体中用friend对该函数进行声明,此函数就称为本类的友元函数。因为函数为voidfun(),根据友元定义补全语句为“friendvoidfun();”。36、已知递归函数fun的定义如下:intfun(hatn){iffn<=1)retum1;//递归结束情况elsereturnn*fun(n-2);//递归}则函数调用语句fun(S)的返回值是()。A、5B、12C、15D、30标准答案:C知识点解析:递归函数fun被定义为含有参数intn,返回整型。其中fun函数递归调用本身,当n=1时,fun返回1,如果大于1那么执行n*fun(n一21。所以,当n等于5时,执行5*fun(3);当3时继续调用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案为15。37、字面常量42、4.2、42L的数据类型分别是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long标准答案:C知识点解析:此题考查的知识点是字面常量。对于整型字面常量,只要没有超过C++中整数所能表示的范围,C++将自动按整数来存储此数,也可以通过在整型字面常量后添加u或1来指定无符号整数或长整数来存储;对于实型字面常量,C++将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度数存储。38、下列有关内联函数的叙述中,正确的是()。A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句标准答案:C知识点解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项A)错误:即使没有使用inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B)错误;内联函数只是比普通函数有更高的执行效率。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共37题,每题1.0分,共37分。)1、算法的时间复杂度是指()。A、算法的长度B、执行算法所需要的时间C、算法中的指令条数D、算法执行过程中所需要的基本运算次数标准答案:D知识点解析:算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。2、以下数据结构中,属于非线性数据结构的是()。A、,栈B、线性表C、队列D、二叉树标准答案:D知识点解析:二叉树属于非线性结构。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作;队列可看作是插入在一端进行,删除在另一端进行的线性表。3、数据结构中,与所使用的计算机无关的是数据的()。A、存储结构B、物理结构C、逻辑结构D、线性结构标准答案:C知识点解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。4、内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是()。A、顺序内聚B、偶然内聚C、时间内聚D、逻辑内聚标准答案:B知识点解析:内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:偶然内聚——模块中的代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块为巧合强度模块。逻辑内聚——这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的参数来确定该模块应完成哪一种功能。时间内聚——这种模块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。过程内聚——如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。通信内聚——这种模块除了具有过程内聚的特点外,还有另外一种关系,即它的所有功能都通过使用公用数据而发生关系。顺序内聚——如果一个模块内各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。功能内聚——如果一个模块包括为完成某一具体任务所必需的所有成分,或者说模块中所有成分结合起来是为了完成一个具体的任务,此模块则为功能内聚模块。5、在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的()。A、连接码B、关系码C、外码D、候选码标准答案:D知识点解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。6、检查软件产品是否符合需求定义的过程称为()。A、确认测试B、需求测试C、验证测试D、路径测试标准答案:A知识点解析:确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求。7、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。A、控制流B、加工C、存储文件D、源和潭标准答案:A知识点解析:数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构成,包括4个方面,即加工、数据流、存储文件、源和潭。8、待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。A、2B、3C、4D、5标准答案:A知识点解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一个位置,元素15则放在第二个位置。9、对关系S和关系R进行集合运算,结果中既包含关系S中的所有元组也包含关系R中的所有元组,这样的集合运算称为()。A、并运算B、交运算C、差运算D、除运算标准答案:A知识点解析:关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。10、下列选项中,不属于数据管理员(DBA)职责的是()。A、数据库维护B、数据库设计C、改善系统性能,提高系统效率D、数据类型转换标准答案:D知识点解析:数据库管理员(DataBaseAdministrator,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:.数据库设计。DBA的主要任务之一是数据库设计,具体地说是进行数据模式的设计。.数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护。.改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。11、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。A、MyClass(MyClassx);B、MyClass(MyClass&x);C、MyClass(&x);D、MyClass(x);标准答案:B知识点解析:拷贝构造函数也是构造函数,所以函数名字为MyClass,但它只有一个参数,这个参数是本类的对象,即x;而且采用对象的引用的形式,也就是&x。所以本题答案是B)。12、下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false,则横线处应填上()。Boolfun(ehar*str){inti=0,i=0;while(strD])j++;for([j--;iA、>--B、‖C、&&D、<==标准答案:A知识点解析:while循环取串长度,赋值给i,然后在for循环中由串两边开始向中间进行字符比较,当最后i和j标识字符位置的变量相等,那么奇数个字符,或者i大于i时那么偶数个字符,则表示是对称的。13、有以下程序段:#include#defineMAX(x,y)(x)>(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=MAX(i,j)*10;cout<A、15B、100C、150D、10标准答案:C知识点解析:题目程序中的MAX函数是利用条件运算符为?:求最大值。即(x>y)?(x):(y)是当x大于y时取x,否则取y。当i:10,j=15时,“MAX(i,j)”的值为15,所以“k=MAX(i,i)*10;”答案为:150。14、定义如下枚举类型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};表达式Wednesday==Friday的值是()。A、falseB、trueC、2D、异常标准答案:B知识点解析:enum<枚举类型名>{<枚举元素表>};其中:关键词“enum”表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。本题中的枚举类型中的数据值Wednesdav为2,而Fridayr的值赋值为2,所以判断Wednesdayr等于Fridav的表达式值为真,即true。15、以下程序运行后的输出结果是()。#includevoidmain(){chara[]="abbcabbcabbc";inti=0,j=0,k=0;while(a[i]){if(a[i]==’a’)j++;if(a[i]==’b’)k++;i++:}cout<A、2,6B、3,5C、4,7D、3,6标准答案:D知识点解析:程序中首先定义字符数组a,然后在while循环中统计字符a和b的个数。其中j记录a的个数,k记录b的个数。,第一个if语句是当第i个字符为a时,i加1;第二个if语句是当第i个字符为b时,k加1。16、假定a=3,下列程序的运行结果是()。#includeintfun(intn);voidmain(){cout<<"Pleaseinputanumber:";inta,result=0;cin>>a;result=fun(a);tout<A、4B、8C、9D、20标准答案:C知识点解析:由程序main主函数入手,调用fun函数获得返回值result输出。题目中假定a=3,即调用语句fun(a)中的输入参数为a,进入fun函数,在for循环中当i小于等于n,即输入参数3时,循环3次执行“p*=i;restllt+=p:”语句。即执行三次p=p*i,result=restult+p.result的结果为9返回的fun函数结果为9,即“cout<17、下列关于指针的运算中,()是非法的。A、两个指针在一定条件下,可以进行相等或不等的比较运算B、可以将一个空指针赋值给某个指针C、一个指针可以加上两个整数之差D、两个指针在一定条件下可以相加标准答案:D知识点解析:指针变量如果指向一个数组的元素,则可以进行比较,所以A)是正确的。指针变量的赋值就是将一个变量地址赋给一个指针变量。并且指针变量可以是空值,即该指针不指向任何变量。B)同样也是正确的。指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。即C)也是正确的。如果两个指针指向同一个数组元素,两个指针是可以相减的,杯识两个指针之间的元素个数。但是它们是不可相加的。18、下面程序的输出结果为()。#includevoidmain(){intx;int&y=x;∥变量引用31=99;cout<<"x="<A、x=99B、x=9C、x=0D、异常标准答案:A知识点解析:程序中的“int&y=x:”语句中的“&”引用运算符。&y=x语句可以理解为y,具有x的地址,所以y的值99,x的值也是99,所以答案是x=99。19、下面程序输出的结果为()。#includevoidfun(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=1;n=2:fun(m,n);cout<A、12B、21C、22D、程序有错误标准答案:A知识点解析:函数fun中定义的参数a和b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内行空间,结束后,形参所占有的内存单元也被释放。并且函数fun没有返回值,它做的交换操作,并不能影响实际参数m和n。所以输出值保持不变,仍然是1和2,即输出:12。20、对数组名作函数的参数,下面描述正确的是()。A、数组名作函数的参数,调用时将实参数组复制给形参数组B、数组名作函数的参数,主调函数和被调函数共用一段存储单元C、数组名作参数时,形参定义的数组长度不能省略D、数组名作参数,不能改变主调函数中的数据标准答案:B知识点解析:数组作为参数实参传递的是数组的首地址。所以主函数和被调函数共用一段存储单元。21、关于静态成员的描述中,错误的是()。A、静态成员可分为静态数据成员和静态成员函数B、静态数据成员定义后必须在类体内进行初始化C、静态数据成员初始化不使用其构造函数D、静态数据成员函数中不能直接引用非静态成员标准答案:C知识点解析:可以在类的构造函数中对静态数据成员进行初始化。22、下列关于构造函数的描述中,错误的是()。A、构造函数可以设置默认的参数B、构造函数在定义类对象时自动执行C、构造函数可以是内联函数D、构造函数不可以重载标准答案:D知识点解析:在一个个类中可以定义多个构造函数,以便对类对象提供不同的初始化的方法,供用户选用。这些构造函数具有相同的名字,而参数的个数或参数的类型不相同。23、有以下程序,输出结果()。#includevoidmain(){staticintb[][3]={{1,2,3},{4},{5,6}};b[0][2]=12,b[1][2]=18;cout<<**b<<"\t"<<**(b+1)<<"\t"<<**(b+1)<<"\t"<<*(*(b+1)+2)<<"\n";cout<A、1441830B、114418C、441811D、444301标准答案:A知识点解析:本题b是一个3×3的二维数组:利用指针表示数组:*(*数组名-i)+j)**b表示b[0][0]元素,值是1,**(b+1)表示是b[0][1]的元素,值是4。*(*(b+1)+2)表示b[1][2]的元素,值是18,b[0][2]+b[1][2]+b[2][2]之和是30。24、下列程序的输出结果是()。#includeusingnamespacestd;voidfun(int&r){r*=2;}intmain(){intn=50;fun(n);cout<A、0B、20C、50D、100标准答案:D知识点解析:题中主程序中首先定义整型变量n=50,然后调用函数fun,实际参数为n。函数fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以2。25、下列说法中错误的是()。A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中仍是prirate的C、私有继承时基类中的public成员在派生类中是private的D、保护继承时基类中的public成员在派生类中是protected的标准答案:B知识点解析:此题考查的是继承时基类成员属性改变。选项B)中,公有继承时基类中的private成员在派生类中不是private的,而是不可访问的。所以选项B)错误;其他选项叙述均正确。26、多继承的构造顺序可分为如下四步:①所有非虚基类的构造函数按照它们被继承的顺序构造②所有虚基类的构造函数按照它们被继承的顺序构造③所有子对象的构造函数按照它们声明的顺序构造④派生类自己的构造函数体这四个步骤的正确顺序是()。A、④③①②B、②④③①C、②①③④D、③④①②标准答案:C知识点解析:多继承派生类的构造顺序是:首先调用虚基类的构造函数,然后调用非虚基类的构造函数按照它们被继承的顺序构造,其次调用子对象的构造函数,最后是派生类构造函数中的内容。27、下面关于构造函数和析构函数的描述中,错误的是()。A、析构函数可以声明为虚函数B、对虚析构函数的调用可以采用动态联编C、一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响D、构造函数可以声明为虚函数标准答案:D知识点解析:析构函数可以声明为虚函数,但是构造函数不能声明为虚函数;类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响。28、设有以下定义和程序:#includeclassA1{public:voidshow1(){cout<<"classA1"<A、obj1.showl();B、obj2.show1();C、obj3.showl();D、obj2.show2();标准答案:C知识点解析:由于classA3:protectedA2,所以类A3的对象obi3不能直接访问基类A1的成员函数showlf),所以选项C)是错误的;其他选项均有访问的权限,正确。29、下列关于运算符重载的描述中,正确的是()。A、运算符重载可以改变运算符的操作数的个数B、运算符重载可以改变优先级C、运算符重载可以改变结合性D、运算符重载不可以改变语法结构标准答案:D知识点解析:重载的运算符仍要保持其原来的操作数、优先级和结合性不变。30、下面程序的输出结果是()。#include#includeusingnamespacestd;classpoint{private:doublex:doubley;public:point(doublea,doubleb){x=a;y=b;}frienddoubledistances(pointa,pointb);};doubledistances(pointa,pointb){returnsqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}intmain(){pointp1(1,2);pointp2(5,2);cout<A、2B、4C、8D、16标准答案:B知识点解析:分析题目,最终要实现的结果是sqrt((a.x—b.x)*(a.x—b.x)+(a.y—b.y)*(a.y—b.y)),其中的a.x和a.y分别指p1(1,2)中的1和2。这样容易得到结果是(1-5)*(1-5)+(2-2)*(2-2)=16,再开方得到结果为4。31、有以下程序:#includeusingnamespacestd;classR{public:R(intr1,intr2){R1=r1;R2=r2;}voidprim();voidprintoconst;private:intR1,R2;};voidR::print(){cout<A、5,4B、4,5C、20,52D、52,20标准答案:C知识点解析:此题中,语句Ra(5,4)调用构造函数R(intr1,intr2),但未有输出结果;b.print();调用常成员函数(因为b是常对象)voidprint()const,输出结果是20,52。32、下列程序的输出结果是()。#includeusingnamespacestd;templateTfun(Ta,Tb){return(a<=b)?a:b;)intmain(){cout<A、0,3.14B、3,3.14C、3,3D、3.14,3.14标准答案:B知识点解析:此函数模板的功能是输出a、b两数中较小的那个数。(3,6)输出3,(3.14F,6.28F)输出3。14。33、如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用()关键字来修饰。A、constB、staticC、voidD、class标准答案:D知识点解析:如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用class关键字来修饰。34、下列关于this指针的叙述中,正确的是()。A、this指针是一个隐含指针,它隐含于类的成员函数中B、只有在使用this时,系统才会将对象的地址赋值给thisC、类的友元函数也有this指针D、this指针表示了成员函数当前操作的数据所属的对象标准答案:D知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。35、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:此题考查的是函数重载的概念。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项C)错误。36、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。37、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共35题,每题1.0分,共35分。)1、在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。A、逻辑设计B、需求分析C、详细设计D、物理设计标准答案:B知识点解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。2、对序线性表(23,29,34,55,60,70,78)用工分法查找值为60的元素时,需要比较次数为()。A、1B、2C、3D、4标准答案:C知识点解析:根据二分法查找法需要两次:①首先将60与表中间的元素55进行比较,由于60大于55,所以在线性表的后半部分查找。②第二次比较的元素是后半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在线性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这时两者相等,即查找成功。3、下列描述中,正确的是()。A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构标准答案:A知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足,下列两个条件:①有且只有一个根结点:②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。4、下列关于线性表的叙述中,不正确的是()。A、线性表可以是空表B、线性表是一种线性结构C、线性表的所有结点有且仅有一个前件和后件D、线性表是由n个元素组成的一个有限序列标准答案:C知识点解析:线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C)是错误的。5、设有如下关系表:则下列操作正确的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=R∪S标准答案:C知识点解析:T就是关系R中有的,同时S中也有的有序组(4、5、6),即交运算(∩)。6、以下描述中,不是线性表顺序存储结构特征的是()。A、可随机访问B、需要连续的存储空间C、不便于插入和删除D、逻辑相邻的数据物理位置上不相邻标准答案:D知识点解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。7、在三级模式之间引入两层映像,其主要功能之一是()。A、使数据与程序具有较高的独立性B、使系统具有较高的通道能力C、保持数据与程序的一致性D、提高存储空间的利用率标准答案:A知识点解析:数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。8、下列方法中,属于白盒法设计测试用例的方法的是()。A、错误推测B、因果图C、基本路径测试D、边界值分析标准答案:C知识点解析:白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。9、关于虚函数,以下说法正确的是()。A、若在重定义虚函数时使用了virual,则该重定义函数还是虚函数B、虚函数不能声明为友元C、子类必须重定义父类的虚函数D、虚函数不能是static的标准答案:D知识点解析:在C++中,虚函数可以是友元函数,但不能是静态成员。虚函数的重定义函数,无论是否使用virtual关键字,仍然是虚函数。所以答案选择D)。10、下列关于纯虚函数与抽象类的描述中,错误的是()。A、纯虚函数是一种特殊的虚函数,它没有具体的实现B、抽象类是指具有纯虚函数的类C、一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出标准答案:C知识点解析:纯虚函数是在声明虚函数时被“初始化”为O的虚函数。不定义对象而只作为一种基本类型用作继承的类,称为抽象类。凡是包含纯虚函数的类都是抽象类。抽象类的作用是作为一个类族的共同基类。11、将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为()。A、operator+(operator*(y,z))B、x.operator+(operator*(y,z))C、x.operator+(x*(y,z))D、x+(operator*(y,z))标准答案:B知识点解析:在定义了重载运算符后的函数后,函数operator+重载了运算符“+”。如果在类以外的其他地方定义了一个函数,在类体中用friend对该函数进行声明,此函数就称为本类的友员函数。“*”用友元函数重载就是运算符函数不作为成员函数,而把它放在类外,“*”被改写为“operator*”。“+”为成员函数重载,x.operator+。所以x+y*z被改写为“x.operator+(operator*(y,z))”。12、以下程序的执行结果是()。#include<iostream.h>#include<iomanip.h>voidfun(intn){if(n!=0){fun(n-1);for(inti=1;i<=n;i++)cout<<setw(3)<<i;cout<<endl;}}voidmain(){fun(3);A、001012B、112123C、122333D、123标准答案:B知识点解析:首先由程序中的主函数main入手,调用fun函数,参数为3。fun(n)函数在其内部,当n不等于0时,递归调用fun(n-1)。当参数为3时,fun(3)调用fun(2)…,然后利用for循环输出i值,当n=1时,只输出1,输出回车后,就跳入fun(2),输出1,2,最后输出是1,2,3。13、有以下程序,在横线应添加()。#include<iostream>usingnamespacestd;classTestClass{public:TestClass(intn){number=n;}//拷贝构造函数~TestClass(){}private:intnumber;};TestClassfun(TestClassp){TestClasstemp(p);returntemp;}intmain(){TestClassobj1(10),obj2(0);TestClassobj3(obj1);obj2=fun(obj3);return0:}A、TestClass(TestClass&other){number=other.number;}B、TestClass(TestClassother){number=other.number;}C、TestClass(TestClass&other){number;}D、TestClass(&other){number=other.number;}标准答案:A知识点解析:拷贝构造函数也是构造函数,但它只有一个参数,这个参数是本类的对象,即other,所以赋值操作将本类的参数other.number赋值给number;而且采用对象的引用的形式,也就是&other。14、执行完下列代码段之后:boolx=true,y=false,z=false;x=x&&y‖z;y=x‖y&&z;z=!(x!=y)‖(y=z);则x=false,y=false,z=()。A、trueB、falseC、不确定D、异常标准答案:A知识点解析:其中“x=x&&y‖z”语句计算后x=false,“y=x‖y&&z;”语句计算后y=false。那么“z=!(x!=y)‖(y==z);”语句计算后“z=!(ture)‖true”,所以答案为:true。15、定义如下枚举类型:enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};,则下列语句正确的是()。A、表达式Wednesday==Friday的值是trueB、Dayday;day=3C、Dayday;day=Monday+3D、Dayday;day=Tuesday+10标准答案:A知识点解析:enum<枚举类型名>{<枚举元素表>};其中:关键词enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。其中enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2}的值由0开始,即0,1,2,3。D中的本题中的枚举类型中的数据值Wednesday为2,而Friday的值赋值为2,所以判断Wednesday等于:Friday的表达式值为真,即true。即选择A)。16、函数swap(a,n)可完成对a数组从第1个元素到第n个元素两两交换。其中b[0]=1;b[1]=2;swap(b,2)。在运行调用函数中的语句后,b[0]和b[1]的值分别为()。A、1,1B、1,2C、2,2D、2,1标准答案:D知识点解析:如果函数实参是数组名,形参也应为数组名,函数swap中形参进行了交换,实际上也是实参进行了交换。而且数组名代表数组首元素的地址,并不代表数组的全部元素。所以,swapfb,2)是数组b第一个元素与第二个元素进行交换,即b[0]与b[1],根据题干,知道答案为2,1。17、下列for循环的循环体执行次数为()。for(inti(0),j(10);i=j=4;i++,j--)A、0B、1C、4D、无限标准答案:D知识点解析:循环条件i=i=4;是个赋值语句,使得i,i的值非0,所以是死循环。18、下述关于开关语句的描述中,正确的是()。A、开关语句中default子句可以没有,也可以有一个B、开关语句中每个语句序列中必须有break语句C、开关语句中default子句只能放在最后D、开关语句中case子句后面的表达式可以是整型表达式标准答案:A知识点解析:在switch语句中default的位置不是固定在最后的位置,同时default也是可以省略。19、下列存储类标识符中,可见性与存在性不一致的是()。A、外部类B、自动类C、内部静态类D、寄存器类标准答案:C知识点解析:可见性是函数内部,存在整个程序中,第二次调用值不变。20、下述静态数据成员的特征中,错误的是()。A、说明静态数据成员时前面要加修饰符staticB、静态数据成员要在类体外进行初始化C、引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符D、静态数据成员不是所有对象所共用的标准答案:D知识点解析:静态数据成员是在类装载的时候就分配了内存空间,而类的成员变量是在生成对象时分配内存空间。所以只要类装载了,就可以用类名访问静态数据成员。事实上,该类的所有对象都只保存类静态数据成员的引用,它们都指向同一块内存区域。21、以下程序的执行结果是()。#include<iostream.h>inta[8]={1,2,3,4,5,6,7};voidfun(int*pa,intn);voidmain(){intm=8;fun(a,m);cout<<a[7]<<endl;}voidfun(int*pa,intn){for(intI=0;I<n-1;I++)*(pa+7)+=*(pa+I);}A、0B、1C、4D、28标准答案:D知识点解析:voidfun(int*pa,intn)函数定义的功能就是把数组的每个元素的值加到元素pa[7]中,也就是数组的元素之和放在a[7]中存储,所以结果28。22、以下程序段是函数返回a所指数组中最大的值所在的下标值,横线处的语句为()。fun(int*a,intn){inti,j=0.k:k=j;for(i=j;i<n;i++)if(a[i]>a[k])_______;return(k);}A、k=iB、k=jC、i=iD、i=n标准答案:A知识点解析:函数fun中首先定义整型变量k用来存放返回最大值的下标,并将其首先指向第一个元素,即k=j。然后在for循环中依次将当前元素a[i]与标识为最大值的元素进行比较,如果当前元素大于这个标识元素,那么将最大值标识为当前元素,即k=i。23、有如下类声明:classMyBASE{intk;public;voidset(intn){k=n;}intget()const{returnk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;}};则类MyDERIVED中保护的数据成员和成员函数的个数是()。A、4B、3C、2D、1标准答案:B知识点解析:因为在保护继承的情况下,基类中的公有成员voidset(intn)和intget()const在派生类中是保护成员,再加上派生类自身的保护成员i,一共是三个保护成员。24、下列关于继承的描述中,错误的是()。A、析构函数不能被继承B、派生类是基类的组合C、派生类的成员除了它自己的成员外,还包含了它的基类的成员D、派生类中继承的基类成员的访问权限到派生类保持不变标准答案:D知识点解析:派生类中继承的基类成员的访问权限到派生类会发生变化,例如:私有继承时,派生类不能访问基类的成员,所以选项D)错误,其他选项均正确。25、类的析构函数的作用是()。A、一般成员函数B、类的初始化C、对象的初始化D、释放由对象所占用的资源标准答案:D知识点解析:类的在撤销对象时,系统会自动调用类的析构函数,析构函数用来释放由对象所占用的资源。26、如果表达式v*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为()。A、x.operator++(0).operator*(y)B、operator*(x.operator++(0),y)C、y.operator*(operator++(x,0))D、operator*(operator++(x,0),y)标准答案:C知识点解析:运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即y.operator*(z)或者operator*(y,z):另一种是通过运算符构成表达式,即y水z。因为“++”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀“++”时必须多一个虚拟参数:int。27、有如下程序:#include<iostream>usingnamespacestd;classXX{protected:intk;public:XX(intn=5):k(n){};~XX(){cout<<"XX";}virtualvoidf()const=0;};inlinevoidXX::f()const{cout<<k+3;};classYY:publicXX{public:~YY(){cout<<"YY";}voidf()const{cout<<k-3;XX::f();}};intmain(){XX&p=*newYY;p.f();delete&p;return0;}执行上面的程序将输出()。A、28XXB、28YYXXC、33XXD、-33XXYY标准答案:A知识点解析:类YY公有派生于类XX,派生类对象可以替代基类对象向基类对象的引用进行赋值初始化,XX&p=*newYY语句定义了XX对象p引用,并用YY对象初始化,p并不是YY对象的别名,是xx基类对象的别名,故先调用基类XX的构造函数将k初始化为5,p.f()首先输出k=3即2,然后调用XX::f()输出k+3即8,delete&p删除p,调用XX的析构函数输出“XX”。28、有如下函数模板:template<typenameT.typenameU>Tcast(Uu){returnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。A、cast(i);B、cast<>(i);C、cast<char*,int>(i);D、cast<double,int>(i);标准答案:D知识点解析:选项D)是将double类型的数据转化成int类型的数据,正确。29、阅读下面的程序:#include<iostream.h>voidmain(){intx;cin>>x;if(x++>5)cout<<x<<endl;elsecout<<x--<<endl;}如果两次执行上述程序,且键盘输入分别为4和6,则输出结果分别是()。A、4,6B、3,6C、4,7D、5,7标准答案:D知识点解析:此题首先读入数值4赋给变量x,因为x++>5不成立,因为“++”后缀,之后x的值变为5,执行语句cout<<x--<<endl;输出:5,之后x的值变为4。当读入的数值是6时,因为x++>5成立,所以执行语句cout<<x<<endl;输出7。30、按照标识符的要求,下列选项中,()符号不能组成标识符。A、连接符B、下划线C、大小写字母D、数字字符标准答案:A知识点解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。31、已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是()。A枚举常量NAME的值为1,B枚举常量NUMBER的则下列叙述中错误的是()。A、枚举常量NAME的值为1B、枚举常量NUMBER的值为1C、枚举常量MINUS的值为6D、枚举常量PRINT的值为10标准答案:A知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum类型名{枚举值表}。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右分别与整数0、1、2、3…n-1对应;若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1、m+2…对应,直到下一个赋了值的枚举值或结束。枚举常量NAME的值为0。32、类MyClass的定义如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private;intvalue;);则对下列语句序列正确的描述是()。MyClass*P,my;p=&my;A、语句p=&my;是把对象my赋值给指针变量PB、语句Myaass*p,my;会调用两次类MyClass的构造函数C、对语句*p.SetVariable(5)的调用是正确的D、语句p->SetVariable(5)与语句my.SetVariable(5)等价标准答案:D知识点解析:选项A),语句p=&my;是把对象my的地址值赋值给指针变量p;选项B),语句MyClass*p,my;,由于p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数;对成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名.成语函数名(形参表),故选项C)错误,选项D)正确。33、下列关于虚函数的描述中,正确的是()。A、虚函数是一个static类型的成员函数B、虚函数是一个非成员函数C、基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明D、派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型标准答案:C知识点解析:此题考查虚函数的概念。在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。虚函数只能是类中的一个成员函数,但不能是静态成员函数,所以选项A)和B)错误;在派生类中重新定义虚函数时必须有相同的函数类型,包括函数的返回类型、函数名、参数个数、参数类型的顺序必须相同。故选项D)错误。34、有如下程序:#include<iostream>voidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};fun(a[1],a[0]);std::cout<<a[0]<<","<<a[1]<<std::endl;return0;}执行后的输出结果是()。A、42,42B、23,23C、23,42D、42,23标准答案:B知识点解析:此题考查的是函数的调用以及参数值的传递。函数fun中的第一个参数是引用传值方式,是双向的;第二个参数是按值传递,是单向的。35、有如下程序:#include<iostream>usingnamespacestd;classA{public;staticinta;voidinit(){a=1;}A(inta=2){init();a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南宁市兴宁区兴东社区卫生服务中心招聘笔试真题及答案
- 肝病相关凝血功能异常临床诊治专家共识总结完整版
- 2026年小学二年级语文第二学期期末考试卷及答案(二十)
- 主流细胞供应商选型分析与场景适配指南
- 复发性淋病临床防治策略
- 天利天鹅湾二期
- 静脉采血技术试题及答案
- 安全教育试卷(挖掘机装载机司机)
- 种植规章制度口腔
- 2026毕节政治特岗面试题及答案
- 2025年职业技能鉴定考试(汽车驾驶员高级)题库及答案
- 国开(福建)2025年《幼儿园社会教育专题》形考作业1-3答案
- 广东省佛山市南海区、三水区2023-2024学年五年级下学期期末数学试卷(含答案)
- 数字文化产品国际化传播策略体系构建
- 2025年湖北省高考物理真题卷含答案解析
- 四川省党校在职研究生招生考试真题(附答案)
- 数独知识培训课件
- 2025红十字生命教育防灾避难知识竟赛试题及答案
- 化学社团课课件
- 航空运输地面服务员(民航货运员)职业技能鉴定经典试题含答案
- 2024-2025学年北京市中国人民大学附中高一(下)期末数学试卷(含答案)
评论
0/150
提交评论