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

下载本文档

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

文档简介

国家二级(C++)机试模拟试卷41(共9套)(共369题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共38题,每题1.0分,共38分。)1、运算符重载是对已有的运算符赋予多重含义,因此()。A、可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B、可以改变一个已有运算符的优先级和操作数个数C、只能重载C++中已经有的运算符,不能定义新运算符D、C++中已经有的所有运算符都可以重载标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。2、要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是()。A、ifstreamfin=ifstream.open("file.dat");B、ifstream*fin=newifstream("file.dat");C、ifstreamfin;fin.open("file.dat");D、ifstream*fin=newifstream();fin->open("file.dat");标准答案:A知识点解析:本题考查对文件流输入的操作,可以调用文件流的成员函数pen,一般形式如下:文件流对象.叩en(磁盘文件名,输入/输出方式)。根据以上格式,可以判断A选项错误。3、下列运算符中不能在C++中重载的是()。A、?:B、+C、一D、<=标准答案:A知识点解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符;除了.、.*、.>*、::、?:这五个运算符之外,其他运算符都可以重载。4、有如下程序:intx=3;do{x-=2:cout<A、1B、30C、1-2D、死循环标准答案:C知识点解析:第一次循环输出1,第二次循环输出是-2。在输出二次循环后!(--x)为0条件不满足。停止循环。5、若有下面的函数调用:fun(a+b,3,max(n-1,b))则fun的实参个数是()。A、3B、4C、5D、6标准答案:A知识点解析:本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、max(n—1,b)分别为其中的3个实参。故答案为A。6、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。A、控制流B、加工C、存储文件D、源和潭标准答案:A知识点解析:数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构成,包括4个方面,即加工、数据流、存储文件、源和潭。7、将E—R图转换为关系模式时,实体和联系都可以表示为()。A、属性B、键C、关系D、域标准答案:C知识点解析:从E—R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E—R图中属性也可以转换成关系的属性。8、将前缀运算符“--”重载为非成员函数,下列原型中能正确用于类中说明的是()。A、Deer&operator--(int);B、Decroperator--(Deer&,int);C、friendDeer&operator--(Deer&);D、friendDeeroperator--(Decr&,int);标准答案:D知识点解析:非成员函数重载用友元函数的形式实现,“一”运算符重载分为前置和后置两种重载方式。用友元函数来实现“--”运算符的重载时,前置“--”运算符的重载的一般格式为:friendoperator--(ClassName&);后置++运算符的重载的一般格式为:friendoperator--(ClassName&,int)。所以答案为D。9、在软件开发中,需求分析阶段产生的主要文档是()。A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D)。10、下列关于线性表的叙述中,不正确的是()。A、线性表可以是空表B、线性表是一种线性结构C、线性表的所有结点有且仅有一个前件和后件D、线性表是由n个元素组成的一个有限序列标准答案:C知识点解析:线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C)是错误的。11、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、投影D、并标准答案:A知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T中元组可以判断R和S做的是自然连接操作。12、下列程序的运行结果为()。#includevoidprint(doublea){cout<<++a:}voidprint(inta,intb){cout<A、1.234B、2.234C、1.243D、2.243标准答案:D知识点解析:本题考查的是对重载函数的掌握,因为++a是右结合的,所以a先自加1再输出,即为2.2,之后调用函数print(inta,intb)输出b和a,即43。13、有如下类定义:#includeusingnamespacestd;classPoint{public:intGetXY(){returnx+y;}protected:voidSetXY(inta,intb){x=a;y=b;}private:intx,y;};classCircle:publicPoint{public:intGetR(){returnradius;}intGetAll(){returnGetXY()+radius;}protected:voidSetR(intr){radius=r;}private:intradius;};intmain(){Circlec;c.GetXY();//①c.SetXY(3,4);//②c.GetR();//③c.GetAll();//④return0;}在标注号码的语句行中存在语法错误的是A、①B、②C、③D、④标准答案:A知识点解析:本题考查派生类对基类成员的访问属性,派生类公用继承基类的保护成员,在派生类中也变为了保护成员,只能在派生类内访问,不能在类外访问,所以B选项错误。14、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为A、219B、229C、230D、231标准答案:B知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229,答案为B。15、虚函数()是可以不同的。A、函数名B、参数个数C、返回类型D、函数体内容标准答案:D知识点解析:在C++中的虚函数是一种单界面多实现版本的实现方法,即函数名、返回类型、函数类型和个数顺序完全相同,但函数体内容可以完全不同。16、下面不属于软件需求分析阶段主要工作的是A、需求变更申请B、需求分析C、需求评审D、需求获取标准答案:A知识点解析:需求分析阶段的工作可概括为4个方面:①需求获取。②需求分析。③编写需求规格说明书。④需求审评。17、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。18、需求分析阶段的任务是()。A、软件开发方法B、软件开发工具C、软件开发费用D、软件系统功能标准答案:D知识点解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。19、内部格式控制操作函数是在头文件()中定义的。A、iostream.hB、iomanip.hC、istream.hD、ostream.h标准答案:B知识点解析:C++语言中,除了ios类成员函数之外,还提供了另一种I/O格式化方法,即操作符。所有不带形参的操作符都定义在iostream.h中,而带形参的操作符则定义在头文件iomanip.h中。20、数据库设计中反映用户对数据要求的模式是()。A、内模式B、概念模式C、外模式D、设计模式标准答案:C知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择C。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。21、有如下程序:#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。22、下列链表中,其逻辑结构属于非线性结构的是A、二叉链表B、循环链表C、双向链表D、带链的栈标准答案:A知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。23、使用输入输出操作符setw,可以控制A、输出精度B、输出宽度C、对齐方式D、填充字符标准答案:B知识点解析:本题考查setw,表示控制输入输出宽度。B选项正确。24、在下列选项中,不允许作为C++标识符的是A、999aB、_C、TD、mmm标准答案:A知识点解析:C++的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。A选项错误;答案为A。25、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"a";}};classBB:publicAA{AAaa;public:BB(){cout<<"B";}~BB(){cout<<"b";}};intmain(){BBbb;return0;}运行这个程序的输出是A、AABaabB、AABbaaC、BAAaabD、BAAbaa标准答案:B知识点解析:首先,构造函数的工作过程:1、派生类的构造函数在执行函数体之前调用基类的构造函数初始化基类;2、在执行函数体之前根据声明次序初始化自己的成员;3、执行自身函数体。所以程序中在创建BB对象时,首先调用AA的构造函数,输出"A",然后初始化类BB中的成员aa,调用AA的构造函数,输出"A",最后执行函数体,输出"B";程序执行结束时,系统会自动调用类的析构函数,析构函数工作过程:1、执行析构函数的函数体;2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员;3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。所以程序运行结束时,首先调用BB的析构函数并执行函数体,输出"b";然后调用aa的析构函数,销毁aa成员,输出"a";最后调用基类AA的析构函数,输出"a";综上所述,程序运行的输出是:"AABbaa";答案为B。26、对于循环队列,下列叙述中正确的是()。A、队头指针是固定不变的B、队头指针一定大于队尾指针C、队头指针一定小于队尾指针D、队头指针可以大于队尾指针,也可以小于队尾指针标准答案:D知识点解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以对头指针有时可能大于队尾指针有时也可能小于队尾指针。27、已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuev,inti=0);D、Valueoperator+(Valuev=value,inti=0);标准答案:A知识点解析:本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所以本题答案为A。28、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"~A";}};classB:publicA{A*p;public:B(){cout<<"B";p=newA();}~B(){cout<<"~B";deletep;}};intmain(){Bobj;return0;}执行这个程序的输出结果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为B。29、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。30、下列选项中,正确的C++表达式是A、a1+B、b++2C、3=cD、d-=4标准答案:D知识点解析:本题考查C++基本的表达式用法,属于基本知识,可以看出只有D选项正确。31、下列描述中,属于面向对象思想主要特征的是A、继承性B、灵活性C、可重用性D、健壮性标准答案:A知识点解析:面向对象思想的主要特征有:封装、继承和多态。答案选A。32、有如下类定义:classShape{public:___________________//纯虚函数Draw的声明};横线处缺失的纯虚函数Draw的声明是A、voidDraw()=0;B、virtualvoidDraw()=0;C、virtualvoidDraw(){}D、virtualvoidDraw(int=0);标准答案:B知识点解析:在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。一般形式如下:class<类名>{virtual<类型><函数名>(<参数表>)=0;…};所以B选项正确。33、有如下类定义:classPoint{public:voidSetX(intxx){x=xx;}protected:voidSetY(intyy){y=yy;}private:intx,y;};classCircle:publicPoint{public:intGetRadius(){returnradius;}private:voidSetRadius(intr){radius=r;}intradius;};派生类Circle中私有成员的个数为A、2B、4C、5D、6标准答案:A知识点解析:本题考查派生类对基类成员的访问属性,派生类公用继承基类,基类的私有成员不可访问,所以派生类的私有成员只有本身的两个私有成员,A选项正确。34、下面对类-对象主要特征描述正确的是A、对象唯一性B、对象无关性C、类的单一性D、类的依赖性标准答案:A知识点解析:对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反映属于该对象类型的所有对象的性质。对象具有的性质,类也具有。故A选项正确。35、下列关于函数的叙述中,正确的是A、C++不允许函数嵌套定义B、C++中所有函数都有返回值C、函数的形参列表一定不能为空D、调用函数时一定会执行完函数体的最后一条语句标准答案:A知识点解析:C++中函数可以不返回任何值,不返回任何值指定返回类型为void类型;函数形参表可以为空,但不能省略;函数调用过程中,可能会由于return语句或者异常终止执行,不一定会执行完最后一条语句;B、C、D错误;函数不允许嵌套定义,答案为A。36、下列关于线性链表的叙述中,正确的是()。A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C、进行插入与删除时,不需要移动表中的元素D、以上说法均不正确标准答案:C知识点解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。37、除了显式定义的构造函数外,类中还有可能包含编译器自动生成的构造函数,因此一个类所拥有的构造函数的至少有A、1个B、2个C、3个D、4个标准答案:A知识点解析:一个类,如果没有显示定义的构造函数,那么编译器自动生成一个构造函数;一个类,如果显示定义了构造函数,无论个数多少,编译器也不会再生成任何构造函数,所以一个类所拥有的构造函数至少有1个,答案为A。38、有如下类声明:classHow{intk;public:How():k(99){}};则类How所拥有的构造函数的数量是A、1B、2C、3D、4标准答案:B知识点解析:首先类How定义了一个默认构造函数How(),因而编译器不会自动生成默认构造函数;其次How中需要一个复制构造函数,这由编译器自动生成,所以How有两个构造函数,答案为B。二、基本操作题(本题共1题,每题1.0分,共1分。)39、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,该工程含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Thevalueis10注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#includeusingnamespacestd;classMyClass{intvalue;public://ERROR********found********voidMyClass(intval):value(val){}intGetValue()const{returnvalue;}voidSetValue(intval);};//ERROR********found********inlinevoidSetValue(intval){value=val;}intmain(){MyClassobj(0);obj.SetValue(10);//ERROR********found********下列语句功能是输出obj的成员value的值cout<<"Thevalueis"<标准答案:(1)MyClass(intval):value(val){}(2)voidMyClass::SetValue(intval){value=val;}(3)cout<<"TheValueis"<知识点解析:(1)考查构造函数,定义构造函数时不能使用void,直接使用Myclass(intval)即可。(2)主要考查成员函数定义,类的成员函数定义时要使用前缀Myclass,而inline是内联函数的关键字,在此是错误的,应该删掉inline并在函数名前加上前缀MyClass,即VoidMyClass::SetValue(intval){value=val;}。(3)考查成员函数调用,value是私有成员,在主函数中不能直接调用value,可以使用成员函数GetValue()来得到value的值。三、简单应用题(本题共1题,每题1.0分,共1分。)40、给定程序MODll.c中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。例如,有10个正整数如下:初始数列为:657231858214538第1组数为:657中值为:6替换后的数列为:667231858214538第2组数为:5723中值为:7替换后的数列为:667231858214538第3组数为:72318中值为:18替换后的数列为:667181858214538第4组数为:23185中值为:18替换后的数列为:667181858214538第5组数为:1858中值为:8替换后的数列为:667181888214538第6组数为:5821中值为:8替换后的数列为:667181888214538第7组数为:82145中值为:21替换后的数列为:667181888214538第8组数为:214538中值为:38替换后的数列为:667181888213838最终结果为:667181888213838请改正程序中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#inlclude#defineN10intfindmid(inta,intb,intc)(intt;t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));/*********found*********/returnb;}voidfun(~ntx[]){inti,a,b,c,t[N];/*********found*********/for(i=0;i标准答案:(1)returnt;(2)for(i=0;i知识点解析:(1)函数findmid的功能是找到a、b、c三个数中的中间数,并存放在变量t中,因此应返回t。(2)语法错误,句末缺少分号。(3)本程序是对数组x进行操作,数组t只是用来暂时存放数组x中的元素,因此此处应为x[i+1]=findmid(a,b,c)。四、综合应用题(本题共1题,每题1.0分,共1分。)41、请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,补充编制C++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。要求:补充编制的内容写在“//********333********”与“//********66666********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。注意:程序最后已将结果输出到文件out.dat中,输出函数writeToFile已经给出并且调用。//proj3.cpp#inchde#include#includeusingnamespacestd;classdoc{private:char*str;//文本字符串首地址intlength;//文本字符个数public://构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址doc(char*filename);voidreverse();//将字符序列反转~doc();voidwriteToFile(char*filename);};doe::doe(char*filename){ifstreammyFile(filename);intlen=1001,tmp;str=newchar[len];length=0;while((tmp=myFile.get())!=EOF){str[length++]=tmp;}str[length]=’\0’;myFile.close();}voiddoe::reverse(){//将数组str中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个//字符交换……//***********333***********//***********666***********}doc::~doc(){delete[]str;}voiddoc::writeToFile(char*filename){ofstreamoutFile(filename);outFile<标准答案:inti,j;//定义两个整数临时变量i.j.for(i=0,j=length-1;i知识点解析:题目要求将myDoc中的字符序列反转,在main函数中我们看到myDoc是doc类,根据doc类的定义可以知道它是把读取文件的字符串存到str动态数组中。reverse函数实现将数组str中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换,依次类推。使用变量i和j,分别表示第一个字符和最后一个字符的下标,定义temp作为中间变量进行交换。国家二级(C++)机试模拟试卷第2套一、选择题(本题共38题,每题1.0分,共38分。)1、友元类的所有成员函数都是另一个类的()。A、成员函数B、友元函数C、非成员函数D、非友元函数标准答案:B知识点解析:C++语言中友元类中的函数都是另一个类的友元函数。2、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。3、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。4、有如下程序:#includeusingnamespacestd;classTestClass{intn;public:TestClass(intk):n(k){}intget(){returnn;)intgetoconst{returnn+1;}};intmain(){TestClassp(5);constTestClassq(6);cout<A、55B、57C、75D、77标准答案:B知识点解析:C++中对常对象的成员函数调用,将自动调用其常成员函数,程序中调用原型为"intget()const;"的函数,对于非常对象将调用原型为"intget();"的函数。因为首先用5对对象p进行了初始化,所以执行p.get()时直接返回5,而对于常对象则以6对q进行初始化,在调用q.get()时,将调用原型为"intget()const:"的函数,该函数将返回n+1,第二个输出应为7,所以本题答案为57。5、假定TestClass为一个类,则该类的拷贝构造函数的声明语句为()。A、TestClass(TestClassX)B、TestClass&(TestClassx)C、TestClass(TestClass木x)D、TestClass(TestClass&x)标准答案:D知识点解析:C++中的拷贝构造函数是用一个已知的对象初始化一个正在创建的同类对缘。拷叭构造函数的一般格式如下:(类名)::(类名)(const,(类名)&<引用对象名));其中const可以省略。6、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度标准答案:B知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。7、下列程序输出的结果是()。#includefunI(chara,charb){charc;c=a;a=b;b=c;)fun2(char*a,charb){charc;c=*a;*a=b;b=c;)fun3(char*a,char*b){charc;c=a;*a:,Ib;*b=c;)voidmain(){chara,b;a=’A’;b=’B’;funl(a,b);putchar(a);putchar(b);a=’A’;b=’B’;fun2(&a,b);putchar(a);putchar(b);a=’A’:b=’B’;fun3(&a,&b);putchar(a);putchar(b);putchar(’\n’);}A、BABBABB、ABBBBAC、ABBABAD、ABABBA标准答案:B知识点解析:由程序中的主函数main入手,分别调用fun1,fun2,fun3函数,得到输出结果。其中,三个函数都是实现两个形参的交换功能,只是参数传递的方式不同,有的是地址,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以调用fun1后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,即传递的是地址,所以形参a的改变会影响实参a的值,即BB。同理,调用fun3后为BA。8、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。9、下列运算符中,不能被重载的是()。A、&&B、!=C、.D、++标准答案:C知识点解析:C++不能重载的运算符只有5个,即“.”、“.*”、“::”、“?:”、“sizeof”,故本题答案为C。10、有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为()。A、选择B、投影C、交D、并标准答案:D知识点解析:并关系T中包含了关系R与S中的所有元组,所以进行的是并的运算。11、在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。A、逻辑设计B、需求分析C、详细设计D、物理设计标准答案:B知识点解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。12、两个或两个以上的模块之间关联的紧密程度称为()。A、耦合度B、内聚度C、复杂度D、连接度标准答案:A知识点解析:耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。13、软件测试的目的是()。A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。14、有如下程序:#includeusingnamespaeestd;classCD{public:~CD(){cout<<’C’;}private:charname[80];};intmain(){CDa,*b,d[2];return0;}执行这个程序的输出结果是()。A、CCCCB、CCCC、CCD、C标准答案:B知识点解析:本题考查类的析构函数,题目中定义了类的一个对象a,对象指针术b,对象数组d[2],当程序执行完后,析构函数执行了3次,输出“CCC”,对象指针不会执行析构函数。所以本题答案为B。15、有如下类和对象的定义:classConstants{public:staticdoublegetPI(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是()。A、cout<<constants->getPI();和cout<<Constants::getPI();B、cout<<constants.getPI();和cout<<Constants.getPI();C、cout<<constants->getPI();和cout<<Constants->getPI();D、cout<<constants.getPI();和cout<<Constants::getPI();标准答案:D知识点解析:本题考查静态成员函数。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员。引用静态成员函数有2种方式,一种是直接使用类来引用,即Constants::getPI();另一种是使用对象来引用,即constants.getPI()。所以本题答案为D。16、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。17、有如下程序:#include<iostream>usingnamespacestd;classGA{public:drtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){cout<<g.f();}voiddisplay(GA&g){cout<<g.f();}intmain(){GAa;show(a);display(a);GBb;show(b);display(b);return0;}执行这个程序的输出结果是()。A、1111B、1211C、1112D、1212标准答案:C知识点解析:本题主要考察虚函数。虚函数指在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,执行show(a)、display(a),输出11,定义了类GB的对象b,执行show(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所以本题答案为C。18、有如下枚举类型定义:enumDAY{SUN,MON=10,TUE,WED,THU,FRI=20,SAT};执行下列程序段for(inti=0;i<THU;i++){cout<<’a’<<end1:输出字符’a’的个数是()。A、13B、16C、19D、22标准答案:A知识点解析:题意定义了枚举类型DAY,系统按定义时的顺序从0开始对它们递增赋值,如果其中某个常量指定了初值x,那么该常量后的所有常量会从X+1开始赋值;所以题意程序的枚举常量SUN的初值0,MON初值10,TUE初值11,WED初值12,THU初值13,FRI初值为20,SAT初值21,所以for循环中i取值为0~12,执行13次for循环体,输出字符’a’个数为13,本题答案为A。19、下列关于继承的叙述中,错误的是()。A、在公有继承中,基类中的公自成员对派生类对象可见B、在私有继承中,基类中的公有成员对派生类对象可见C、在公有继承中,基类中的私有成员对派生类对象不可见D、在私有继承中,基类中的所有成员对派生类对象都不可见标准答案:B知识点解析:C++中,对于公有继承,基类成员保持自己的访问级别:基类的public成员为派生类的pubhc成员,基类的protected成员为派生类的protected成员,基类的private成员对派生类不可见,所以:在公有继承中,基类中的公有成员对派生类对象可见,基类中的私有成员对派生类对象不可见,选项A、C正确;对于私有继承,基类的public和protected成员在派生类中为rivate成员,基类的private成员对派生类不可见,所以在私有继承中,基类中的所有成员对派生类对象都是不可见的,选项D正确,选项B错误。故本题答案为B选项。20、下列各排序法中,最坏情况下的时间复杂度最低的是()。A、希尔排序B、快速排序C、堆排序D、冒泡排序标准答案:C知识点解析:堆排序最坏情况时间下的时间复杂度为O(nlog2n);希尔排序最坏情况时间下的时间复杂度为O(n1.5);快速排序、冒泡排序最坏情况时间下的时间复杂度为O(n2)。故本题答案为C选项。21、构成计算机软件的是A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选D。22、在下面的4个关键字中用来说明虚函数的是()。A、virtualB、publicC、protectedD、private标准答案:A知识点解析:C++中用virtual关键字声明虚函数。而public、protected、private为成员访问限定符。23、下列关于C++函数的叙述中,正确的是A、函数不能自己调用自己B、每个函数都必须返回一个值C、每个函数至少要有一个参数D、函数在被调用之前必须先进行声明或定义标准答案:D知识点解析:函数可以自己调用自己,称为递归调用;函数返回类型为void时,没有返回值;函数的参数列表中可以没有参数;函数在被调用前必须先进行函数声明或定义。A、B、C错误,D正确;答案为D。24、在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是A、圆括号B、中括号C、尖括号D、花括号标准答案:C知识点解析:定义类模板时,模板形参表同样使用尖括号括起来,答案为C。25、下列关于输入流类成员函数getline()的表述中,错误的是A、该函数只能用来从键盘设备读取一行字符串B、该函数读取的字符串长度是由参数限制的C、该函数读取字符串时,遇到终止符便停止D、该函数读取字符串时,遇到终止符便停止标准答案:A知识点解析:getline(istream&is,string&str)第一个参数is是输入流对象,这个对象可以是键盘输入流对象,也可以是文件输入流等其他输入流的对象,选项A错误,答案为A。26、有如下程序段:inti=1;intj=4;intmain(){intj=i,i=8;cout<A、14B、81C、88D、18标准答案:B知识点解析:程序首先在main函数之前定义两个int型全局变量i、j,并赋予初始值i=1,j=4;在main函数中又定义了两个int型局部变量i、j,并使用全局变量i初始化局部变量j,使用数值8初始化局部变量i,所以局部变量j=1,局部变量i=8;由于在命名空间中,局部变量会覆盖同名的全局变量,所以输出的i、j都是局部变量,输出结果为81,答案为B。27、下列关于运算符重载的叙述中,错误的是()。A、有的运算符可以作为非成员函数重载B、所有的运算符都可以通过重载而被赋予新的含义C、不得为重载的运算符函数的参数设置默认值D、有的运算符只能作为成员函数重载标准答案:B知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。所以答案为B。28、已知数组arr的定义如下:intarr[5]={1,2,3,4,5};下列语句中输出结果不是3的是A、cout<<*arr+2<B、cout<<*(arr+2)<C、cout<D、cout<<*arr<标准答案:D知识点解析:本题考查以为数组和指针,一维数组名可以作为一个指针,指向数组的第一个元素,题目中要求输出3,那么就是指向了数组的第三个元素,*arr表示数组的第一个元素1,所以输出不出来3,所以选择D选项。29、有如下程序:#include#includeusingnamespacestd;classWheel{public:Wheel(strings="W"):name(s){cout<A、WEWGDDB、WEWGDC、EWGDDD、EWGD标准答案:A知识点解析:定义Monocyclebike1时,执行Wheel的构造函数输出W,然后执行Monocycle的构造函数输出E,执行Monocycle("G")时,输出WG,最后执行析构函数,输出DD,最终输出WEWGDD,选项A正确。30、关于关键字class和typename,下列表述中正确的是()。A、程序中的typename都可以替换为classB、程序中的class都可以替换为typenameC、在模板形参表中只能用typename来声明参数的类型D、在模板形参表中只能用class或typename来声明参数的类型标准答案:A知识点解析:程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。31、数据库设计过程不包括A、概念设计B、逻辑设计C、物理设计D、算法设计标准答案:D知识点解析:数据库设计过程主要包括需求分析、、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。32、有如下语句序列:intx=10,&r=x;cout<A、10-10B、10-0x28ff48C、0x28ff44-10D、0x28ff44-0x28ff48标准答案:A知识点解析:本题考查引用概念和使用,题目中r为x的引用,所以与x的值相同,结果为A,A选项正确。33、有如下类声明:classSAMPLE{intn;public:SAMPLE(inti=0):n(i){}voidsetValue(intn0);};下列关于getValue成员函数的定义中,正确的是()。A、SAMPLE::setValue(intn0){n=n0;}B、voidSAMPLE::setValue(intn0){n=n0;}C、voidsetValue(intn0){n=n0;}D、setValue(intn0){n=n0;}标准答案:B知识点解析:本题考查在类外定义类的成员函数,需要使用作用域限定符"::",属于基础知识,本题答案为B。34、在面向对象方法中,不属于"对象"基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A。35、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的A、记录B、行C、属性D、元组标准答案:C知识点解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间有公共域;②通过公共域的等值进行连接,选C。36、下列关于基类和派生类关系的叙述中,正确的是A、派生类中的成员可以访问基类中的任何成员B、每个类最多只能有一个直接基类C、对基类构造函数的调用不能出现在派生类构造函数的初始化列表中D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:派生类对基类成员的访问权限由基类成员的访问标识和类派生列表中的访问标识共同决定的,选项A错误;多重继承的派生类可以有多个直接基类,选项B错误;派生类构造函数可以隐式调用基类的默认构造函数初始化对象的基类部分,也可以在派生类构造函数初始化列表中显示调用基类构造函数,选项C错误;答案为D。37、有如下程序:#includeusingnamespacestd;classBasel{public:Basel(intd){tout<A、1234B、2134C、12D、21标准答案:D知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。38、有如下程序:#includeusingnamespacestd;classA{public:staticinta;voidinit(){a=1;}A(inta=2){init();a++;}};intA::a=0;Aobj;intmain(){cout<A、0B、1C、2D、3标准答案:B知识点解析:本题考查构造函数,本题中对类中的a数据成员先是赋值为0,当定义了对象obj时,执行构造函数,将a的值变为了1,所以输出1。二、基本操作题(本题共1题,每题1.0分,共1分。)39、请打开考生文件夹下的解决方案文件proj1,此工程中包含程序文件main.cpp,其中有ElectricFan(“电风扇”)类和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:品牌:清风牌,电源:关,风速:0品牌:清风牌,电源:开,风速:3品牌:清风牌,电源:关,风速:0注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#include<iostream>usingnamespacestd;classElectricFan{//“电扇”类Char*brand;intintensity;//风速:0一关机,1一弱,2一中,3一强public:ElectricFan(constchar*the_brand):intensity(0){brand=newchar[strlen(the_brand)+1];strcpy(brand,thebrand);}~ElectricFan(){delete[]brand;}//ERROR*******found*******constchar*theBrand()const{return*brand;}//返回电扇品牌inttheIntensity()const{returnintensity;}//返回风速boolisOn()const{returnintensity>0;}//返回电源开关状态//ERROR*******found*******voidturnOff(){intensity=1;}//关电扇voidsetIntensity(intinten){//开电扇并设置风速//ERROR*******found*******if(intensity>=1&&intensity<=3)intensity=inten;}voidshow(){cout<<"品牌:"<<theBrand()<<"牌"<<",电源:"<<(isOn()?"开":"关")<<",风速:"<<theIntensity()<<endl;}};intmain(){ElectricFanfan("清风");fan.show();fan.setIntensity(3);fan.show();fan.turnOff();fan.show();return0;}标准答案:(1)const.char*theBrand()const{returnbrand;}//返回电扇品牌(2)voidturnOff(){intensity=0;}//关电扇(3)if(inten>=1&&inten<=3)intensity=inten;知识点解析:(1)主要考查考生对指针的掌握情况,因为brand是一个动态指针,*brand表示字符串的首个字符,brand表示动态数组,这里要返回动态数组存储的品牌名称。(2)主要考查考生对成员函数的掌握情况,根据题目中类的定义中私有成员的定义:intintensity;//风速:0一关机,1一弱,2一中,3一强,可知本函数要关电扇,因此在这里intensity=0;。(3)主要考查考生对成员函数的掌握,根据题目中函数的注释:开电扇并设置风速,可知if语句里要判断的应该是形参inten而不是intensity。三、简单应用题(本题共1题,每题1.0分,共1分。)40、请打开考生文件夹下的解决方案文件proj2,该工程中包含一个程序文件main.epp,其中有类AutoMobile(“汽车”)及其派生类Car(“小轿车”)、Truck(“卡车”)的定义,还有主函数main的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:车牌号:冀ABC1234品牌:ForLand类别:卡车当前档位:0最大载重量:12车牌号:冀ABCl234品牌:ForLand类别:卡车当前档位:2最大载重量:12车牌号:沪XYZ5678品牌:QQ类别:小轿车当前档位:0座位数:5车牌号:沪XYZ5678品牌:QQ类别:小轿车当前档位:一1座位数:5注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。#inclue<iostream>#include<iomanip>#include<cmath>usingnamespacestd;classAutoMobile{//“汽车”类char*brand;//汽车品牌char*number;//车牌号intspeed;//档位:1、2、3、4、5,空档:0,倒档:一1public:AutoMobile(constchar*the_brand,constchar*the_number):speed(0){brand=newchar[strlen(the_brand)+1];//**********found**********_______;//**********found**********_________;strcpy(number,the_number);}~AutoMobile(){delete[]brand;delete[]number;}constchar*theBrand()const{returnbrand;)//返回品牌名称constchar*theNumber()const{returnnumber;}//返回车牌号intcurrentSpeed()const{returnspeed;}//返回当前档位voidchangeGearT0(intthe_speed){//换到指定档位if(speed>=一1&&speed<=5)speed=the_speed;}virtualconstchar*category()const=0;//类别:卡车、小轿车等virtualvoidshow()const{cout<<"车牌号:"<<theNumber()//**********found**********<<"品牌:"<<__________<<"类别:"<<category()<<"当前档位:"<<currentSpeed();}};classCar:publicAutoMobile{intseats;//座位数public:Car(constchar*the_brand,constchar*the_number,intthe_seats):AutoMobile(the_brand,the_number),seats(the_seats){}intnumberOfSeat()const{returnseats;}//返回座位数constchar*category()const{return"小轿车";)//返回汽车类别voidshow()const{AutoMobile::show();cout<<"座位数:"<<numberOfSeat()<<endl;}};classTruck:publicAutoMobile{//“卡车”类intmax_load;//最大载重量public:Truck(constchar*the_brand,constchar*the_number,intthe_max_load):AutoMobile(the_brand,the_number),max_load(the_max_load){}intmaxLoad()const{returnmax_load;}//返回最大载重量//**********found**********constchar*category()__________//返回汽车类别voidshow()const{AutoMobile::show();cout<<"最大载重量:"<<maxLoad()<<endl;}};intmain(){Trucktruck("ForLand","冀ABC1234",12);truck.show();truck.changeGearTo(2);truck.show();carcar("QQ","沪XYZ5678",5);car.show();car.changeGearTo(一1);car.show();cout<<endl;return0;}标准答案:(1)strcpy(brand,the_brand)(2)number=newchar[strlen(the_number)+1](3)theBrand()(4)const{return"卡车";}知识点解析:(1)主要考查考生对strcpy函数的掌握情况,在上一条语句程序给brand指针分配了空间,在这里要复制字符串the_brand,即strcpy(brand,the_brand);。(2)主要考查考生对动态分配的掌握情况,参考brand指针的复制过程完成该语句,先给指针number分配空间,通过new来完成:number=newchar[strlen(the_number)+1];。(3)主要考查考生对成员函数的掌握,由程序可知这里要输出的是品牌,因此调用成员函数theBrand()来输出品牌。(4)主要考查考生对纯虚函数的掌握,根据纯虚函数的定义:virtualconstchar*category()const=0;,可知在这里要填写:const{return"卡车";}。国家二级(C++)机试模拟试卷第3套一、选择题(本题共36题,每题1.0分,共36分。)1、下列符号中,正确的C++标识符是()。A、enumB、2bC、foo-9D、_32标准答案:D知识点解析:本题考查C++标识符的命名规则,规定如下:①所有标识符可以由字母、数字和下画线组成,且必须以字母或下画线开头;②C++的关键字不能作为标识符;③大、小写字母表示不同意义,即代表不同的标识符,如mun和Mun。A选项是C++的关键字,B选项不能以数字开头,C选项“-”不能用于组成标识符。2、下列哪项不是面向对象程序设计的主要特征()。A、封装B、继承C、多态D、结构标准答案:D知识点解析:面向对象程序设计的特点:标识惟一性,分类性,多态性,封装性,模块独立性好。3、在学校中,“班级”与“学生”两个实体集之间的联系属于()关系。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。4、有如下程序:#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。5、结构化程序设计的3种结构是()。A、顺序序结构,分支结构,跳转结构B、顺序结构,选择结构,循环结构C、分支结构,选择结构,循环结构D、分支结构,跳转结构,循环结构标准答案:B知识点解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。6、有如下程序:classBase{public:intdata;};classDerived1:publicBase{};classDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;d1.data=0;//①d2.data=0;//②retum0;}下列关于程序编译结果的描述中,正确的是()。A、①②皆无编译错误B、①有编译错误,②无编译错误C、①无编译错误,②有编译错误D、①②皆有编译错误标准答案:C知识点解析:本题考查公用继承和保护继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中Derivedl公用继承Base,所以①编译正确,Derived2保护继承Base,所以②编译不正确。7、下列数据结构中,能够按照“先进后出”原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。8、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:本题考查构造函数和复制构造函&数,如果没有定义构造函数,编译器将生成一个缺省的&构造函数和一个拷贝构造函数,如果已经定义了构造&函数和拷贝构造函数,编译器不会生成任何构造函数。&如果没有定义拷贝构造函数,编译器将生成一个拷贝&构造函数。9、有如下类的定义,横线处的语句是()。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.10、已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则()。A、FA必须定义在FB之前B、FB必须定义在FA之前C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D、若FB定义在FA之后,则FB的原型必须出现在FA的定义之前标准答案:D知识点解析:如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此两数之前对被调朋的函数作声明。11、在

温馨提示

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

评论

0/150

提交评论