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

下载本文档

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

文档简介

国家二级(C++)笔试模拟试卷7(共9套)(共447题)国家二级(C++)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、具有3个结点的二叉树有()。A、2种形态B、4种形态C、7种形态D、5种形态标准答案:D知识点解析:暂无解析2、数据的存储结构是指()。A、数据所占的存储空间B、数据的逻辑结构在计算机中的存放形式C、数据在计算机中的顺序存储方式D、存储在计算机外存中的数据标准答案:B知识点解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。数据的存储结构有顺序结构,链式结构、散列结构和索引结构等。3、算法分析的目的是A、找出数据结构的合理性B、找出算法中输入和输出之间的关系C、分析算法的易懂性和可靠性D、分析算法的效率以求改进标准答案:D知识点解析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。4、完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是()。A、黑箱测试法B、白箱测试法C、错误推测法D、安装测试法标准答案:1知识点解析:暂无解析5、下列叙述中,不属于软件需求规格说明书的作用的是A、便于用户、开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:8知识点解析:软件需求规格说明书(SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发下作的基础和依据;③作为确认测试和验收的依据。6、软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A、模块间的关系B、系统结构部件转换成软件的过程描述C、软件层次结构D、软件开发过程标准答案:2知识点解析:软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。7、下列关于队列的叙述中,不正确的是()。A、在队列中能插入数据B、在队列中能删除数据C、队列是先进先出的线性表D、队列是先进后出的线性表标准答案:8知识点解析:队列是指允许在一端进行插入,而在另一端进行删除的线性表。允许插入的一端称为队尾,允许删除的一端称为队头,所以在队列中既可以插入数据也能删除数据,所以选项A、B是正确的。在这种数据结构中,最先插入的元素最先能够被删除。因此队列又称为先进先出的线性表。答案是D。8、以下各运算中,不属于算术运算的是()。A、大于B、加C、乘D、除标准答案:1知识点解析:在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算、数据传输。“大于”属于逻辑运算中的一种。选项中的加、乘、除都属于算术运算。9、程序的3种基本控制结构是A、过程、子过程和分程序B、顺序、选择和重复C、递归、堆栈和队列D、调用、返回和转移标准答案:2知识点解析:采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,它包括3种基本控制结构,分别是顺序结构、选择结构和重复结构(又称循环结构)。注意:控制程序结构的方法和作用。10、下列特征中不是面向对象方法的主要特征的是()。A、多态性B、继承C、封装性D、模块化标准答案:D知识点解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。二、选择题(本题共25题,每题1.0分,共25分。)11、有如下函数模板声明:template<typenameT>TMax(Ta,TB){return(a>=B)?a:b;}下列对函数模板Max()的调用中错误的是A、Max(3.5,4.5)B、Max(3.5,4)C、Max<double>(3.5,4.5)D、Max<double>(3.5,4)标准答案:B知识点解析:本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的。但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。例如,本题中的B)选项,编译系统从第一个参数“3.5”获得的信息是“T对应于double”,而从第二个参数“4”处获得的信息是“T对应于int”,二者相互矛盾,在编译时会产生错误。对于D)选项中紧跟在函数名后的<double>就是模板实参表,通过它通知编译系统在调用过程中,int型的参数“4”将被自动换成double型。12、在公有派生的情况下,派生类中定义的成员函数只能访问原基类的A、公有成员和私有成员B、私有成员和保护成员C、公有成员和保护成员D、私有成员、保护成员和公有成员标准答案:C知识点解析:本题考核派生类的定义和访问权限。当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类私有成员不可访问。即基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。13、下列有关类成员的叙述中,正确的是()。A、友元函数是类的成员函数B、类成员的默认访问权限是私有的C、类成员函数必须声明为公有的D、类的静态数据成员不能是常成员标准答案:B知识点解析:此题考查的是类成员的有关概念。类的友元函数可以直接访问该类的所有成员,但它不是类的成员函数,故选项A)错误;类成员函数的访问权限可以声明为公有、保护、私有,故选项C)错误;静态数据成员的声明是使用关键字static,它可以是常成员,故选项D)错误。14、请阅读以下程序main(){intx=1,y=0,a=0,b=0;switch(x)case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}cout<<"a="<<a<<"b="<<b<<endl;}上面程序的输出结果是A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2标准答案:A知识点解析:本题考察switch语句的嵌套,以及break语句的使用规则,不再执行下面的case语句,如果没有break语句,则会顺序执行随后语句。据此,读程序可知,内层switch执行case0分支,故a增1,跳出内层switch后,由于没有break语句;随后执行外层switch的case2分支,a又增1,b增1。故答案为A。15、下面关于类和对象的描述中,错误的是A、类就是C语言中的结构体类型,对象就是C语言中的结构体变量B、类和对象之间的关系是抽象和具体的关系C、对象是类的实例,一个对象必须属于一个已知的类D、类是具有共同行为的若干对象的统一描述体标准答案:A知识点解析:在C++语言中,类和结构体有本质区别,类中包含数据及操作函数,而结构体只包含有数据。16、下列程序的输出结果是#include<iostream.h>intb=2;intfunc(int*a){b+=*a;return(b);}voidmain(){inta=2,res=2;res+=func(&a);cout<<res;}A、4B、6C、8D、10标准答案:B知识点解析:在函数体语句b+=*a;中的*是指针运算符(也称间接访问运算符),*a就是main函数中a的值。17、将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))”。18、按照标识符的要求,开头的符号不能是()。A、大写字母B、小写字母C、数字字符D、下划线标准答案:4知识点解析:C++规定,标识符由大小写字母、数字字符和下划线组成,并且以字母或下划线开始。因此,本题正确答案为C。19、语句inti=2.8*6;中整型常量i定义后赋初值的结果是()。A、12B、16C、17D、18标准答案:2知识点解析:C++中数据类型转换有两种类型,即隐式类型转换和显式类型转换。隐式类型转换是由编译器自动完成的类型转换;显示类型转换是由程序员显式指出的类型转换。本题中是隐式类型转换,浮点数转换为整数,是直接取浮点数的整数部分,而不是四舍五入。故答案为B。20、下面程序输出的结果是()。#include<iostream>usingnamespacestd;intfuc(char*x);intmain(){cout<<fuc("hello")<<endl;return0;}intfuc(char*x){char*y=x;while(*y!=’\0’)y++;return(y-x);}A、5B、6C、0D、语法错误,不能输出结果标准答案:1知识点解析:函数fuc()的功能是计算字符串x的长度,因此程序的输出是5。21、在基类中有定义的纯虚函数,它要求在派生类中定义,而且基类不能用以说明对象,则该类为()。A、虚基类B、抽象类C、虚函数类D、模板类标准答案:2知识点解析:类中一旦有纯虚函数的定义那么这个类就再也不能创建此类的对象了,我们把这种类叫做抽象类。22、有如下类的定义。横线处的语句是()。classMyClass{public:MyClass(inta=0,intb=0){X=a;Y=b;}voidChange()const{X=10;Y+=10;}private:___________________intX,Y;};A、staticB、constC、mutableD、不需要填入内容标准答案:4知识点解析:暂无解析23、在C++语言的数据类型中,int、short等类型的长度是()。A、固定的B、任意的C、由用户自定义D、与机器字长有关标准答案:8知识点解析:暂无解析24、语句ofstreamf("SALARY.DAT",ios::app|los::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,并且______。A、若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B、若文件存在,将其置为空文件;若文件不存在,打开失败C、若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D、若文件存在,打开失败;若文件不存在,建立一个新文件标准答案:2知识点解析:暂无解析25、若有定义“intx=10,y=3,z;”,则语句“cout<<(z=(x%y,x/Y));”的输出结果是______。A、1B、0C、4D、3标准答案:8知识点解析:暂无解析26、下列程序的输出结果是#include"iostream"usingnamespacestd;intMax(inta,intb){if(a>b)returna;elsereturnb;}voidmain(){intm,n;m=10,n=5;intmax=Max(m,n);cout<<max<<endl;}A、10B、程序有误C、1D、0标准答案:1知识点解析:本题函数Max的功能是求出两个整数中的较大者,并且通return语句返回。注意:return语句的用法,注意return的条件。27、下列描述中,()是抽象类的特性。A、可以说明虚函数B、可以进行构造函数重载C、可以定义友元函数D、不能说明其对象标准答案:8知识点解析:暂无解析28、在C++中,关于下列设置参数默认值的描述中,正确的是()。A、不允许设置参数的默认值B、设置参数默认值只能在定义函数时设置C、设置参数默认值时,应该是先设置右边的再设置左边的D、设置参数默认值时,应该全部参数都设置标准答案:4知识点解析:暂无解析29、在C++中,打开一个文件,就是将这个文件与一个()建立关联,关闭一个文件,就是取消这种关联。A、类B、流C、对象D、结构标准答案:2知识点解析:暂无解析30、下面程序的运行结果是#include<iostream.h>intfun(inta[],intn){intresult=1;for(inti=1;i<n;i++)result=result*a[i];returnresult;}voidmain(){inta[3]={3,4,5};cout<<fun(a,A、12B、15C、20D、60标准答案:4知识点解析:for循环执行2次,所以第一次for循环为result=1*a[l]=4,第二次for循环为result=4*a[2]=20。31、关于类和对象描述错误的是A、对象(Object)是现实世界中的客观事物,对象具有确定的属性B、类是具有相同属性和行为的一组对象的集合C、对象是类的抽象,类是对象的实例D、类是对象的抽象,对象是类的实例标准答案:4知识点解析:C++中,类是用户自定义的一种数据类型,对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类作为一种数据类型,它可以定义多个对象。32、设有以下定义和程序:#include<iostream.h>classA1{public:voidshow1(){cout<<"classA1”<<end1;}};classA2:publicA1{public:voidshow2(){cout<<"classA2"<<end1;}};classA3:protectedA2{public:voidshow3(){cout<<"classA1”<<end1;}};voidmain(){A1obj1;A2obj2;A3obj3;}则以下不合语法的调用语句是A、obj1.show1();B、obj2.show1();C、obj3.show1();D、obj2.show2();标准答案:4知识点解析:本题考核派生类的使用以及访问权限问题。C++中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2是A1的公有派生类,A3是A2的保护派生类,所以类A1的成员函数show1()在类A3中呈现保护属性,不能通过A3类的对象访问。33、友元运算符obj1>obj2被C++编译器解释为()。A、operator>(obj1,obj2)B、>(obj1,obj2)C、obj2.operator>(obj1)D、obj1.operator>(obj2)标准答案:1知识点解析:暂无解析34、下列关于虚基类的描述,错误的是A、设置虚基类的目的是为了消除二义性B、虚基类的构造函数在非虚基类之后调用C、若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D、若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数标准答案:2知识点解析:虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数选于非虚基类的构造函数执行。35、下面有关重载函数的描述中,正确的是()。A、重载函数必须具有不同的返回值类型B、重载函数形参个数必须不同C、重载函数必须具有不同的形参列表D、重载函数名可以不同标准答案:C知识点解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、若串s="MathTypes",则其子串的数目是______。标准答案:46知识点解析:串s中共有9个字符,由于串中字符各不相同,则其子串中有0个字符的1个(空串),1个字符的9个,2个字符的8个,3个字符的7个,4个字符的6个,5个字符的5个,6个字符的4个,7个字符的3个,8个字符的2个,9个字符的1个,共有1+2+3十4+5+6+7+8+9+1=46。37、在面向对象方法中,__________描述的是具有相似属性与操作的一组对象。标准答案:类知识点解析:在面向对象方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。38、数据流图的类型有【】和事务型。标准答案:变换型知识点解析:典型的数据流类型有两种:变换型和事务型,,变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流。它可以引发一个或多个处理,这此处理能够完成液作业要求的功能,这种数据流就叫做事务。39、.、.*、->、::、?:这五个运算符______重载。标准答案:不能知识点解析:暂无解析40、当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为______。标准答案:上溢知识点解析:暂无解析四、填空题(本题共10题,每题1.0分,共10分。)41、执行下列语句后,变量sum的值是______。intsum=0;for(inti=1;i<=3;i++)for(intj=1;j<=i;j++)sum++;标准答案:6知识点解析:此题考查的是for循环的嵌套。题目中外循环会循环3次,每次循环变量i的值分别是1、2、3;内循环会循环i次,故3次执行内循环,循环此数分别是1、2、3次。故最终sum的值为6。42、在下列的程序的横线处填上适当的语句,使该程序的输出为12。#include<iostream.h>usingnamespacestd;classBase{public:inta,b;Base(inti){a=i;}};classDerived:publicBase{inta;public:Derived(intx):Base(x),b(x+1){};voidshow(){______;//输出基类数据成员a的值。cout<<b<<endl;}};voidmain(){Derivedd(1);d.show();return0;}标准答案:cout<<Base::a知识点解析:此题考查的是基类和派生类的构造函数。派生类构造函数的执行顺序;首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。此题要求结果是输出12,分析题目:首先调用基类的构造函数,然后是调用子对象的构造函数,横线处要求输出基类成员a的值,填入cout<<Base::a即可。43、已知intDBL(intn){returnn+n;}和longDBL(longn){returnn+n}是一个函数模板的两个实例,则该函数模板的定义是______。标准答案:template<classT>TDBL(Tn){returnn+n;}知识点解析:本题考核函数模板的使用。函数模板的一般说明形式如下:template<类型形参表>返回类型函数名(形参表){//函数体)。函数调用方式为:函数名(实参表);。形参表中的类型以实参表中的实际类型为依据。由此易得答案。44、下列程序的运行结果是______。#include<iomanip.h>intFunc(int*a,intn){ints=1;for(inti=0;i<n;i++)s*=*a++;returns;}voidmain(){inta[]:{1,2,3,4,5,6,7,8};intb=Func(a,6)+Func(&a[5],2);cout<<“b=“<(b<<endl;}标准答案:b=762。知识点解析:本题考查了。a++的用法。*a++作为表达式时,先计算*a作为表达式的值,然后使指针变量a本身增1,在本惠中,s*=*a++等同于3=s**a,a++,S后面第一个*是乘号。45、若有定义语句:intx=3,y=2,z=1;,则表达式x标准答案:2知识点解析:本题考查的是运算符的优先级。首先x=3,y=2,判断x46、若要将函数“voidFriFun{};”声明为类MyClass的友元函数,则应在类MyClass的定义中加入语句______。标准答案:friendvoidFriFun();知识点解析:暂无解析47、以下程序的运行结果是【】。#include<iostream>#include<string>usingnamespacestd;voidmain(){chara[10]="China",b[]="Chin",c[]="ese";cout<<strlen(strcat(strcpy(a,b),c))<<endl;}标准答案:7知识点解析:本题主要考查C++中字符串函数的使用。strcpy(s1,s2)将s2的内容赋值到s1中;strcat(s1,s2)连接s1和s2两个字符串;strlen(s)返回字符数组s的长度。因此最后输出的结果是b和c进行连接后的字符串长度,即7。48、假定动态分配一个类型为Worker的具有n个元素的数组,并由P指向这个动态数组,如果要释放这个数组,则使用的语句为【】。标准答案:delete[]p;知识点解析:语句为delete[]p;。49、______使一个函数可以定义成对许多不同数据类型完成同一个任务。标准答案:函数模板知识点解析:暂无解析50、模板使我们可以用一个代码段指定一组相关函数(称为______)或一组相关类(称为______。标准答案:函数模板、类模板知识点解析:暂无解析国家二级(C++)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、最简单的交换排序方法是A、快速排序B、选择排序C、堆排序D、冒泡排序标准答案:8知识点解析:冒泡排序是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。注意:交换排序方法有冒泡排序和快速排序,显然选项B)和选项C)错误,冒泡排序比较简单,其算法也容易理解,但快速排序本身较为复杂,且采用了递归调用,具算法理解也稍难。注意:插入排序、选择排序、归并排序、基数排序等排序方法的特点。2、栈通常采用的两种存储结构是A、线性存储结构和链表存储结构B、散列方式和索引方式C、链表存储结构和数组D、线性存储结构和非线性存储结构标准答案:1知识点解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。3、线性表的顺序存储结构和线性表的链式存储结构分别是A、顺序存取的存储结构、顺序存取的存储结构B、随机存取的存储结构、顺序存取的存储结构C、随机存取的存储结构、随机存取的存储结构D、任意存取的存储结构、任意存取的存储结构标准答案:8知识点解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对策结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。注意:顺序存储结构和链式存储结构的定义和性质,两种存储结构的操作方法。4、完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是A、黑箱测试法B、白箱测试法C、错误推测法D、安装测试法标准答案:1知识点解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据功能导出测试用例。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,白箱测试也称为逻辑覆盖测试,故选项B)不正确;错误推测法只是黑箱测试所使用的一种具体的方法,故选项C)不正确;安装测试是测试层次中的一种,它属于高级测试,故选项D)不正确。注意:常用的黑箱测试方法及其定义,白箱测试用例的准则。5、在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示A、模块之间的调用关系B、程序的组成成分C、控制程序的执行顺序D、数据的流向标准答案:1知识点解析:常用的软件结构设计工具是结构图(SC-StructureChart),也称程序结构图。其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。注意:根据结构图设计思想,了解结构图构成的基本形式。6、下列选项中,不属于模块间耦合的是A、数据耦合B、同构耦合C、异构耦合D、公用耦合标准答案:4知识点解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义和分类。7、一个关系中属性个数为1时,称此关系为A、对应关系B、单一关系C、一元关系D、二元关系标准答案:4知识点解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。注意:各种关系查询语言与过程性语言和非过程陛语言的关系,过程陛语言的特点。8、为用户与数据库系统提供接口的语言是A、高级语言B、数据描述语言(DDL)C、数据操纵语言(DML)D、汇编语言标准答案:4知识点解析:DBMS提供数据操纵语言(DML)实现对数据库中数据的操作,数据操纵语言(DML)是用户(包括应用程序)与数据库系统的接口。数据操纵语言通常包括检索和更新功能。注意:程序模块中语言处理部分的分类,各子类的定义及其功能。9、相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和A、可重用性差B、安全性差C、非持久性D、冗余性标准答案:8知识点解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的小一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统二代的特点。10、需求分析阶段的任务是确定A、软件开发方法B、软件开发工具C、软件开发费用D、软件系统功能标准答案:8知识点解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。注意:选项A)软件开发方法是在总体设计阶段完成的任务;选项B)软件开发工具是在实现阶段需完成的任务;选项C)软件开发费用是在可行性研究阶段需完成的任务:注意:需求分析的任务和它的6种方法。二、选择题(本题共25题,每题1.0分,共25分。)11、面向对象程序设计思想的主要特征中不包括A、继承性B、功能分解,逐步求精C、封装性和信息隐藏D、多态性标准答案:2知识点解析:面向刘象程序设计的主要特征是继承性,封装性和信息隐藏,多态性。12、C++语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言A、ASPB、CC、VBD、Java标准答案:2知识点解析:C++语言是对C语言进行了扩充,继承了它的语法,开增加了面向对象的设计方法。13、设变量a是int型,f是double型,i是float型,则表达式10+’a’+i*f值的数据类型A、intB、floatC、doubleD、不确定标准答案:4知识点解析:根据混合运算规则,如果有一个数据是double型,则其他数据类型先转化为double型,运算的结果最终也是double型。为保证精度的不丢失,表达式的数据类型是变量和常量中精确度最高的变量类型。14、能正确表示逻辑关系:“a≥10或a≤0”的C++语言表达式是A、a>=10ora<=0B、a>=0|a<=10C、a>+10&&a<=0D、a>=10||a<=0标准答案:8知识点解析:逻辑运算符“||”表示或的意思。15、以下程序的输出结果是#include<iostream.h>voidmain(){inti,j,x=0;for(i=0;i<2;i++){X++;for(j=0;j<3;j++){if(j%2)continue;x++;}X++;}cout<<"X="<<x;}A、x=4B、x=8C、x=6D、x=12标准答案:2知识点解析:该题是一个for循环嵌套语句。第一层for循环循环2次,第二层循环3次,但当j等于0和1时,将执行continue语句,不执行x++运算,所以每次执行完内循环后,x的增量为1。最后一个x++运算将每次累加起来就是x的值。16、若执行下面的程序时,从键盘上输入5和2,则输出结果是#include<iostream.h>voidmain(){inta,b,k;cin>>a>>b;k=a;if(a<b)k=a%b;elsek=b%a;cout<<k<<endl;}A、5B、3C、2D、0标准答案:4知识点解析:本题考查简单的if…else语句,先执行条件;if(a<b)显然不成立,则执行else语句。17、有以下程序#include<string.h>#include<iostream.h>voidmain(){char*p="abcde\ofghjik\O";cout<<strlen(p);}程序运行后的输出结果是A、12B、15C、6D、5标准答案:8知识点解析:C++语言规定了一个字符串结束标志,以字符,’\0’代表,在遇到’\0’时,表示字符串结束,由它前面的字符组成字符串。18、若有说明语句chara[]="Itismine";char*p="Itismine";则以下不正确的叙述是A、a+1表示的是字符t的地址B、p指向另外的字符串时,字符串的长度不受限制C、p变量中存放的地址值可以改变D、a中只能存放10个字符标准答案:8知识点解析:本题考查字符申数组和指针的引用方式。在C++语言中,系统在每个字符中或数组的最后自动加入一个字符’\0’,作为字符的结束标志,在本题中,cbara[]=“Itismine”;所表示的a字符串实际含有11个字符。19、以下程序的运行结果是#include<iostream.h>voidsub(intx,inty,int*z){*z=y-x;}voidmain(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);cout<<a<<","<<b<<","<<C<<endl;}A、5,2,3B、-5,-12,-7C、-5,-12,-17D、5,-2,-7标准答案:2知识点解析:在C++语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。了解了实参指针变量的改变情况,本题只剩下简单的“加减法”了。20、下列程序是用来判断数组中特定元素的位置所在,则输出结果为#include<conio.h>#include<iostream.h>in[fun(int*s,intt,int*k){inti;*k=0;for(i=0;<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}voidmain(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun(a,10,&k);cout<<k<<‘,’<<a[k];}A、7,431B、6C、980D、6,980标准答案:8知识点解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应认为*k的值为数组中的某一下标值,即*k=0。21、执行下列程序段,结果是#include(iostream.h>voidmain(){intx=40;chary=‘C’;intn;n=(x&0xff)&&(y>‘B’);cout<<n;}A、0B、1C、2D、3标准答案:2知识点解析:按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。逻辑与运算符“&&”需要两边的结果都为1时,其结果才为1。22、关于this指针的说明不正确的是A、不能在程序中修改this指针B、this指针可以给其他指针赋值,但不能修改this指针C、静态成员函数中没有this指针D、this指针可以被赋值标准答案:8知识点解析:C++的this指针是系统默认产生的一个指针,它是const的,所以是不能够被改变,不能够被赋值的。23、下面程序的结果是#include<iostream.h>classA{public:A(){cout<<"construtA"<<endl;}virtual~A(){cout<<"destructA"<<endl;}};classB:publicA{};classC:publicA{};classD:publicB,publicC{};voidmain(){Dd;}A、constructAB、constructAC、constmctAD、constmctAdestructAconstructAconstmctAconstructAdestructAconstructAconstructAdestructAdestructAconstructAdestructAdest标准答案:2知识点解析:类D继承了类C和类B,所以在构造的时候分别构造类B和类C。24、关于虚函数下面说法正确的是A、若在重定义虚函数时使用了virtual,则该重定义函数还是虚函数B、虚函数不能声明为友元C、子类必须重定义父类的虚函数D、虚函数不能是static的标准答案:8知识点解析:虚函数一定不能定义为静态的。虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了virtual,则该重定义函数不一定还是虚函数。25、如果表达式++x/y中,++是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为A、(operator++(x)).operator/(y)B、(operator++(0)).operator/(y)C、operator/((operator++(x,0)),y)D、operator/((operator++(0)),y)标准答案:1知识点解析:C++中用成员函数重载++x为:x.operator++(),用友元函数重载++x为:operalor++(x),用成员函数重载x/y为:x.operator/(y),用友元函数重载x/y为:operator/(x,y)。26、要想使23.78965421的输出为23.7887应用的语句是A、cout<<23.78965421;B、cout<<fixed<<23.78965421;C、cout<<23.78965421-0.001;D、cout<<fixed<<23.78965421-0.001;标准答案:4知识点解析:C++语言中默认小数的输出位一共是6位,fixed的意义是在小数点后保留6位。27、有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;A、a[p=a)B、*(&a[i])C、p[i]D、*(*(a+i)标准答案:8知识点解析:选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。28、有以下程序#include<iostream.h>floatfun(intx,inty){return(x+y);}voidmain(){inta=2,b=5,c=8;tout<<fun((int)fun(a+c,b),a-C);}程序运行后的输出结果是A、编译出错B、9C、21D、9标准答案:2知识点解析:本题的运算过程是fun((int)fun(a+c,b),a-c),fun((int)fun(10,5),2-8),fun((int)15.000000,-6),thn(15,-6)=9。29、下列程序的运行结果是#include<iostram.h>classLocation{private:intX,Y;public:voidinit(int=0,int=0);voidvalueX(intval){X=val:}intvalueX(){returnX;}voidvalueY(intval){Y=val;}intvalueY(){returnY;}};voidLocation∷init(intinitX,intinitY){X=initX;Y=initY;}voidmain(){LocationA,B;A.init();A.ValueX(5);cout<<A.ValUeX()<<endl<<A,valueY()<<endl;B.init(6,2);B.valueY(4);cout<<B.valueX()<<endl<<B.valueY()<<endl;}A、5064B、0064C、5062D、0062标准答案:1知识点解析:本题中有成员函数和它的重载函数,要注意它们的不同,在本题中先调用了init函数,初始化了X,Y,都为0,valueX(5);义将X变为5,所以输出5和0,然后初始化init(6,2),接着义valueY(4);将X,Y设为6和4,所以输出6和4。30、在C++语言中,封装是借助于什么达到的?A、结构B、类C、数组D、函数标准答案:2知识点解析:C++基本的性质就是它的封装性,而封装性主要是靠类来实现的。31、在位运算中,操作数每左移一位,其结果相当于A、操作数乘以2B、操作数除以2C、操作数除以4D、操作数乘以4标准答案:1知识点解析:左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。左移1位,相当于该数乘以2。32、有如下程序#include<iostream.h>#defineN2#defineMN+1#defineNUM2*M+1voidmain(){inti;for(i=1;i<=NUM;i++)cout<<i;}该程序中的for循环执行的次数是A、5B、6C、7D、8标准答案:2知识点解析:这是一种简单的情况:不带参数的宏。关键要注意在对2*M+1进行宏替换时,要将宏名M原样替换,得到NUM的形式为2*N+1+1(千万不要随意把给N+1加上小括号,使NUM变为2*(N+1)+1,这就是宏名和变量名之间的区别)。33、下列程序的输出结果是#inClUde<iostream.h>ihtb=2;intfunC(int*a){b+=*a;return(b);}voidmain(){inta=2,res=2;res+=func(&a);cout<<res;}A、4B、6C、8D、10标准答案:2知识点解析:在函数体语句中的b+=*a;的*是指针运算符(也称间接访问运算符),*a就是main函数中a的值。34、所有在函数中定义的变量,连同形式参数,都属于A、全局变量B、局部变量C、静态变量D、寄存器变量标准答案:2知识点解析:C++语言函数中定义的变量都是属于这个函数的局部变量。35、有如下程序:#include<iostream.h>longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}voidmain(){cout<<fib(3);}该程序的输出结果是A、2B、4C、6D、8标准答案:2知识点解析:fib(3)=fib(2)+fib(1),而fib(1)的返回值为2,fib(1)的返回值也为2,故输出的fib(3)的值为4。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、数据结构分为逻辑结构与存储结构,线性链表属于【】。标准答案:存储结构知识点解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。37、在面向对象方法中,类之间共享属性和操作的机制称为【】。标准答案:继承知识点解析:类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的继承关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使该类型继承了其超类的属性和方法,当然,也可以定义自己的属性和方法。38、耦合和内聚是评价模块独立性的两个主要标准,其中【】反映了模块内务成分之间的联系。标准答案:内聚知识点解析:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量。39、一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于【】的联系。标准答案:一对多(或1:N)知识点解析:两个文体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即一对一(1;1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(M:N)的联系。40、数据库设计分为以下6个设计阶段:需求分析阶段、【】、逻计设计阶段、物理设计阶段、实施阶段、运行和维护阶段。标准答案:数据库概念设计阶段知识点解析:数据库设计分为以下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。四、填空题(本题共8题,每题1.0分,共8分。)41、假设inta=1,b=2;,则表达式(++a/b)*b--的值为【】。标准答案:2知识点解析:运算符++的优先级高于双目运算符/,所以括号中的运算为2/2,最后的结果为2/2*2。42、C++语言提供的基本控制结构可以分为3种类型:顺序结构、【】和循环结构。标准答案:选择结构知识点解析:顺序结构(也叫连续结构)和循环结构是经常被使用的,不过选择结构(if和switch)也是一种重要的流程控制结构。43、C++语句constchar*constp="hello";,所定义的指针p和它所指的内容都不能被【】。标准答案:改变知识点解析:本题考查的是定义常量的关键字const,由const定义的变量的值不可以再改变,所以定义时必须进行初始化。44、C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取【】方式。标准答案:传地址知识点解析:本题考查的是传值调用和传址调用的区别——传值调用只是进行值的简单复制,返回之后不会改变原来的值;而传址调用是把参数的地址传入,会改变原来的值。45、对于下面定义的类MyClass,请在函数f()中添加对象成员把n的值修改为50。classMyClass{public:MyClass(intx){n=x;}voidSetNum(intn1){n=n1;}private:intn;};intf(){MyClass*ptr=newMyClass(45);【】}标准答案:Ptr->SetNum(50);知识点解析:本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“->”。46、继承的方式有公有继承、私有继承和【】种。标准答案:保护继承知识点解析:继承性是面向对象程序设计中最重要的机制,用户可以根据不同的需要选择3种不同的继承方式。47、表达式operator+(x,y)还可以表示为【】。标准答案:x+y知识点解析:本题考查的是运算符函数的调用,可以像一般函数那样用函数名进行调用,也可通过运算符构成表达式的形式进行调用。48、类模板的使用实际上是将类模板实例化成一个具体的【】。标准答案:类知识点解析:本题考查的是类模板的使用方式,就是把类模板的一般化定义实例化为一个真正的类。五、填空题(含2小题)(本题共2题,每题1.0分,共2分。)49、下列程序在构造函数和析构函数中申请和释放类的数据成员int*a,申请时使用形参b初始化a,请填空。classA{public:A(intb);~A();private:int*a;};A∷A(intb){【】}A∷~A(){【】;}标准答案:a=newint(b)deletea知识点解析:C++中new和delete的使用有如下几种:①a=newint;deletea;②a=newint(10);deletea;③a=newint[10];delete[]a;。50、C++语言中的多态性是在编译时通过【】和模板体现的,在运行时是通过【】体现的。标准答案:函数重载虚函数知识点解析:C++中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。国家二级(C++)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及A、数据的存储结构B、计算方法C、数据映象D、逻辑存储标准答案:A知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。2、串的长度是A、串中不同字符的个数B、串中不同字母的个数C、串中所含字符的个数且字符个数大于零D、串中所含字符的个数标准答案:D知识点解析:串的长度指的是串中的字符的个数,且其字符个数可以为零。3、在计算机中,算法是指A、加工方法B、解题方案的准确而完整的描述C、排序方法D、查询方法标准答案:B知识点解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。4、以下不属于对象的基本特点的是A、分类性B、多态性C、继承性D、封装性标准答案:C知识点解析:对象有如下一些基本特点,即标识唯一性、分类性、多态性、封装性和模块独立性。5、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做A、软件投机B、软件危机C、软件工程D、软件产生标准答案:B知识点解析:软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。6、下面不属于软件设计原则的是A、抽象B、模块化C、自底向上D、信息隐蔽标准答案:C知识点解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。7、开发大型软件时,产生困难的根本原因是A、大系统的复杂性B、人员知识不足C、客观世界千变万化D、时间紧、任务重标准答案:A知识点解析:软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件时,要保证高质量,极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格而科学的管理。8、下列SQL语句中,用于修改表结构的是A、ALTERB、CREATEC、UPDATED、INSERT标准答案:A知识点解析:SQL语句中凡创建都用CREATE,删除都用DROP,改变用ALTER,再跟类型和名字,附加子句。9、数据库、数据库系统和数据库管理系统之间的关系是A、数据库包括数据库系统和数据库管理系统B、数据库系统包括数据库和数据库管理系统C、数据库管理系统包括数据库和数据库系统D、三者没有明显的包含关系标准答案:B知识点解析:数据库系统(DataBaseSystem,简称DBS)包括数据库(DataBase,简称DB)、数据库管理系统(DataBaseManagementSystem,简称DBMS)、数据库管理员、硬件和软件。10、关系模型允许定义3类数据约束,下列不属于数据约束的是A、实体完整性约束B、参照完整性约束C、域完整性约束D、用户自定义的完整性约束标准答案:C知识点解析:关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。其中前两种完整性约束由关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。二、选择题(本题共25题,每题1.0分,共25分。)11、下列关于C++语言类的描述中错误的是A、类用于描述事物的属性和对事物的操作B、类与类之间通过封装而具有明确的独立性C、类与类之间必须是平等的关系,不能组成层次结构D、类与类之间可以通过一些方法进行通信和联络标准答案:C知识点解析:C++语言中的类是可以组成层次结构的,类是用于描述事物的属性和对事物的操作,类与类之间有相对的独立性,但其可以通过一些方法进行信息的通信。12、在C++语言中,表示一条语句结束的标号是A、#B、;C、//D、}标准答案:B知识点解析:C++语言中语句的结束符是分号。13、以下叙述中正确的是A、构成C++语言程序的基本单位是类B、可以在一个函数中定义另一个函数C、main()函数必须放在其他函数之前D、所有被调用的函数一定要在调用之前进行定义标准答案:A知识点解析:关于C++语言,我们应该了解以下必须要掌握的基础知识:①c++程序是由类构成的。②一个函数由两部分组成:函数的首部和函数体。③一个类由两部分组成:类成员变量和类成员函数。④一个C++程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或写在一些函数之前,在另一些函数之后)。⑤C++程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。⑥可以用/*……*/和//对C++语言的程序的任何部分作注释。14、已知有定义:constintD=5;inti=1;doublef=0.32;charc=15;则下列选项错误的是A、++i;B、D--;C、c++;D、--f;标准答案:B知识点解析:“++”,“--”运算符不能用于常量。15、以下程序的输出结果是#include<iostream.h>voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];cout<<S;}A、22B、10C、34D、30标准答案:A知识点解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},在执行for循环结构后,将b[6],b[7]……b[9]的值相加,结果为1+2+9+10=22。注意:在计算累加和时,应将累加变量赋值为零。16、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在下画线处应填入的选项是#include<iostream.h>Voidmain(){inti=0,j,k;do{i++;k=316-13*i;}while(____);j=k/11;cout<<"316=13*"<<i<<"+11*"<<j;}A、k/11B、k%11C、k/11=0D、k%11=0标准答案:B知识点解析:do…while语句的一般形式是do{语句}while(表达式);特点是:“直到型”循环结构。先执行一次“语句”,判“表达式”,当“表达式”为非0,再执行“语句”,直到“表达式”的值为0时停止执行语句。在一般情况下,用while和do…while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但当while后面的“表达式”一开始就为“假”时,两种循环的结果不同。这是因为此时while循环的循环不被执行,而do…while循环的循环体被执行一次。本题的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k,当k%11的值为0时,则不必执行循环,将执行j=k/11语句,输出结果,所以该表达式合理的条件是k%11。17、设有数组定义:chararray[]="China";,则数组array所占的空间为A、4个字节B、5个字节C、6个字节D、7个字节标准答案:C知识点解析:在给数组赋值时,可以用一个字符串作为初值,这种方法直观、方便,而且符合人们的习惯。数组array的长度不是5,而是6,这点必须要注意。因为字符串常量的最后由系统加上一个’\0’,因此,上面的初始化与下面的等价:Chararray[]={’C’,’h’,’i’,’n’,’a’,’\0’};18、若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是A、a[p-a]B、*(&a[1])C、p[1]D、a[10]标准答案:D知识点解析:通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。19、以下程序的输出结果是#include<iostream.h>voidmain(){intx=1,y=3;cout<<x++<<",";{intx=0;x+=y*2;cout<<x<<","<<y<<",";}cout<<x<<","<<y;}A、1,6,3,1,3B、1,6,3,6,3C、1,6,3,2,3D、1,7,3,2,3标准答案:C知识点解析:在cout<<x++;语句中,程序先输出x的值,然后再加1,所以结果为1,此时x的值为2;在intx=0;x+=y*2;语句中,将0的值赋给x,然后运算x+=y*2的值,结果为x=6(此时x的值为局部变量),y的值不变,最后执行了x语句后的值,所以应为2。20、函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!=’\0’)num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}A、字符串a的长度B、字符串b的长度C、字符串a和b的长度之差D、字符串a和b的长度之和标准答案:D知识点解析:本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。21、下面程序输出的结果是#include<iostream.h>voidmain(){inti;inta[3][3]={1,2,3,4,5,6,7,8,91;for(i=0;i<3;i++)cout<<a[2-i][i]<<"";}A、159B、753C、357D、591标准答案:B知识点解析:首先,当i=0时,数组中的位置是a[2][0]=7,当然,如果用排除法的话,就不用考虑后面的循环了,因为在4个选项中,第1个数为7的选项只有B)。本题执行第2次循环时,i的值为1,则cout函数中的数组指向为a[1][1]=5,依次循环,可求出答案。22、下面程序的结果为#include<iostream.h>intc;classA{private:inta;staticintb;public:A(){a=0;c=0;}voidseta(){a++;}voidsetb(){b++;}voidsetc(){c++;}voiddisplay(){cout<<a<<""<<b<<""<<c;}};intA::b=0;voidmain(){Aa1,a2;a1.seta();a1.setb();al.setc();a2.seta();a2.setb();a2.setc();a2.display();}A、121B、122C、112D、222标准答案:B知识点解析:C++语言中全局变量是任何函数都可以改变的量,静态变量的有效范围在定义它的类中,而普通的变量的有效性只在使用它的函数中,在本题中c为全局变量,b为静态变量,a为普通变量,b和c在类A的对象a1和s2中都自加1。所以b、c为2,a为1。23、下列描述中哪个是正确的?A、私有派生的子类无法访问父类的成员B、类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的C、私有派生类不能作为基类派生子类D、私有派生类的所有子孙类将无法继续继承该类的成员标准答案:B知识点解析:C++语言中一个派生类能不能继承基类的所有数据成员受继承方式的限制。24、下列关于构造函数说法不正确的是A、构造函数必须与类同名B、构造函数可以省略不写C、构造函数必须有返回值D、在构造函数中可以对类中的成员进行初始化标准答案:C知识点解析:构造函数是一类特殊的函数,其特点是函数名与类同名,没有返回值,也可以省略不写,还可以对类中的成员进行初始化。25、如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是A、一元运算符B、二元运算符C、选项A)和选项B)都可能D、重载错误标准答案:D知识点解析:C++中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,重载二目运算符要有两个参数。26、在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是A、一元成员运算符B、二元成员运算符C、一元友元运算符D、选项B)和选项C)都可能标准答案:D知识点解析:C++语言中用成员函数重载时,重载一目运算符没有参数,重载二日运算符要有一个参数。27、下列关于模板的说法正确的是A、模板的实参在任何时候都可以省略B、类模板与模板类所指的是同一概念C、类模板的参数必须是虚拟类型的D、类模板中的成员函数全部都是模板函数标准答案:D知识点解析:在C++中规定,如果一个类被声明为类模板,那么其中的所有成员函数就都成为了模板函数。28、表示在输出时显示小数位,以及在文件输入时判断文件尾的函数分别是A、showbase()和eof()B、showpoint()和eof()C、showpoint()和bad()D、showpoint()和good()标准答案:B知识点解析:表示在输出时显示小数位,以及在文件输入时判断文件尾的函数分别是showpoint()和eof()。29、下面程序段的运行结果是voidmain(){intt,a,b,C;a=1;b=2;C=2;while(a<b<c){t=a;a=b;b=t;c--;}cout<<a<<","<<b<<","<<C;}A、1,2,0B、2,1,0C、1,2,1D、2,1,1标准答案:A知识点解析:本题中(a<b<c)的运算次序是先算a<b,返回1,再运算1<c,返回1,所以表达式a<b<c的值为1。30、下列程序中下画线处应填入的语句是classBase{public:voidfun(){cout<<"Baseoffun"<<endl;}};classDerived:publicBase{voidfun(){______//显示基类的成员函数funcout<<"Derivedoffun"<<endl;}};A、fun();B、Base.fun();C、Base::fun();D、Base->fun();标准答案:C知识点解析:如果在子类中要访问父类的函数应用“::”运算符。31、若定义intk=7,x=12;,则能使值为3的表达式是A、x%=(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、(x%=k)-(k%=5)标准答案:D知识点解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是x%=k等价于x=x%k。32、在位运算中,操作数每右移一位,其结果相当于A、操作数乘以2B、操作数除以2C、操作数乘以4D、操作数除以4标准答案:B知识点解析:右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:设a=15,a>>2表示把000001111右移为00000011(十进制3)。33、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把节点b连接到节点a之后的语句是structnode{chardata;stmctnode*next;}a,b,*p=&a,*q=&b;A、a.next=q;B、p.next=&b;C、p->next=&b;D、(*p).next=q;标准答案:B知识点解析:要把节点b连接到节点a之后,必须把b的地址给a的next指针,选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址,所以正确。34、一个类的友元函数能够访问该类的A、私有成员B、保护成员C、公有成员D、所有成员标准答案:D知识点解析:一个类的友元函数对类成员的访问能力等同于类的成员函数,即能访问类的所有成员。3

温馨提示

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

评论

0/150

提交评论