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

下载本文档

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

文档简介

国家二级(C++)机试模拟试卷7(共9套)(共356题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共35题,每题1.0分,共35分。)1、有如下程序:#includeusingnamespacestd;classBasel{public:Basel(intd){cout<A、1234B、2134C、12D、21标准答案:D知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出2l。2、派生类的构造函数的成员初始化列表中,不能包含()。A、基类的构造函数B、派生类中子对象的初始化C、基类中子对象的初始化D、派生类中一般数据成员的初始化标准答案:C知识点解析:在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。3、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为()。A、ios_base::inB、ios_base::in|ios_base::outC、ios_base::outD、ios_base::in&ios_base::out标准答案:A知识点解析:本题考查对文件输入流的操作,ifstream流类为输入流类,默认的文件输入流打开方式为ios::in。故答案为A。4、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。A、冒泡排序为n(n一1)/2B、简单插入排序为nC、希尔排序为nD、快速排序为n/2标准答案:A知识点解析:暂无解析5、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中会产生编译错误的语句是()。A、④B、③C、⑦D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。6、有如下程序:#include<iostream>usingnamespacestd;classA{public:virtualvoidfuncl(){cout<<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfuncl(){cout<<"B1";}voidfunc2(){cout<<"B2";}};intmain(){A*p=newB;P->func1();P->func2();deletep;return0;}执行这个程序的输出结果是()。A、B182B、A1A2C、B1A2D、A182标准答案:C知识点解析:本题考查虚函数。虚函数指在基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。题中定义了一个派生类对象B,并使用类A的对象指针指向B,由于基类A中的funcl为虚函数,所以会执行派生类的funcl,输出B1,而基类中的func2不是虚函数,所以p->func2()会执行基类的func2,输出A2。故答案为C。7、下列程序的输出结果是().#includeusingnamespacestd;voidfun(int&r){r*=12;}intmain(){intn=50;fun(n);cout<A、0B、20C、50D、100标准答案:D知识点解析:题中主程序中首先定义整型变量n=50,然后调用函数fun,实际参数为n。函数fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以2。8、下列关于运算符重载的描述中,正确的是()。A、运算符重载可以改变运算符的操作数的个数B、运算符重载可以改变优先级C、运算符重载可以改变结合性D、运算符重载不可以改变语法结构标准答案:D知识点解析:重载的运算符仍要保持其原来的操作数、优先级和结合性不变。9、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。10、有如下程序:#jnclude<iostream>usingnamespacestd;classPart{public:Part(intx=0):val(x){cout<<val;}~Par/(){cout<<val:}private:intval;};classWhole{public:Whole(intx,inty,intz=0):p2(x),p1(y),val(z){cout<<val;}~Whole(){cout<<val;}private:Partp1,p2;intval;};intmain(){Wholeobj(1,2,3);return0;}执行这个程序的输出结果是()。A、123321B、213312C、213D、123123标准答案:B知识点解析:本题考查带参数的构造函数。本题中定义了一个对象obj,那么执行其构造函数,初始化p1,p2的顺序是由声明这两个成员的顺序决定的,而不是由参数化列表顺序决定,所以本题中,会先执行p1,输出2,然后执行p2输出1,然后输出3,最后一次输出312。所以本题答案为B。11、下列描述中,正确的是()。A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构标准答案:A知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。12、下列存储类标识符中,可见性与存在性不一致的是()。A、外部类B、自动类C、内部静态类D、寄存器类标准答案:C知识点解析:可见性足函数内部,存在整个程序中,第二次调用值不变。13、C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是()。A、coutB、cinC、cerrD、cset标准答案:D知识点解析:C++标准数据流的对象分别是cout、cin、cerr、clog,所以本题答案为D。14、以下叙述正确的是()。A、函数可以嵌套定义但不能嵌套调用B、函数既可以嵌套调用也可以嵌套定义C、函数既不可以嵌套定义也不可以嵌套调用D、函数可以嵌套调用但不可以嵌套定义标准答案:D知识点解析:在C++语言中,所有的函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,但可以互相调用。但是不能调用main()函数。15、下列叙述中正确的是()。A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D、以上说法都不正确标准答案:C知识点解析:栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C。16、下列关于运算符重载的叙述中正确的是A、跟普通函数一样,可以为重载的运算符函数的参数设置默认值B、通过重载,可以改变一个运算符原有的优先级和操作数个数C、只能重载C++中已经有的运算符,不能定义新运算符D、C++中已有的运算符都可以重载标准答案:C知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为C。17、下面描述中正确的是()。A、好的软件设计应是高内聚低耦合B、内聚性和耦合性无关C、内聚性是指多个模块间相互连接的紧密程度D、耦合性是指一个模块内部各部分彼此结合的紧密程度标准答案:A知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。故本题答案为A选项。18、下列关于软件测试的目的和准则的叙述中,正确的是()。A、软件测试是证明软件没有错误B、主要目的是发现程序中的错误C、主要目的是确定程序中错误的位置D、测试最好由程序员自己来检查自己的程序标准答案:B知识点解析:软件侧试的目的:①软件测试是为了发现错误而执行程序的过程;②一个好的测试用例能够发现至今尚未发现的错误;③一个成功的测试是发现了至今尚未发现的错误。软件测试的准则:①所有测试都应追溯到需求;②严格执行测试计划,排除测试的随意性;③充分注意测试中的群集现象;④程序员应避免检查自己的程序;⑤穷举测试不可能;⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。19、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,n0=1,则n2=0,总节点数为12=n0+n1+n2=1+n1+0,则度为1的节点数n1=11,故深度为12,选D。20、A、投影B、交C、选择D、并标准答案:A知识点解析:用于查询的3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。投影,从关系模式中指定若干个属性组成新的关系,题目中从R中指定AB组成新的关系T,故A选项正确。选择,从关系中找出满足给定条件的元组的操作称为选择,即结果T应该包含R中全部属性,故C选项错误。假设,R与S经过某种关系得到T,则并:R∪S是将S中的记录追加到R后面;交:R∩S结果是既属于R又属于S的记录组成的集合。上述两种操作中,关系R与S以及T要求有相同的结构,故B、D选项错误。21、下列语句中错误的是A、constint*p=0;B、constinty=0;C、intx=0;D、constintp=newint(100);标准答案:D知识点解析:C++中使用new表达式动态创建对象,new表达式返回指向新创建对象的指针,D选项将new返回的指针赋给整型const变量,语法错误,答案选D。22、下面不属于黑盒测试方法的是A、边界值分析法B、基本路径测试C、等价类划分法D、错误推测法标准答案:B知识点解析:常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误推测法和因果图等。基本路径测试属于白盒测试,故正确答案为B选项。23、下列对模板的声明中,正确的是()。A、template<T>B、template<classT1.T2>C、template<classT1,classT2>D、template<classT1;classT2>标准答案:C知识点解析:声明一个函数模板的格式为:template<模板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。24、有如下类定义: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。25、下列语句中,正确的是A、charstr="abcde";B、char*str="abcde";C、charstr[5]="abcde";D、char*str[5]="abcde";标准答案:B知识点解析:本题考查字符串的定义,A选项中,定义了一个字符,而用字符串赋值,所以错误,C选项定义了字符数组,但是赋值的字符串实际上有6个字符,所以赋值错误,D选项定义了一个字符串指针数组,赋值错误。26、有如下两个类定义:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在派生类YY中的保护成员的个数是A、1B、2C、3D、4标准答案:C知识点解析:类YY以protected方式继承类XX,所以类XX中的public成员和protected成员在YY中为protected成员,所以YY中的protected成员有:x2,x3,y2,答案为C。27、在语句"cout<<’A’;"中,cout是A、类名B、对象名C、函数名D、C++的关键字标准答案:B知识点解析:本题考查提取运算符<<,cout为对象名,所以B选项正确。28、下列叙述中正确的是A、所谓算法就是计算方法B、程序可以作为算法的一种描述方法C、算法设计只需考虑得到计算结果D、算法设计可以忽略算法的运算时间标准答案:B知识点解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序,A选项错误。算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果,C选项错误。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的,D选项错误。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法,B选项正确。29、有如下类声明:classMau{intk;public:Mau(intn):k(n){}intcalc()const;};则成员函数calc的下列定义中有编译错误的是A、intMau::calc()const{returnk-1;}B、intMau::calc()const{returnk*k;}C、intMau::calc()const{returnk+1;}D、intMau::calc()const{return++k;}标准答案:D知识点解析:函数calc()声明的形参表后面有关键字const,说明该函数是常成员函数,常成员函数改变了隐含的this形参的类型,使得this是指向const对象的指针,因而该函数只能读取数据成员的值,不能修改数据成员,所以D选项错误,答案为D。30、下列选项中,正确的C++表达式是A、a1+B、b++2C、3=cD、d-=4标准答案:D知识点解析:本题考查C++基本的表达式用法,属于基本知识,可以看出只有D选项正确。31、下列关于算法的描述中错误的是A、算法强调动态的执行过程,不同于静态的计算公式B、算法必须能在有限个步骤之后终止C、算法设计必须考虑算法的复杂度D、算法的优劣取决于运行算法程序的环境标准答案:D知识点解析:算法是指对解题方案的准确而完整的描述,简单地说,就是解决问题的操作步骤。算法不同于数学上的计算方法,强调实现,A选项叙述正确。算法的有穷性是指,算法中的操作步骤为有限个,且每个步骤都能在有限时间内完成,B选项叙述正确。算法复杂度包括算法的时间复杂度和算法的空间复杂度。算法设计必须考虑执行算法所需要的资源,即时间与空间复杂度,故C选项叙述正确。算法的优劣取决于算法复杂度,与程序的环境无关,当算法被编程实现之后,程序的运行受到计算机系统运行环境的限制,故正确答案为D选项。32、软件详细设计生产的图如下:该图是()A、N-S图B、PAD图C、程序流程图D、E-R图标准答案:C知识点解析:N-S图提出了用方框图来代替传统的程序流程图,所以A)不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B)不对。E-R图是数据库中的用于表示E-R模型的图示工具,所以D)不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。33、有如下程序:#includeusingnamespacestd;classGA{public:virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){cout<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。34、有如下程序段:#includeusingnamespacestd;inti=1;intj=4;intmain(){inti=5;j+=i;cout<A、14B、95C、59D、55标准答案:C知识点解析:题意程序中main()函数外的i和j是全局变量,初值分别是1和4;main()函数内部定义一个局部变量i,初值为5,所以在main()函数中,局部变量i会屏蔽全局变量i,输出i的值为5;main()函数内部的j使用的是全局变量j,将j的值累加局部变量i,并重新赋给j,得到j的值为9,输出j的值是9,所以程序输出结果为:59,本题答案为C。35、在C++中,编译系统自动为一个类生成默认构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:C++中,一个类只要定义一个构造函数,编译器都不会再生成默认构造函数,也就是说只有一个类没有定义任何构造函数时,编译器才会在需要的时候自动生成一个默认构造函数,本题答案为C。二、基本操作题(本题共1题,每题1.0分,共1分。)36、使用VC6打开考生文件夹下的proj1工程目录内的proj1.dsw文件,其中在编辑窗口内显示的主程序文件中定义有Xabc类和主函数main。在程序文本中位于每行”//ERROR*********found*********下面的一行有错误,请加以更正。更正后程序的输出为:57注意:只允许修改每个"//ERROR*********found*********下面的一行语句,不允许改动程序中的其他任何内容。#includeusngnamespacestd;classXabc{int*a;intn;public:Xabc(intaa[],intnn):n(nn){a=newint[n];for(inti=0;i标准答案:(1)a[i]=aa[i];(2)d+=x.GetA(i);(3)intf=x.SumA(5);知识点解析:(1)Xabc的构造函数需要使用形参aa为成员指针a赋值,函数体中,首先动态分配n个连续的整型变量的内存空间,并将内存空间的首地址赋给a,然后通过for循环,使用数组aa为a的n个元素的赋值。(2)x是类Xabc的对象,成员a在定义时没有指定访问标号,默认为private成员,所以这里不能通过x对象直接访问a,应该通过公有成员函数GetA()来访问。(3)SumA()函数是类Xabc的公有成员函数,需要通过对象来引用,而不能直接引用。三、简单应用题(本题共1题,每题1.0分,共1分。)37、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matrix和单位阵UnitMatrix的定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:123452345634567100000010000001000000100000010000001注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。1#include2usingnamespacestd;3//矩阵基础类,一个抽象类4classMatrixBase{5introws,cols;6publiC:7MatrixBase(introws,intcolS):rows(rows),cols(colS){}8intgetRows()const{returnrows;}//矩阵行数9intgetCols()const{returncols;}//矩阵列数10virtualdoublegetElement(intr,intc)const=0,//取第i个元素的值11voidshow()const{//分行显示矩阵中所有元素12for(inti=0;ishow();51deletem;52cout<show();55deletem;56return0;57}标准答案:(1)getElement(i,j)(2)MatrixBase(rows,cols)(3)newdouble[rows*cols](4)r==c知识点解析:(1)主要考查考生对纯虚函数的掌握,函数功能是分行显示矩阵中所有元素。因此在这里要输出行为i、列为j的元素,使用纯虚函数getElement(i,j)实现,输出语句为cout<四、综合应用题(本题共1题,每题1.0分,共1分。)38、使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整。请按要求完成下列操作,将类Date的定义补充完成。(1)定义私有数据成员year、month和day,分别用于表示年、月和日,它们都是int型的数据。请在注释//********1********之后添加适当的语句。(2)完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1,day=1,请在注释//********2********之后添加适当的语句。(3)完成重载构造函数Date(inty,intm,intd)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值,请在注释//********3********之后添加适当的语句。(4)完成成员函数print()的类外定义,使其以“年一月一日”的格式将Date对象的值输出到屏幕上,例如:2008-8-8。请在注释//********4********之后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#includeClassDate{public://********2********Date(inty,intm,intd){//********3********}voidprint()const;private://datamember//********1********};voidDate::print()const{//********4********}intmain(){Datenational_day(1949,10,1);national_day.print();return0;}标准答案:(1)添加语句:intyear,month,day;(2)添加语句:Date(){year=1;month=1;day=1;}(3)添加语句:year:y;month:m;day:dj(4)添加语句:cout<知识点解析:(1)题目1要求“定义私有数据成员year、month和day,分别用于表示年、月和日,它们都是int型的数据”。在C++程序的private区域中添加变量year、month、day的定义,即在第1个标识下添加“intyear,month,day;”。(2)题目2要求“完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1,day=1”。在C++中,构造函数是一种特殊的成员函数,它的名字与类同名。在Date构造函数体内,根据题目要求,设置变量默认值“year=1,month=1,day=1”,即:“Date(){year=1;month=1;day=1;}”。(3)题目3要求“完成重载构造函数Date(inty,intm,intd)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值。”在构造函数Date(inty,intrn,intd)函数体内,即标识3下,添加赋值语句,将y,m,d赋值给year,month,day,即“year=y;month=m;day=d;”。(4)题目4要求“完成成员函数print()的类外定义,使其以“年一月一日”的格式将Date对象的值输出到屏幕上”。在程序中的voidDate::print()const函数体内,标识4下,添加输出语句。根据cout输出格式,实现题目中的输出要求,即“cout<国家二级(C++)机试模拟试卷第2套一、选择题(本题共37题,每题1.0分,共37分。)1、需求分析阶段的任务是()。A、软件开发方法B、软件开发工具C、软件开发费用D、软件系统功能标准答案:D知识点解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。2、下列说法中错误的是()。A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中仍是private的C、私有继承时基类中的public成员在派生类中是private的D、保护继承时基类中的public成员在派生类中是protected的标准答案:B知识点解析:公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。受保护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员认为基类私有。3、下列运算符不能重载为友元函数的是()。A、=()()->B、+-++--C、><>=<=D、+=-=*=/=标准答案:A知识点解析:关于运算符重载为友元函数有如下规定:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符“=、()、[]、->”不能重载为类的友元函数。所以本题答案为A。4、下列关于成员函数特征的描述中,错误的是()。A、成员函数一定是内联函数B、成员函数可以重载C、成员函数可以设置参数的默认值D、成员函数可以是静态的标准答案:A知识点解析:凶为成员函数可以在类体内定义,也可以在类体外定义,所以成员函数不一定都是内联函数;成员函数可以重载,可以设置参数的默认值,成员函数可以是静态的。5、在软件工作的3个要素中,支持软件开发的各个环节控制和管理的是()。A、方法B、工具C、对象D、过程标准答案:D知识点解析:软件工作的3个要素是方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节控制和管理。6、下列关于构造函数的描述中,错误的是()。A、构造函数可以设置默认的参数B、构造函数在定义类对象时自动执行C、构造函数可以是内联函数D、构造函数不可以重载标准答案:D知识点解析:在一个类中可以定义多个构造函数,以便对类对象提供不同的初始化的方法,供用户选用。这些构造函数具有相同的名字,而参数的个数或参数的类型不相同。7、在数据处理中,其处理的最小单位是()。A、数据B、数据项C、数据结构D、数据元素标准答案:B知识点解析:数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。8、软件设计中划分模块的一个准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性.有利于提高模块的独立性。9、下列描述中,正确的是()。A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构标准答案:A知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。10、C++中的模板包括()。A、对象模板和函数模板B、对象模板和类模板C、函数模板和类模板D、变量模板和对象模板标准答案:C知识点解析:本题考查函数模板和类模板,所以答案为C。11、如果表达式一X/y中的“一”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为()。A、operator/(x.operato一(),y);B、operator/(operator一(x),y);C、x.operator一().operator/(y);D、y.operator/(operator一(x));标准答案:B知识点解析:运算符重载实际上时函数的重载。重载运算符的一般格式:函数类型operator运算符名称(参数表)。重载运算符之后:函数operatot+重载运算符“+”。“一”重载为“operator一”,“/”重载为“operator/”。另外重载不能改变运算的优先级,一x/y计算一x后,除以y,所以表达式改写为:operator/(operator一(x),y):。12、有如下程序:#inCludeusingnamespaeestd;classNyClass{public:lyClass(inti=0){eout<<1;}MyClass(eonstlyClass&x){eout<<2;}MyClass&operator=(eonstMyClass&x){eout<<3;retum*this;}~MyClass(){eout<<4;}};intmain(){lyClassobjl(1),obj2(2),obj3(objl);return0;}执行这个程序的输出结果是()。A、112444B、11114444C、121444D、11314444标准答案:A知识点解析:本题考查构造函数和复制构造函数以及重载运算符。本题中先后定义了两个对象obj1,obj2,依次输出11,然后定义了对象obj3,调用复制构造函数,输出2,最后执行三次析构函数,输出444。13、下列程序的输出结果是()。#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。14、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。15、有如下程序:#includeusingnamespacestd;intmain(){mtsum;for(inti=0;i<3;i+=1){sum=i:for(intj=i;j<9;j++)sum+=j;}cout<A、39B、17C、110D、37标准答案:D知识点解析:考查for循环语句,本题中两层for循环,每次i循环,sum都被重新赋值,所以当i=2时,执行完i循环后sum为37。所以答案为D。16、下面对于友元函数描述正确的是()。A、友元函数的实现必须在类的内部定义B、友元函数是类的成员函数C、友元函数破坏了类的封装性和隐藏性D、友元函数不能访问类的私有成员标准答案:C知识点解析:友元函数的定义既可以在类内部进行,也可以在类外部进行。它提高了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成员函数可以访问类的私有成员。17、下列关于构造函数的描述中,错误的是()。A、构造函数名与类名相同B、构造函数可以有返回值C、构造函数可以重载D、每个类都有构造函数标准答案:B知识点解析:构造函数没有返回值,虽然叫函数,但是它没有任何返回值,包括void型都不是,官方叫法应该叫“构造器”。18、下列模板声明中,有语法错误的是()。A、templateTfun(TX){returnx;}B、templateTfun(Tx,intn)}returnx*n;}C、templateTfun(T*p){return*p;}D、templateTclassA{Tn;};标准答案:B知识点解析:本题考查模板的定义,B选项中x为T类型的,n为int型的,但是x*n就不一定是T类型的,所以错误答案为B。19、软件生存周期中,解决软件“怎么做”的阶段是()。A、软件设计B、需求分析C、软件测试D、可行性研究标准答案:A知识点解析:软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即解决软件“怎么做”的问题。故本题答案为A选项。20、下面不属于黑盒测试方法的是()。A、边界值分析法B、基本路径测试C、等价类划分法D、错误推测法标准答案:B知识点解析:常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误推测法和因果图等。基本路径测试属于白盒测试,故正确答案为B选项。21、有如下程序段:#include<iostream>usingnamespacestd;inti=1;intj=4;intmain(){inti=5;j+=i;cout<<i<<j<<end1;return0;}运行时的输出结果是()。A、14B、95C、59D、55标准答案:C知识点解析:题意程序中main()函数外的i和j是全局变量,初值分别是1和4;main()函数内部定义一个局部变量i,初值为5,所以在main()函数中,局部变量i会屏蔽全局变量i,输出i的值为5;main()函数内部的j使用的是全局变量j,将j的值累加局部变量i,并重新赋给j,得到j的值为9,输出j的值是9,所以程序输出结果为:59,本题答案为C。22、概要设计中要完成的事情是()。A、系统结构和数据结构的设计B、系统结构和过程的设计C、过程和接口的设计D、数据结构和过程的设计标准答案:A知识点解析:软件概要设计的基本任务是:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。23、能正确表示逻辑关系”a≥10或a≤0”的C++语言表达式是()。A、a)=10ora<=0B、a>=0|a<=10C、a>=10&&a<=D、a>=10||a<=0标准答案:D知识点解析:逻辑运算符“||”表示或的意思。24、数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。Ⅰ.人工管理阶段Ⅱ.文件系统阶段Ⅲ.数据库阶段A、仅ⅠB、仅ⅢC、Ⅰ和ⅡD、Ⅱ和Ⅲ标准答案:A知识点解析:数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件。一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。25、有如下类定义:classBase1{intm;public:Base(intm1):m(m1){}};classBase2{intn;public:Base(intn1):n(n1){}};classDerived:publicBase2,publicBase1{intq;public:Derived(intm1,intn1,intq1):q(q1),Base1(m1),Base2(n1){};};在创建一个Derived对象时,数据成员m、n和q被初始化的顺序是A、m、n、qB、n、m、qC、q、m、nD、q、n、m标准答案:B知识点解析:C++中,派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据成员,所以Derived构造函数的初始化列表中,最后初始化q;另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的;由于Derived类的派生列表中,Base2在前,所以应该先调用Base2的构造函数;这样Derived类中初始化顺序为:基类Base2、基类Base1、数据成员q;所以数据成员m、n、q的初始化顺序为:n、m、q,答案为B。26、某二叉树中有15个度为1的结点,16个度为2的结点,则该二叉树中总的结点数为A、32B、46C、48D、49标准答案:C知识点解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。由16个度为2的结点可知叶子结点个数为17,则结点结点总数为16+17+15=48,C选项正确。27、当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的A、逻辑独立性B、物理独立性C、应用独立性D、空间独立性标准答案:A知识点解析:数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。故A选项正确。28、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。29、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operator=(constMyClass&x){cout<<3;return*this;}~MyClass(){cout<<4;}};intmain(){MyClassobj1(1),obj2(2),obj3(obj1);return0;}执行这个程序的输出结果是()。A、112444B、11114444C、121444D、11314444标准答案:A知识点解析:本题考查构造函数和复制构造函数以及重载运算符。本题中先后定义了两个对象obj1,obj2,依次输出11,然后定义了对象obj3,调用复制构造函数,输出2,最后执行三次析构函数,输出444。30、在面向对象方法中,不属于"对象"基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A)。31、有如下程序:#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0):x(xx),y(yy){}protected:voidSetXY(intxx,intyy){x=xx;y=yy;}private:intx,y;};classCircle:publicPoint{public:Circle(intr):radius(r){}voidSet(intr,intx,inty){radius=r;SetXY(x,y);}//①voidPrint()const{cout<A、①B、②C、③D、④标准答案:B知识点解析:本题考查对象成员的引用,派生类公用继承基类,但是不能继承基类的私有成员,所以执行voidPrint()const{cout<32、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=6,RED,BLACK=10};则枚举常量RED的值为A、2B、3C、7D、8标准答案:C知识点解析:枚举常量的定义enum枚举类型名{常量1,常量2,常量3,};其中GREEN=6,BLACK=10,那么RED为7,答案为C。33、在C++语言系统中,用于输入数据所使用的标识符cin是A、C++系统保留字B、类名C、类名D、函数名标准答案:C知识点解析:cin是C++预定义的标准输入流对象,答案为C。34、有如下程序:#includeusingnamespacestd;voidfun(int&x,inty){y=y+x;x=y/4;x++;}intmain(){intx=4,y=5;fun(x,y);cout<A、4,5B、3,5C、3,9D、2,5标准答案:B知识点解析:函数fun的形参x为引用类型,函数功能是将形参x与y之和除以4的结果赋给x,再对x自增1,通过引用类型修改实参;main函数中定义x=4,y=5,所以通过函数fun的调用,x的值被修改为:(4+5)/4+1=3,而y的值不变,所以程序输出3,5;答案为B。35、下列排序方法中,最坏情况下比较次数最少的是()。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序标准答案:D知识点解析:冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。36、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"~A";}};classBB{public:BB(){cout<<"B";}~BB(){cout<<"~B";}};intmain(){AA*pa=newAA;BBb;deletepa;return0;}运行这个程序的输出是A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A标准答案:A知识点解析:main()函数中首先动态创建AA类对象,调用AA类构造函数,输出"A",创建BB类对象,调用BB类构造函数,输出"B",使用delete显式销毁AA类对象,调用AA类析构函数,输出"~A",程序结束时,销毁BB类对象,编译器自动调用BB类析构函数,输出"~B",整个程序输出结果为:"AB~A~B",答案为A。37、有如下程序:#includeusingnamespacestd;classBook{public:Book(char*t=’’’’){strcpy(title,t);}privme:chartitle[40];};classNovel:publicBook{public:Novel(char*t=’’’’):Book(t){}char*Category()const{return’’文学’’;}};intmain(){Book*pb;pb=newNovel();cout<Category();deletepb;return0;}若程序运行时输出结果是“文学”,则横线处缺失的语句是()。A、char*Category();B、char*Category()const;C、vinualchar*Category()const;D、Virtualchar*Category()const=0;标准答案:D知识点解析:本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类是不能被实例化的,但是可以定义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派生类的对象,然后通过该指针调用虚函数,实现多态性的操作。所以本题答案为D。二、基本操作题(本题共1题,每题1.0分,共1分。)38、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为TC1TC2注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include#includestructTC0{//******error******virtualvoidfun();};classTC1:publicTC0{voidfun(){cout<<"TC1"<标准答案:(1)应改为“virtualvoidfun()=0;”。(2)应改为“p=&obj1;”。(3)应改为“p=&obj2;”。知识点解析:如果在基类中不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun应该是纯虚函数,也就是声明虚函数时初始化为0的函数。即第1处的“virtualvoidfun()=0;99。第2处的P为指针变量,将对象obj1赋值给p,实际上是P指向对象obj1的地址,所以将“p=*obj1;”修改为“p=&obj1;”。第3处的“p=*obj2;”修改为“p=&obj2;”。三、简单应用题(本题共1题,每题1.0分,共1分。)39、使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成函数fun(char*d,inta[]),其功能是把S中出现的数字转换成数字存储在a[]中,然后返回转换的个数。例如:s=“1234abcdef567”:则:a[]中存储着1234567返回:7注意:不能修改程序的其他部分,只能修改fun()函数。#includeintfun(char*s,inta[]){}intmain(){inta(1024];intlen=fun(“1234abcdef567”,a);for(inti=0;i<1en?i++){cout<标准答案:intj=0;for(inti=0;S[i]!=0;i++)//字符串内循环{if(s[i]>=‘0’&&S[i]<=‘9’)//判断字符是否为0~9的字符{a[j++]=s[i]一‘0’;//如果为0~9的字符,转换为整型}}returnj;//返回数字个数知识点解析:(1)该程序功能是把字符串中出现的数字转换成数字存储在数组中,然后返回转换的个数。其中,字符和整型的ASCII差为96,即为’0’的ASCⅡ码值。(2)从已给部分源程序的main主函数开始入手,核心函数fun实现题目中要求的功能,其中intfun(char*s,inta[])中的S为要转换的字符串,a为存放转换为数字的数组,返回值为转换的个数。四、综合应用题(本题共1题,每题1.0分,共1分。)40、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)完成类Rect的构造函数,实现对变量left、fight、top、bottom的初始化,缺省值都为0,请在注释∥********1********后添加适当的语句。(2)完成类Rectangle的构造函数,请在注释∥********2********后添加适当的语句。(3)完成计算矩形对角线长度函数Diagonal0,请在注释∥********3********后添加适当的语句。(4)完成计算周长函数Girth(),请在注释∥********4********后添加适当的语句。程序输出:50140注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#include#includeclassRectangle{public:intlefttrightltoplbottom;∥********1********{left=1;right=r;top=t;bottom=b;}∥********2********{1eft=rc.1eft;right=rc.right;top=rc.top;bottom=rc.bottom;}floatDiagonal(){∥********3********return}intGirth(){∥********4********return}};intmain(){Rectanglerect(20,50,40,80);Rectanglerect2(rect);cout<标准答案:(1)添加语句:Rectangle(int1,intr,intt,intb)(2)添加语句:Rectangle(Rectangle&rc)(3)将“return”补充完整为:returnsqrt((right—left)*(right—left)+(bottom—top)*(bottom—top));(4)将“return”补充完整为:return2*((right—left)+(bottom—top));@解题思路@(1)构造函数函数名和类名一致,构造函数可以重载,即多个构造函数有相同的名字不同的参数,显然题目当中两个构造函数均有参数,由函数体体内“left=1;right=r;top=t;bottom=b;”,说明l,r,t,b为构造函数的参数,因此第1标识处应添加“Rectangle(int1,intr,intt,intb)”。(2)和题目1一样,构造函数名和类名一致,函数体内:“left:re.1eft;right=re.right;top=rc.top;bottom=rc.bottom;”,显然re是Rect对象,故该构造函数的参数为re对象,故第2标识处应添加“Rectangle(Rectangle&rc)”。(3)由对象的left、fight、top、boaom值可以求得矩形的长和宽,因此可采用勾股定理计算对角线长度,即第3标识处补充完整为:returnsqrt((right—left)*(right—left)+(bottom-top)*(bottom-top))。(4)同样的周长可由长和宽的数值计算得到,长和宽之和的两倍即周长,第4标识处补充完整为:return2木((right—left)+rbottom—top))。知识点解析:暂无解析国家二级(C++)机试模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、若有如下程序段:#includeusingnamespacestd;intmain(){char*p="abcdefgh",*r;r=p;cout<<*r<A、aB、bC、cD、d标准答案:A知识点解析:字符指针p指向“abcdefgh”字符串,语句“r=p;”是r指向p指向的字符串,而*r则是指向字符串中的第一个字符。即a。2、分析下面程序,该程序的运行结果是()。#includeclassTestClass{public:staticintm:TestClass0{m++:)TestClass(intn、{m=n:}staticvoidtest(){m++:));intTestClass::m=0;voidmain(){TestClassA:TestClassB(3);A.test();TestClass::test();cout<<“m=”<A、m=3B、m=4C、m=5D、m=6标准答案:C知识点解析:由主函数main入手,首先定义TestClass对象A,B;埘象B构造函数值为3,构造函数中m++,所以这时m=4。主函数中调用A.test(),因为“staticintm;”,m被定义为类TestClass静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时改变了。所以这里执行“A.test();”中的m为前面进行加1操作后的4,即m现在的值为5。3、若变量都已正确说明,则以下程序段的输出结果是()a=2;b=3;printf(a>b?”***a=%d":"###b=%d"a,b);A、没有正确的输出格式控制B、输出为:***a=2C、输出为:###=2D、输出为:***a=2###=2标准答案:C知识点解析:本题实际上是考查C语言中的格式化输入输出知识,同时本题也考查了三目表达式的知识。如果逻辑表达式为真,则执行冒号之前的,否则执行冒号之后的表达式。4、有如下程序:#includeusingnamespaeestd;classBasel{public:Basel(intd){eout<A、1234B、2134C、12D、21标准答案:D知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。5、有如下定义:intb[10]={1,2,3,4,5,6,7,8,9,10}*q=b;则数值为8的表达式是()。A、*q+8B、*(q+7)C、*q+=8D、q+7标准答案:B知识点解析:数组的下标是从0到数组的长度减1。*(p+i)是取数组的第i+1个元素,即下标为i的元素。因此*(p+7)取数组的第八个元素,即元素8。6、下列运算符函数中肯定不属于类FunNumber的成员函数的是()。A、intoperator-(FunNumber);B、FunNumberoperator-();C、FunNumberoperator-(int);D、intoperator-(FunNumber,Fun,Number);标准答案:D知识点解析:本题考查运算符重载的一些规则:①一般隋况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符=、()、[]、->不能重载为类的友元函数;③类型转换函数只能定义为一个类的成员函数,而不能定义为类的友元函数;④若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好;⑤若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数;⑥当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个内部类型的对象,该运算符函数必须作为一个友元函数来实现。所以答案为D。7、支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。8、()使一个函数可以定义成对许多不同数据类型完成同一个任务。A、函数模板B、重载函数C、递归函数D、模板函数标准答案:A知识点解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。因此,函数模板使一个函数可以定义成对许多不同数据类型完成同一个任务。9、下列符号中可以用做C++标识符的是()。A、_radiusB、foo~barC、elseD、3room标准答案:A知识点解析:本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项B包含了字符“~”,选项C是关键字,选项D不能以数字开头。故答案为A。10、对于int*pa[5];的描述,正确的是()。A、pa是一个指向数组的指针,所指向的数组是5个int型元素B、pa是一个指向某个数组中第5个元素的指针,该元素是int型变量C、pa[5]表示某个数组的第5个元素的值D、pa是一个具有5个元素的指针数组,每个元素是一个int型指针标准答案:A知识点解析:语句“int木p[5]”表示一个数组p,它的大小是5,里面存放的数据类型是int木,也就是整型指针。称之为指针数组(从右向左解析这个表示)。11、有如下程序:#include<iostream>usingnamespacestd;classB{public:virtualvoidshow(){cout<<”B”;}};classD:publicB{public:voidshow(){cout<<”D”;}};voidfunl(B*ptr){ptr一>show();}voidfun2(B&ref){ref.show();}void:fun3(Bb){b.show();}intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);deletep;return0;}执行这个程序的输出结果是()。A、BBBB、BBDC、DBBD、DBD标准答案:C知识点解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类B的对象b、对象指针*p=newD以及类D的对象d;执行fun1、会调用派生类的show函数,因为show函数为虚函数,而调用fun2、fun3仍然为基类的show函数,所以本题答案为C。12、以下程序段是函数返回a所指数组中最大的值所在的下标值,横线处的语句为()。fun(int*a,intn){intij=0,k;k=j;for(i=j;ia[k])——;retum(k);}A、k=iB、k=jC、i=jD、i=n标准答案:A知识点解析:函数fun中首先定义整型变量k用来存放返回最大值的下标,并将其首先指向第一个元素,即k=j。然后在for循环中依次将当前元素a[i]与标识为最大值的元素进行比较,如果当前元素大于这个标识元素,那么将最大值标识为当前元素,即k=i。13、下列关于运算符函数的描述中,错误的是()。A、运算符函数的名称总是以operator为前缀B、运算符函数的参数可以是对象C、运算符函数只能定义为类的成员函数D、在表达式中使用重载的运算符相当于调用运算符重载函数标准答案:C知识点解析:运算符函数可以定义为类的友元函数。所以C选项错误。14、在下列关键字中,不能用来表示继承方式的是()。A、privateB、staticC、publicD、protected标准答案:B知识点解析:3种继承方式:公用继承、私有继承和保护继承分别使用public?、private和protected3个关键字来定义。15、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一段采用生命周期法,即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。16、有如下程序:#includeusingnamespacestd;classGA{public:virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){cout<A、1111B、1211C、1112D、1212标准答案:C知识点解析:本题主要考查虚函数。虚函数指在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,所以本题答案为C。本题中定义类GA的对象a,执行show(a)、display(a),输出11,定义了类GB的对象b,执行shot(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所以本题答案为C。17、C++类体系中,不能被派生类继承的有()。A、构造函数B、虚函数C、静态成员函数D、赋值操作函数标准答案:A知识点解析:不能被继承的有构造函数、拷贝构造函数、赋值函数、析构函数。18、派生类的对象对它的基类成员中()是可以访问的。A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的公有成员标准答案:A知识点解析:只要是派生类,都可以丛基类中继承,除非把基类的构造函数定义为私有的,这样派生类无法构造。19、循环队列的存储空间为Q(1:100),初始状态为front=rear=100。经过一系列正常的人队与退队操作后,front=rear=99,则循环队列中

温馨提示

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

评论

0/150

提交评论