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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷6(共9套)(共209题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共34题,每题1.0分,共34分。)1、算法的空间复杂度是指()。A、算法程序的长度B、算法程序中的指令条数C、算法程序所占的存储空间D、算法执行过程中所需要的存储空间标准答案:D知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。2、下列叙述中正确的是()。A、一个逻辑数据结构只能有一种存储结构B、逻辑结构属于线性结构,存储结构属于非线性结构C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率标准答案:D知识点解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。3、下列关于类、对象、属性和方法的叙述中,错误的是()。A、类是对一类具有相同的属性和方法对象的描述B、属性用于描述对象的状态C、方法用于表示对象的行为D、基于同一个类产生的两个对象不可以分别设置自己的属性值标准答案:D知识点解析:类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值。4、在软件开发中,需求分析阶段产生的主要文档是()。A、数据字典B、详细设计说明书C、数据流图说明书D、软件需求规格说明书标准答案:D知识点解析:需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。5、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。6、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。A、并B、交C、投影D、除标准答案:B知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S,交运算不改变关系表中的属性个数但能减少元组个数。7、下列叙述中,正确的是()。A、软件交付使用后还需要进行维护B、软件一旦交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。8、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A、6B、8C、9D、12标准答案:C知识点解析:R为n元关系,有p个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。9、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。10、以下程序的输出结果是()。#include<iostream.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;fbr(i=0;i<3;i++)fbr(j=i;j<=i;j++)t=t+b[i][b[j][j]];cout<<t;}A、2B、3C、4D、5标准答案:C知识点解析:程序中通过for二重循环依次取二维数组中的数值进行与t的累加。取数组中的元素为i行和符合循环条件的b[j][j]列的数据。循环为0,1,2行,对应0,1,2列。即0,1,2。所以1+0+1+2=4。11、当循环队列非空且队尾指针等于队头指针时,说明循环队列己满,不能进行入队运算。这种情况称为()。A、下溢B、上溢C、异常D、溢出标准答案:B知识点解析:由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列是满的却产生了“上溢”现象。12、以下程序的输出的结果是()。#include<iostream.h>voidmain(){irIti,k,a[10],p[3];k=5:fbr(i=0;i<9;i++)a[i]=i;fbr(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;cout<<k;}A、20B、21C、22D、23标准答案:B知识点解析:程序中首先在第一个for循环中将数组a每一个元素赋值为0,1,2,……。然后在第二个循环中数组p的第i元素为a中的第i*(i+1),即0,2,6,第三个循环中数组p中的每个元素值乘以2,然后加上5,累加。13、以下程序的执行结果是()。#include<iostream.h>intfun(intb[],intn){inti,r=1;for(i=0;i<n;i++)r=r*b[i];returnr;}voidmain(){intx,a[]={1,2,3,4,5,6,7,8};x=fun(a,3);cout<<x<<end1;}A、5B、6C、7D、8标准答案:B知识点解析:由程序的main函数入手,调用fun函数,其中参数为数组a和3。fun函数的功能是for循环中由第一个数组元素开始到第三个元素进行累积。14、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p;*p=9;cout<<’’Thevalueatp:’’<<*p;return0;}编译运行程序将出现的情况是()。A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:Thevalueatp:9C、运行时一定输出:Thevalueatp:*9D、运行时有可能出错标准答案:D知识点解析:题目程序中“int*p;”是定义了一个指针变量p,“*p=9;”是将p当前指向的指针赋为9。指针p在执行这个赋值操作前并没有初始化这个变量p,所以会有p未初始化的警告错误。15、下列有关指针的用法中,错误的是()。A、inti;int*p=&i;B、inti;int*p;i=*p;C、int*p;p=0;D、inti=5;int*P;p=&i;标准答案:B知识点解析:“inti:”语句为定义了一个整型变量i。“int*p”为定义一个整型指针p。选项A中的“int*p=&i;”是定义整型指针变量p,并指向整型i的地址。选项B)中“i=*p”语句是将p指向的变量赋值给i,而指针p没有初始化,所以选项B错误。选项C中“p=0;”表示p指向0的地址。选项D中“&i”为取i的地址,并赋值给p。16、如果有以下定义及初始化:inta=3,*p=&a;则由此可以推断,*p的值是()。A、变量a的值,即3B、变量a的地址值C、变量P的地址值D、无意义标准答案:A知识点解析:题目中的定义初始化是定义一个整型变量a,初始化为3。而“int*p=&a;”是定义一个整型指针变量p,将变量a的地址作为指针变量p的初值。木p是指针变量p指向的存储单元的内容,即变量值。所以木p指向a的值3。17、执行语句序列intx=1,&y=x;cout<<x<<’一’<<y<<end1;输出结果为()。A、x-xB、1-1C、1-0D、异常标准答案:B知识点解析:程序中的“intx=1”定义x为int型变量,并赋值为l。语句“&y=x”中“&”为引用运算符,&y=x语句可以理解为y具有x的地址,所以y的值也是1,即输出为:1-1。18、下面c++标识符中正确的是()。A、abcB、3abC、intD、+ab标准答案:A知识点解析:C++标识符命名的规则:只能由’a’-’z’、’A’-’Z’、’0’-’9’、’’等字符组成,且数字不能开头,不能与系统保留字冲突。19、下列哪项不是面向对象程序设计的主要特征()。A、封装B、继承C、多态D、结构标准答案:D知识点解析:面向对象程序设计的特点:标识惟一性,分类性,多态性,封装性,模块独立性好。20、若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是()。A、1B、2C、3D、4标准答案:A知识点解析:首先把c<d?c:d算出。结果为2,表达式a<b?a:c<d?c:d变为:a<b?a:2,结果为1。21、以下程序的输出的结果是()。#include<iostream.h>voidmain(){inta,b,c,d(5);c=2,c+=10;a=b=10;a*=2;b/=2;c%=2;cout<<a<<’’,’’<<b<<’’,’<<c<<end1;}A、20,5,0B、20,7,0C、20,5,1D、5,20,0标准答案:A知识点解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0,所以输出值20,5,0。22、以下程序的执行结果是()。#include<iostream.h>classTcstClass2{public:TestClass2(){};TestClass2(inti,intj);voidprintb();private:inta,b;};classTestClass1{public:TestClass1(){}TestClass1(inti,intj);voidprinta();private:TestClass2c;};TestClass1::TestClass1(inti,intj):c(i,j){}voidTestClass1::printa(){c.printb();}TestClass2::TestClass2(inti,intj){a=i;b=j;}voidTestClass2::printb(){cout<<’’a="<<a<<’’,’’<<’’b=’’<<b<<end1;}voidmain(){TestClass1m(7,9);m.printa();}A、a=7,b=8B、a=8,b=7C、a=7,b=9D、a=8,b=9标准答案:C知识点解析:由主函数main入手,定义了TestClassl的对象m,其中参数为7和9。“m.printa();”中TestClass1中printa为“c.printb();”,其中c为TestClass2的对象,所以printb为TestClass2中的“voidTestClass2::printb()”,即输出为“a=7,b=9”。23、以下程序的输出的结果是()。#include<iostream.h>intx=3;voidmain(){voidfun();inti;for(i=1;i<x;i++)fun();}voidfun(){staticintx=1;x*=x+1;cout<<x<<’’’’;}A、3,3B、2,2C、2,6D、2,5标准答案:C知识点解析:由主函数入手,在for循环中调用fun函数,其中调用次数为2次。fun中x为静态变量,有效到文件结束,所以第一次调用为x=x*(x+1)=1*(1+1)=2,第二次调用2*(2+1)=6。24、若有以下程序:#include<iostream>usingnamespacestd;intfun(){staticinti=0;ints=1;s+=i;i++;returns;}intmain(){inti,a=0;for(i=0;i<5;i++)a+=fun();cout<<a<<end1;return():}程序运行后,输出的结果是()。A、20B、24C、25D、15标准答案:D知识点解析:由主函数入手,在for循环中调用fun函数,其中调用次数为5。fun中i为静态变量,有效到文件结束。第一次调用fun后为s=1,a=1;第二次调用后s=2,a=3第三次s=3,a=6;第四次s=4,a=10;第五次s=5,a=15。25、阅读下面程序:#include<iostream.h>fun(inta,intB.{intc;c=a+b:returnC;}voidmain(){intx=6,y=7,z=8,r;r=fun((x--,y++,x+y),z--);cout<<r<<end1;}则该程序的输出结果是()。A、11B、20C、21D、31标准答案:C知识点解析:由主函数入手,定义变量x、y、z,然后调用函数fun,其中的参数为(x--,y++,x+y)的计算结果和z--的计算结果,所以调用fun(13,8)计算结果为21。26、对虚函数的调用()。A、一定使用动态联编B、必须使用动态联编C、一定使用静态联编D、不一定使用动态联编标准答案:D知识点解析:虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函数声明只能出现在类声明中虚函数原型中,而不能在成员的函数体实现的时候。必须由成员函数来调用或者通过指针、引用来访问虚函数。如果通过对象名来访问虚函数,则联编在编译过程中认为是静态联编。27、下列函数的运行结果是()。#include<iostream.h>intadd(inta,intB.;voidmain(){externintx,y;cout<<add(x,y)<<end1;}intx(20),y(5);intadd(inta,intB.{ints=a+b;returns;}A、25B、30C、20D、15标准答案:A知识点解析:由主函数main入手,定义外部变量x和y,调用函数add。因为x,y为外部变量,所以“intx(20),y(5);”的赋值在add也是有效的,即add函数的运算结果为25。28、下面程序的输出结果为()。#include<iostream.h>classTestClass{public:TestClass(){val++;}staticintval;};intTestClass::val=0;voidmain(){TestClasscsl;cout<<cs1.va1<<’’’’;TestClasscs2;TestClasscs3,cs4;cout<<cs2.va1<<end1;}A、03B、13C、14D、24标准答案:C知识点解析:由主函数main入手,定义TestClass类的对象cs1,执行cs1.val,其中val为静态变量,根据“intTestClass::val=0;”初始化,TestClass中的TestClass(){val++;)构造函数执行后,val值为1。主函数中接着定义对象cs2,cs3,cs4。执行“cout<<cs2.val<<end1;”中的val值为4。29、下面程序的运行结果是()。#include<iostream>usingnamespacestd;classTestClass{staticintn;public:TestClass0{n++;}staticinttest(){for(inti=0;i<4;i++)n++;returnn;}};intTestClass::n=0;intmain(){tout<<TestClass::test()<<’’’’;TestClassc1,c2;tout<<TestClass::test()<<end1;return0;}A、4,10B、4,6C、0,6D、0,4标准答案:A知识点解析:在主函数中首先调用TestClass中的test函数输出,类中的n为静态数据成员,可以为所有的对象共享这些数据,这里调用后n等于4。定义对象c1,c2调用构造函数后n=6,所以主函数再次执行“cout<<TestClass::test()<<end1;”后,n等于10。30、当需要将一个函数boolisnumber(charc)声明为内联函数时,则此内联函数的函数原型为()。A、enumboolisnumber(charc);B、defineboolisnumber(charc);C、inlineboolisnumber(charc);D、extemboolisnumber(charc);标准答案:C知识点解析:此题考查的是内联函数的相关知识点。函数原型应指出函数名、返回值类型以及在调用函数时必须提供的参数的个数和类型,因为要声明为内联函数,故应加inline关键字。31、下列关于类和对象的叙述中,错误的是()。A、一个类只能有一个对象B、对象是类的具体实例C、类是对某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系标准答案:A知识点解析:此题考查的是类和对象的相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。32、下列关于成员函数特征的描述中,错误的是()。A、成员函数一定是内联函数B、成员函数可以重载C、成员函数可以设置参数的默认值D、成员函数可以是静态的标准答案:A知识点解析:因为成员函数可以在类体内定义,也可以在类体外定义,所以成员函数不一定都是内联函数;成员函数可以重载,可以设置参数的默认值,成员函数可以是静态的。33、下列运算符不能重载为友元函数的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=标准答案:A知识点解析:此题考查的是运算符重载的概念。C++语言规定,=、[]、()、>以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。34、有如下函数模板:template<classT>Tsquare(Tx){returnx,x;}其中T是()。A、函数形参B、函数实参C、模板形参D、模板实参标准答案:C知识点解析:此题考查的是函数模板。声明一个函数模板的格式是:template<模板形参表声明>函数声明,{函数体}其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共22题,每题1.0分,共22分。)1、下列字符串中可以用作C++标识符的是()。A、2009varB、gotoC、test-2009D、_123标准答案:D知识点解析:标识符是用户为程序中各种需要命名的“元素”所起的名字。标识符的组成要符合一定的规则:①标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。②标识符不能与任意一个关键字同名。③标识符中的字母区分大小写。④标识符不宜过长。C++语言一般设定一个标识符的有效长度为32个字符。由这四条规则可知,选项D为正确答案。2、下列叙述中正确的是A、循环队列是队列的一种链式存储结构B、循环队列是队列的一种顺序存储结构C、循环队列是非线性结构D、循环队列是一种逻辑结构标准答案:B知识点解析:本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。3、—棵二叉树共有25个结点,其中5个是叶子结点,则度为l的结点数为()。A、16B、10C、6D、4标准答案:A知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故此度为l的结点个数:总结点数·叶子节点数.度为2的节点数=25—5—4=16。4、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1),2、堆排序O(nlog2n)。5、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)。6、下列描述中正确的是()。A、软件交付使用后还需要再进行维护B、软件工具交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。已交付的软件投入运行后,应在运行使用中不断地维护,根据新提出的需要进行必要而且可能的扩充和删改。7、关于模板,下列说法不正确的是()。A、用类模板定义一个对象时,不能省略实参B、类模板只能有虚拟类型参数C、类模板本身在编译中不会生成任何代码D、类模板的成员函数都是模板函数标准答案:B知识点解析:类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参:类模板的成员函数都是模板函数。C++中可以为类模板的参数设置默认值,所以选项B错误。8、软件测试的目的是()。A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中7的错误标准答案:D知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程序中的错误。9、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。10、在数据库系统中,用户所见的数据模式为()。A、概念模式B、外模式C、内模式D、物理模式标准答案:B知识点解析:用户所见到的数据模式是外模式也称用户模式。它是用户的数据视图,它由概念模式导出。一个概念模式可以有若干个外模式,每个用户只关心与它有关的外模式,这样不仅可以屏蔽大量无关信息,而且有利于数据维护。11、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是()。A、1:1联系B、m:1联系C、1:m联系D、m:n联系标准答案:C知识点解析:一个部门可以有多名员工,所以实体部门和职员间的联系是1:m联系。12、下列关于继承的描述中,错误的是()。A、析构函数不能被继承B、派生类是基类的组合C、派生类的成员除了它自己的成员外,还包含了它的基类的成员D、派生类中继承的基类成员的访问权限到派生类保持不变标准答案:D知识点解析:派生类中继承的基类成员的访问权限到派生类会发生变化,例如:私有继承时,派生类不能访问基类的成员,所以选项D)错误,其他选项均正确。13、下列关于赋值运算符“=”重载的叙述中,正确的是()。A、赋值运算符只能作为类的成员函数重载B、默认的赋值运算符实现了“深层复制”功能C、重载的赋值运算符函数有两个本类对象作为形参D、如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符标准答案:A知识点解析:重载赋值运算符必须定义为类的成员函数;所以选项A正确。重载赋值运算符时应返回一个类的对象,所以C选项错误。如果已经定义了复制(拷贝)构造函数,仍然可以重载赋值运算符,所以D选项错误。14、为了取代C中带参数的宏,在C++中使用()。A、重载函数B、内联函数C、递归函数D、友元函数标准答案:B知识点解析:此题考查的是内联函数。C++语言引入内联函数的原因是用它来取代C语言的预处理宏函数。故选项B正确。15、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p;*p=9;cout<<’’Thevalueatp:’’<<*p;return0;}编译运行程序将出现的情况是()。A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:Thevalueatp:9C、运行时一定输出:Thevalueatp:*9D、运行时有可能出错标准答案:D知识点解析:此题考查的是指针的使用。本题中,在给*p赋值前,指针p并没有指向一个具体的对象。此时可以通过编译,但运行时由于p中为随机值,该赋值可能会破坏内存中某个重要的地址空间的内容,导致程序出错。16、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9:cout<<"Thevalueatp:"<<*p;return0;}编译运行程序将出现的情况是()。A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:Thevalueatp:9C、运行时一定输出:Thevalueatp:*9D、运行时有可能出错标准答案:D知识点解析:此题考查的是指针的使用。本题中,在给*p赋值前,指针p并没有指向一个具体的对象。此时可以通过编译,但运行时由于p中为随机值,该赋值可能会破坏内存中某个重要的地址空间的内容,导致程序出错。17、有如下程序:#includeusingnamespacestd;classXA{inta:public:staticintb:XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA::b=0;intmain(){XAd1(4),d2(5);cout<A、9B、11C、13D、15标准答案:C知识点解析:在类XA的构造函数中,定义了用成员变量a的值初始化变量aa,同时静态成员变量b值加1。所以当在主main函数中定义类XA的对象d1(4)后,变量b的等于1,定义对象d2(5)后,变量b的值等于2,所以表达式d1.getA()+d2.getA()+XA::b+dl.b等于4+5+1+2+1=13。18、有如下类定义:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:Foo(){}//③intvalue=0://④};其中存在语法错误的行是()。A、①B、②C、③D、④标准答案:D知识点解析:此题考查的是类的定义。C++语言规定,在类体内不允许对所定义的数据成员进行初始化。19、下列运算符函数中,肯定不属于类Value的成员函数的是()。A、Valueoperator+(Value);B、Valueoperator-(Value,Value);C、Valueoperator*(int);D、Valueoperator/(Value);标准答案:B知识点解析:运算符作为非成员函数时,由于没有隐含this指针,因此所有的操作数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。20、在一个派生类对象结束其生命周期时()。A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果基类没有定义析构函数,则只调用派生类的析构函数D、如果派生类没有定义析构函数,则只调用基类的析构函数标准答案:A知识点解析:此题考查的是派生类对象的析构。释放派生类对象时,析构函数的执行顺序是:首先调用派生类自身的析构函数;然后调用类成员对象的析构函数;最后调用基类的析构函数。所以四个选项中只有选项A正确。21、下列有关抽象类和纯虚函数的叙述中,错误的是()。A、拥有纯虚函数的类是抽象类,不能用来定义对象B、抽象类的派生类若不实现纯虚函数,它也是抽象类C、纯虚函数的声明以“=0;”结束D、纯虚函数都不能有函数体标准答案:D知识点解析:此题考查的是抽象类和纯虚函数的概念。纯虚函数可以有函数体,它的实现由派生类给出。22、虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidf(){cout<<"f0+";}voidg(){cout<<"g0+";}};classDerived:publicBase{public:voidf(){cout<<"f+";}voidgo{cout<<,"g+";}};intmain{Derivedd;Base*p=&d;p->f();p->g();return0;}运行时输出的结果是()。A、f+g+B、f0+g+C、f+g0+D、f0+g0+标准答案:C知识点解析:此题考查的是虚函数和多态性。此题中,因为f()是虚函数具有多态性,所以通过指针p调用的f()是派生类Derived中定义的f();而g()不是虚函数,通过指针p调用的是Base中的g()。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共24题,每题1.0分,共24分。)1、下列叙述中正确的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、栈与队列都是线性结构标准答案:D知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。2、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)()。A、3B、6C、8D、12标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。3、有如下程序:#includeusingnamespacestd;intmain(){int*p;*P=9:cout<<“Thevalueatp:“<<*p;return0:}编译运行程序将出现的情况是()。A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:Thevalueatp:9C、运行时一定输出:Thevalueatp:*9D、运行时有可能出错标准答案:D知识点解析:此题考查的是指针的使用。本题中,存给*p赋值前,指针p并没有指向一个具体的对象。此时可以通过编译,但运行时由于p中为随机值,该赋值可能会破坏内存中某个重要的地址空间的内容,导致程序出错。4、对如下二叉树进行后序遍历的结果为()。A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA标准答案:D知识点解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右予树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左予树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回;否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项D)为正确答案。5、下列描述中正确的是()。A、程序就是软件B、软件开发不受计算机系统的限制C、软件既是逻辑实体,又是物理实体D、软件是程序、数据与相关文档的集合标准答案:D知识点解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是包括程序、数据及相关文档的完整集合。软件由两部分组成:一部分是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件具有以下六个特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。⑤软件复杂性高,成本昂贵。⑥软件的开发涉及诸多社会因素。6、定义如下枚举类型:enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};表达式Wednesday==Friday的值是()。A、falseB、trueC、2D、异常标准答案:B知识点解析:enum<枚举类型名>{<枚举元素表>};其中:关键词“enum”表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。本题中的枚举类型中的数据值Wednesday为2,而Friday的值赋值为2,所以判断Wednesday等于Friday的表达式值为真,即true。7、从工程管理角度看,软件设计一般分为两步完成,它们是()。A、概要设计与详细设计B、数据设计与接口设计C、软件结构设计与数据设计D、过程设计与数据设计标准答案:A知识点解析:软件设计是开发阶段最重要的步骤。从工程管理的角度来看可分为两步:概要设计和详细设计。概要设计是将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式;详细设计是指确立每个模块的实现算法和局部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件与人之间如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。8、下列关于this指针的叙述中,正确的是()。A、this指针是一个隐含指针,它隐含于类的成员函数中B、只有在使用this时,系统才会将对象的地址赋值给thisC、类的友元函数也有this指针D、this指针表示了成员函数当前操作的数据所属的对象标准答案:D知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。9、有如下类定义:classMyClass{intx;public:MyClass():x(0),y(0){}intGetX(){returnx;}voidSetX(intxx){x=xx;}inty;};已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是()。A、obj.xB、obj.yC、obj.GetX()D、obj.SetX(0)标准答案:A知识点解析:由类MyClass的定义可知,数据成员x属于私有成员,所以只能在类的内部访问。类MyClass的对象obj不能访问类MyClass的私有成员x。10、数据库设计的根本目标是要解决()。A、数据共享问题B、数据安全问题C、大量数据存储问题D、简化数据维护标准答案:A知识点解析:数据库应用系统中的一个核心问题就是设计一个能满足用户要求、性能良好的数据库,这就是数据库设计。数据库设计是在一定平台制约下,根据信息需求与处理需求设计出性能良好的数据模式。数据库设计的根本目标是要解决数据共享的问题。11、一个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人员与实体计算机之间的联系是()。A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:如果一个工作人员只能使用一台计算机且一台计算机只能被一个工作人员使用,则关系为一对一;如果一个工作人员可以使用多台计算机,但是一台计算机只能被一个工作人员使用,则关系为一对多;如果一个工作人员可以使用多台计算机,一台计算机也可以被多个工作人员使用,则关系为多对多。12、有如下程序:#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。13、在对函数进行原型声明时,下列语法成分中,不需要的是()。A、函数返回类型B、函数参数列表C、函数名D、函数体标准答案:D知识点解析:在c++中函数在使用之前要预先声明,这种声明在标准C冉中称为函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类型。14、下列关于运算符重载的描述中,正确的是()。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:A知识点解析:此题考查的是运算符的重载。运算符重载为成员函数时,形参个数一般为运算符元数减1;重载为非成员函数时,形参个数一般和运算符元数相等。所以二元运算符重载为非成员函数时,参数表中应有两个参数,C选项错误;运算符重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A正确;一元运算符中,“.”(取负)、“++”、“--”等均可重载为成员函数;C++语言中,“.”、“*”“->”、“∷”、“?:”五个运算符不能重载。15、有如下两个类定义:classAA{};classBB{AAv1,*v2;BBv3;int*v4;}其中有一个成员变量的定义是错误的,这个变量是()。A、v1B、v2C、v3D、v4标准答案:C知识点解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。16、有如下程序:撑include<iostream>usingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<’?’;}Name(char*fname){strepy(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]的值赋为空值。这时会输出三个“?”符号。17、有如下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass(){cout<<’*’;}MyClass(MyClass&a){cout’#’;}~MyClass(){cout<<’@’;}};intmain();MyClassa;Myclassb(a);return0;}运行时的输出结果是()。A、*@#@B、#@*@C、*#@@D、#*@@标准答案:C知识点解析:程序在执行时,先创建类对象a,输出*,再创建类对象b,输出撑,然后再依次调用类对象b和a的析构函数,输出两个18、若有如下类声明classMyClass{public:MyClass(){cout<<1;}};执行下列语句MyClassa,b[2],*p[2]:以后,程序的输出结果是()。A、11B、111C、1111D、11111标准答案:B知识点解析:此题考查的是对象的构造。本题共声明了一个MyClass对象a,一个包含2个MyClass对象的数组b和一个包含2个MyClass对象指针的数组p,所以一共创建了3个MyClass类的对象,即调用了3次构造函数。19、当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是()。A、任何B、公有或保护C、保护或私有D、私有标准答案:B知识点解析:基类的公有成员和保护成员只有在以保护继承方式继承时,其在继承类中是保护成员。20、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。21、有如下程序:#inc1ude<iOStream>uSingnamespacestd;classInstrument{public:virtualvoidDisplay()=0;};classPiano:publicInstrument{public:voidDisplay(){/*函数体程序略*/}};intmain(){InstrumentS;Instrument*p=0;//…;return0;}下列叙述中正确的是()。A、语句“Insturment*p=0;”编译时出错B、语句“Instruments:”编译时出错C、类Piano中的Display函数不是虚函数D、类Instrument是一个虚基类标准答案:B知识点解析:由于函数Display()是一个纯虚函数,所以类Instrument是抽象类,而抽象类是不能定义对象的,因而选项B)为正确选项。22、己知Value是一个类,Value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuevinti=0);D、Valueoperator+(Valuev=value,inti=0),标准答案:B知识点解析:此题考查的是重载加法运算符“+”。“+”是二元运算符,其第一操作数是对象本身,i为第二操作数,由此可知选项B正确。23、有如下程序:#includeusingnamespacestd;classPublication{//出版物类charname[30];public:Publication(char*name="未知名称"){strcpy(this->name,name);}constchar*getNameoconst{returnname;}virtualconstchar*getTypeoconst{return"未知类型";}};classBook:publicPublication{//书类public:Book(char*name):Publication(name){}virtualconstchar*getType()const{return"书";}};voidshowPublication(Publication&p){cout<A、未知类型:未知名称B、未知类型:精彩人生C、书:未知名称D、书:精彩人生标准答案:D知识点解析:因为类Book继承自基类Publication,所以在类Book中的虚常成员函数*getType(){return"书";}就会覆盖基类中的虚常成员函数*getType()const{return"未知类型";},所以在主函数中调用函数showPublication(book)时,getType()函数的输出的结果是“书”,getName()函数的输出结果为“精彩人生”。24、下列关于运算符重载的描述中,正确的是()。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:A知识点解析:此题考查的是运算符的重载。运算符重载为成员函数时,形参个数一般为运算符元数减l:重载为非成员函数时,形参个数一般和运算符元数相等。所以二元运算符重载为非成员函数时,参数表中应有两个参数,C选项错误;运算符重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A正确:一元运算符中,“.”(取负)、“++”、“--”等均可重载为成员函数;C++语言中,“.”、“.*”、“->*”、“::”、“?:”五个运算符不能重载。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共22题,每题1.0分,共22分。)1、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)()。A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。2、下列运算符中不能在C++中重载的是()。A、?:B、+C、-D、<=标准答案:A知识点解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符;除了.、.*、->*、::、?:这五个运算符之外,其他运算符都可以重载。3、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是A、冒泡排序为n/2B、冒泡排序为nC、快速排序为nD、快速排序为n(n一1)/2标准答案:D知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种交换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。4、软件是指()。A、程序B、程序和文档C、算法加数据结构D、程序、数据与相关文档的完整集合标准答案:D知识点解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据与相关文档的完整集合。,软件由两部分组成;一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。5、对数组名作函数的参数,下面描述正确的是()。A、数组名作函数的参数,调用时将实参数组复制给形参数组B、数组名作函数的参数,主调函数和被调函数共用一段存储单元C、数组名作参数时,形参定义的数组长度不能省略D、数组名作参数,不能改变主调函数中的数据标准答案:B知识点解析:数组作为参数实参传递的是数组的首地址。所以主调函数和被调函数共用一段存储单元。6、数据字典(DD)所定义的对象都包含于()。A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。7、有如下程序:#include<iostream.h>voidmain(){charstr[2][5]={’’1234’’,’’5678’’},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=str[i];for(i=0;i<2;i++)for(j=0;p[i][j]>’\0’;j+=2)s=10*s+p[i][j]-’0’;cout<<s;}该程序的输出结果是()。A、1357B、2468C、3556D、23678标准答案:A知识点解析:程序中的“for(i=0;i<2;i++)p[i]=str[i];”语句将str中的值赋值给指针数组p。在接下来的二重for循环中,跳取“j+=2”,p指针指向的值即“1”,“3”,“5”,“7”。在分别对字符到整型的转换,即减去字符’0’,然后依次转换为千位,百位,十位,个位“10*s”操作输出整型s,即“1357”。8、在软件开发中,需求分析阶段产生的主要文档是A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标与确认,又可以作为控制软件开发进程的依据。9、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、投影D、并标准答案:A知识点解析:选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。投影也是单目运算,该运算从表中选出指定的属性值组成一个新表。自然连接是一种特殊的等价连接,它将表中有相同名称的列自动进行记录匹配。自然连接不必指定任何同等连接条件。10、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的()。A、记录B、行C、属性D、元组标准答案:C知识点解析:自然连接要满足两个条件:一是两关系之间有公共域。二是通过共域的相等值进行连接。11、有如下程序:#includeusingnamespacestd;classBASE{public:-BASE0{cout<<”BASE”;}};classDERIVED:publicBASE{public:-DERIVED(){cout<<”DERIVED”;)};intmain(){DERIVEDx;retumO;}执行后的输出结果是()。A、BASEB、DEIVEDC、BASEDERIVEDD、DERIVEDBASE标准答案:D知识点解析:此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。12、下列语句中,与语句“1n=(a>b?(1)>c?1:0):0);”的功能等价的是()。A、if(a<=b)n=0;B、if((a>b)Il(b>c))n=1;elsen=0;C、if(a>b)if(b>c)n=1:elsen=0;elsen=0;D、if(a>b)n=1;elseif(<=c)n=1;elseif(b>c)n=1;elsen=0;标准答案:C知识点解析:条件表达式(a>b?(b>c?1:0):0)的含义是,如果a>b成立,则此表达式的值等于条件表达式(b>c?1:0)的值,否则其值等于0。而条件表达式(b>c?1:0)的含义是,如果b>c成立,其值等于1,否则其值等于0。13、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";)};classB{public:B(){cout<<"B";)}classC:publicA{Bb;public:B(){cout<<"C";}};intmain(){Cobj;return0;}执行后的输出结果是()。A、CBAB、BACC、ACBD、ABC标准答案:D知识点解析:此题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。14、运算符重载时不需要保持的性质是()。A、操作数个数B、操作数类型C、优先级D、结合性标准答案:B知识点解析:运算符重载应该体现为原有运算符的功能在新的数据类型上的延伸。重载的运算符保持原有运算符的操作个数、优先级和结合性三个最基本的特征。15、有如下程序#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3:Funfun1;constFunfun2;return;}若程序的输出结果是:123则程序中下划线处遗漏的语句是()。A、cout<<fun1.value()<<Fun::i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<<fun2.value()<<Fun::i;D、cout<<fun2.value()<<Fun::i<<fun1.value();标准答案:A知识点解析:此题考查的是常成员函数。const关键字可以用于参与重载函数的区分,此时常对象调用常成员函数,一般对象调用一般成员函数。当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。本题中,通过funl调用value()函数时,是调用前一个,而通过fun2调用value()函数是调用后一个:另外,value()函数中,访问的i是类中定义的数据成员i,全局变量i在类中被“屏蔽”。fun1.value()输出i-1=2-1=1;fun2.value()调用后一个value()函数输出i+1=2+1=3;Fun::i是通过类名直接访问类的静态数据成员i的值,即2;所以正确的输出顺序是A选项。16、下列控制格式输入输出的操作符中,能够设置浮点数精度的是()。A、senIrecisionB、setwC、setfillD、showpoint标准答案:A知识点解析:setprecision(intn):设置浮点数的精度(有效位数或小数位数),等价函数调用:io.precision(n)。17、已知函数f的原型是voidf(int*a,long&b);,变量v1、V2的定义是:intv1:longv2;下列调用语句中正确的是()。A、f(v1,&v2);B、f(v1,V2);C、f(&v1,&V2);D、f(&v1,v2);标准答案:D知识点解析:此题考查的是函数的调用。因为变量的定义是intv1;longv2,而函数f()的第一个参数是指针,第二个参数是引用,所以选项D为正确引用。18、有如下两个类定义classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在类YY中保护成员变量的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:在C++中派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。所以对于本题来说,YY类保护继承自类XX,那么类XX中的公有成员x3和保护成员x2在派生类中都成为保护成员,再加上类YY中的保护成员y2,因此在派生类YY中保护成员的个数为3。19、下列关于类成员对象构造函数调用顺序的叙述中,正确的是()。A、与它们在初始化列表中的顺序相同B、与它们在类中声明的顺序相同C、与析构函数的调用顺序相同D、顺序不确定标准答案:B知识点解析:类成员对象构造函数的调用是按照在类中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行构造的。20、将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是()。A、不合法的运算符B、—元运算符C、无操作数的运算符D、二元运算符标准答案:B知识点解析:对于一元或二元运算符函数作为成员函数重载时,第一操作数就是对象本身,并不显式地出现在参数表中。即第一操作数仅以this指针的形式隐含存在于参数表中。因此,对于一元运算符参数表是空的;对于二元运算符参数表中只有一个参数,它代表第二操作数。21、有如下程序:#include<iostream>usingnamespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<<page<<endl;}voidShow(){Media::Show();}//①};intmain(){BookBible;Bible.Name();//②Bible.Print();//③Bible:Show();//④return0;}编译时有错误的是()。A、语句①B、语句②C、语句③D、语句④标准答案:B知识点解析:类Book私有继承自类Media,所以类Media中的公有成员函数Name()在继承类Book中变成了私有成员函数,因而类Book的对象Bible不能访问私有成员函数Name()。22、下列关于文件流的描述中,正确的是()。A、文件流只能完成针对磁盘文件的输入和输出B、建立一个文件流对象时,必须同时打开一个文件C、若输入流要打开的文件不存在,将建立一个新文件D、若输出流要打开的文件不存在,将建立一个新文件标准答案:D知识点解析:对于输入文件流类ifstream,默认的打开模式是ins_base:fin,当以这种方式打开文件而文件又不存在时,通过fail()可测试打开失败(返回值为true),对于输出文件流类ofstream,默认的打开模式是ios_base::out,当以这种方式打开文件而文件又不存在时,将自动建立新文件。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共20题,每题1.0分,共20分。)1、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。2、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为()。A、63B、64C、6D、7标准答案:B知识点解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。3、内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是()。A、顺序内聚B、偶然内聚C、时间内聚D、逻辑内聚标准答案:B知识点解析:内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:偶然内聚一一模块中的代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块为巧合强度模块。逻辑内聚一一这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的参数来确定该模块应完成哪一种功能。时间内聚一一这种模块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。过程内聚一一如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。通信内聚一一这种模块除了具有过程内聚的特点外,还有另外一种关系,即它的所有功能都通过使用公用数据而发生关系。顺序内聚一一如果一个模块内各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。功能内聚一一如果一个模块包括为完成某一具体任务所必需的所有成分,或者说模块中所有成分结合起来是为了完成一个具体的任务,此模块则为功能内聚模块。4、下面不属于软件需求分析阶段主要工作的是()。A、需求变更申请B、需求分析C、需求评审D、需求获取标准答案:A知识点解析:在软件开发的过程中,应该尽早的制定测试计划,其中在需求分析阶段制定系统测试计划,在概要设计阶段制定集成测计划,在详细设计阶段制定单元测试计划。5、软件需求规格说明书的作用不包括()。A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合同;②开发人员进行设计和编程的依据:③软

温馨提示

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

最新文档

评论

0/150

提交评论