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

下载本文档

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

文档简介

国家二级(C++)笔试模拟试卷9(共9套)(共442题)国家二级(C++)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列关于线性表、栈和队列的叙述,错误的是A、线性表是给定的n(n必须大于零)个元素组成的序列B、线性表允许在表的任何位置进行插入和删除操作C、栈只允许在一端进行插入和删除操作D、队列允许在一端进行插入在另一端进行删除标准答案:A知识点解析:线性表的插入和删除允许在任何位置进行,所以B选项的说法是正确的;栈的操作只允许在栈顶进行,因此,栈称为先进后出表(FILO,FirstInLastOut),或“后进先出”表(LIFO,LastInFirstOut),所以C选项说法也是正确的;队列(queue)是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),因此队列亦称作先进先出(FIFO,FirstInFirstOut)的线性表,或后进后出(LILO,LastInLastOut)的线性表。所以D选项说法也是正确的。2、串的长度是A、串中不同字符的个数B、串中不同字母的个数C、串中所含字符的个数且字符个数大于零D、串中所含字符的个数标准答案:D知识点解析:串的长度指的是串中的字符的个数,且其字符个数可以为零。3、用数组表示线性表的优点是A、便于插入和删除操作B、便于随机存取C、可以动态地分配存储空间D、不需要占用一片相邻的存储空间标准答案:B知识点解析:对顺序存储的线性表进行插入和删除操作时,需要移动大量的元素,因此不便于进行插入删除操作,A选项错误;数组的存储空间大小一开始就已经分配好,不能动态分配存储空间,所以C选项错误;数组正是占用一片相邻的存储空间,所以D选项也错误。4、软件工程的理论和技术性研究的内容主要包括软件开发技术和A、消除软件危机B、软件工程管理C、程序设计自动化D、实现软件可重用标准答案:B知识点解析:软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。5、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作A、软件投机B、软件危机C、软件工程D、软件产生标准答案:B知识点解析:将开发软件所需高成本和产品的低质量之间有着尖锐的矛盾称作软件危机。6、软件开发的结构化生命周期方法将软件生命周期划分成A、定义、开发、运行维护B、设计阶段、编程阶段、测试阶段C、总体设计、详细设计、编程调试D、需求分析、功能定义、系统设计标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。7、数据处理的最小单位是A、数据B、数据元素C、数据项D、数据结构标准答案:C知识点解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C。8、下列SQL语句中,用于修改表结构的是A、ALTERB、CREATEC、UPDATED、INSERT标准答案:A知识点解析:SQL,语句中凡创建都用CREATE,删除都用DROP,改变用ALTER,再跟类型和名字,附加子句。9、面向对象的程序设计主要考虑的是提高软件的A、可靠性B、可重用性C、可移植性D、可修改性标准答案:B知识点解析:对于A项,可靠性,没有这种说法;对于C项,可移植性,与设计的方法无关,而是与软硬件环境有关;对于D选项,可修改性,不是面向对象程序设计的主要目的。所以A选项、C选项和D选项都是错误的。10、数据库系统的核心是A、数据库B、数据库管理系统C、模拟模型D、软件工程标准答案:B知识点解析:数据库管理系统(DatabaseManagementSystem,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。二、选择题(本题共25题,每题1.0分,共25分。)11、关于常成员函数,下列说法中错误的是A、常成员函数无法更新对象的数据成员,但可以访问其他类的公用数据成员或全局变量B、常成员函数无法更新对象的数据成员,但是可以更新该对象的常数据成员C、常成员函数既可以被常对象调用,也可以被一般对象调用D、常成员函数不仅要在声明中用到const修饰符,在定义时也必须使用const修饰符标准答案:B知识点解析:本题考察const修饰符的使用规则,只要考生理解了const表示“常”的意思就容易举一反三。根据被修饰内容的不同,const在修饰数据成员,成员函数和对象时,具有特定的含义。很明显,常数据成员是不能被修改的,这一点在选项B中被破坏,因此可以确定本题答案为B,如果考生对其他选项难于区分,同样可以得到正确答案。12、解决类继承中产生的二义性的方法不包括A、使用作用域运算符限定访问的成员函数B、在派生类中定义同名函数,且参数表必须和基类的保持一致C、在派生类中定义同名函数,且参数表可以和基类的不同D、采用虚基类解决多重继承中的共同基类产生的二义性标准答案:C知识点解析:继承中的二义性主要表现在多重继承中具有多条继承路径时,派生类中行为的不确定性。如果强制指定了按照某条路径访问,亦即采用域作用符限定访问的成员函数的方法可以解决之,故选项A排除。在选项B和C中,唯一的区别在于参数表是否一致,我们知道:参数表不一致同名函数属于重载,是不存在二义性问题的,故选项C是正确答案。关于选项D,虚基类是C++中解决二义性的一种有效手段。13、一个类的友元函数能够访问该类的A、私有成员B、保护成员C、公用成员D、所有成员标准答案:D知识点解析:在一个类的内部声明,并用friend修饰的函数称为该类的友员函数,友员函数可以像成员函数一样,访问类的所有级别的成员。友员机制主要用于提高访问效率,但是破坏了类的封装性原则。在程序中适当使用友员函数,并寻求封装和效率之间的一个平衡点,是使用友员技术的一个主要内容。14、执行下列语句后,输出结果为steven的是char*str="steven";eout.write(str,);A、strlen(str)B、sizeof(str)C、strlen(str+1)D、sizeof(str-1)标准答案:A知识点解析:本题考察在C++中,字符串的存放方式,以及不同的字符串函数的作用。其中,strlen是专门用于求字符串长度的,其自动去掉字符数组后面的那个‘\0’,而sizeof后面求的则是str指针,指针在目前的32位机器中是固定大小的,其值与字符串的长度是没有关系的。故可以排除B和D。而选项C则将‘\0’多考虑了一次。15、对于拷贝构造函数和赋值操作的关系,正确的是A、拷贝构造函数和赋值操作是完全一样的操作B、进行赋值操作时,会调用类的构造函数C、当调用拷贝构造函数时,类的对象正在被建立并被初始化D、拷贝构造函数和赋值操作不能在同一个类中被同时定义标准答案:C知识点解析:在赋值操作中,将发生对象的拷贝操作,但并不说明两者是完全一样的。一般情况下,如果给类定义了赋值操作符,则应该同时定义合适的拷贝构造函数,除非系统默认生成的拷贝构造函数满足赋值操作。实际上,系统默认的拷贝构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用中,这么简单的对应关系是不适用的,这就需要程序员重新定义拷贝构造函数。16、下面描述中体现了抽象类特性的语句是A、可以说明虚函数B、可以进行构造函数重载C、可以定义友元函数D、不能定义对象标准答案:D知识点解析:抽象类指的是类中至少有一个纯虚函数,纯虚函数是虚函数后有“=0”修饰,表示该函数在本级类中没有实现,类仅用于派生。抽象类存在的唯一目的就是构造类层次,派生出其他类。抽象类与其他类的最大区别就在于抽象类不能实例化。17、下面说法正确的是A、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B、内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C、类的内联函数必须在类体内定义D、类的内联函数必须在类体外通过加关键字inline定义标准答案:B知识点解析:内联函数用inline修饰,用于取代C语言中的宏定义。Inline是个建议机制而不是强制机制,也就是说,程序员可以指定任意函数为inline函数,但是编译器会根据系统情况来决定是否将其inline处理。对于较大的函数,编译器往往会取消其inline特性。Inline函数的特点之一就是执行速度快,他实质是在编译时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场等开销,提高了效率。在类体内定义的成员函数,自动被编译器当做内联函数处理,在类体外定义的成员函数,如果用inline修饰,编译器也认为是一种内联建议。18、已知一个运行正常的程序中有下面两个语句:int*p1,p2&a;p1=b;由此可知,变量a和b的类型分别是A、int和intB、int*和intC、int和int*D、int*和int*标准答案:C知识点解析:本题乍一看让人迷惑,如果找到切入点就可以简单快速的解答本题。观察四个选项可知,变量a和b的四种组合分别是四个选项。很明显指针在做值使用时需要加星号修饰,即如*p1=整数变量的形式。故b不可能是int型,故可排除A和B。另外需要注意的是变量的初始化和赋值是不同的。P2在声明时就指向变量a,其值为a的地址。因此,变量a应为:int型,故正确答案为C。19、以下说法中错误的是A、strcpy(A,B)函数是将A字符串的内容复制到B字符串中B、strlen(cha*s)返回字符串S的长度,未尾的字符不计算在内C、chara[20]="string";中字符串长度为6D、strstr(S1,S2)函数在字符串S1中从左边开始查找字符串S2,若查找成功则返回S2在S1中首次出现的位置,否则返回NULL,如果S2为"",则返回S1。标准答案:A知识点解析:strcpy()函数的一般形式为:strcpy(to,from),该函数将from字符串中的内容复制到to字符串中,故A项错误。20、下列关于虚函数与函数重载区别的叙述中不正确的是A、函数说明形式上不同B、函数重载允许是非成员函数,虚函数只能是成员函数C、函数重载的调用依据参数和类型的差别,虚函数则依据对象D、函数重载的本体可以在类外定义,虚函数不可以标准答案:D知识点解析:A项,B项,C项均为虚函数与函数重载的不同之处。但有一点它们是相同的:在类内外定义均可。故D项错误。21、请阅读以下程序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。22、以下程序的输出结果是main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}cout<<a<<endl;}A、21B、32C、33D、11标准答案:B知识点解析:本题是两个循环语句和一个判断语句的嵌套。For循环的作用是在i等于10的时候跳出循环。本题的答案为B。23、以下程序的功能是按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){cin>>score;sum+=score;}ave=sum/4.0;cout<<"NO"<<n<<":"<<ave<<endl;}}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是A、sum=0.0B、sum+=scoreC、ave=sun/4.0D、cout<<"N0"<<n<<":"<<ave<<endl;标准答案:A知识点解析:本题编译没有错误,但是执行结果确实错误的。错误原因在于第一个考生的乘积输入完之后,sun的值并没有被清空,接着累加第二个考生的分数,随后进行四门平均是错误的。所以需要内层循环和平均值计算完毕后进行sum的清空。24、执行语句序列ofstreamoutfile(“DATE.DAT”);if(…)cout<<"OK";elsecout<<"FAIL"后,如果文件打开成功,显示“OK”,否则显示"FAIL"。由此可知,上面if语句…处的表达式是:A、outfile.fail()或outfileB、outfile.good()或outfileC、outfile.good()或!outfileD、outfile.fail()或!outfile标准答案:B知识点解析:本题考查文件流状态判断函数。good()表示刚进行的操作成功时返回true,否则返回false。fail()与good()相反,fail()表示刚进行的操作失败时返回true,否则返回false。本题中流对象为outfile,则if(!outfile)等同于if(outfile.fail()),if(outfile)等同于if(outfile.good)。由上述可知正确答案为B项。25、有如下程序main(){intn[5]={0,0,0},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;cout<<n[k]<<endl;}该程序的输出结果是A、不定值B、2C、1D、0标准答案:D知识点解析:本题中的for循环只是起到混淆视听的效果,对结果并没有任何影响。26、下列关于虚基类的描述中错误的是A、虚基类子对象的初始化由最派生类完成B、虚基类子对象的初始化次数与虚基类下面的派生类个数有关C、设置虚基类的目的是消除二义性D、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用标准答案:B知识点解析:虚基类主要是为了消除在多重继承中的二义性问题。虚基类对象的初始化次数只于对象的多少有关,与类的层次结构是没有关系的。故本题正确答案为B。27、在某类的公共部分有声明stringoperator++();和stringoperator++(int);则说明A、stringoperator++();是前置自增运算符声明B、string()perator++();是后置自增运算符声明C、stringoperator++(int);是前置自增运算符声明D、两条语句无区别标准答案:A知识点解析:在重载单操作符的过程中,++既可以是前缀运算符,又可以是后缀运算符,C++规定重载后缀++时必须多一个虚拟参数int,则不带虚拟参数int的为前缀运算符。28、已知类X成功地重载了--、+、=、[]这几个运算符。则其中肯定属于成员函数的运算符是:A、前置--和[]B、=和[]C、[]和后置--D、+和=标准答案:B知识点解析:赋值运算符=和运算符[]只能作为成员函数重载,而--,+则没有限止。29、设有charstr[80];以下不能将输入数据first\nsecond\n<CR>读取到数组str中的语句是A、cin.get(str,strlen(str));B、cin.getline(str,strlen(str));C、cin>>str;D、cin.read(str,strlen(str));标准答案:B知识点解析:本题考察C++中输入输出流对象的一些常用成员函数的用法。其中get和getline的区别在于getline读取中以"\n"作为输入结束符。故本题中getline只能接收第一个换行符之前的字符,即first。后面的字符被丢弃。因此正确答案应为B。30、下列能对对象进行初始化的是A、构造函数B、析构函数C、友元函数D、静态成员函数标准答案:A知识点解析:对象的初始化工作由构造函数来完成,析构函数则完成对象销毁前的资源回收等工作。静态成员函数为同一类中所有对象所共享。31、控制格式输入/输出的操作子中,设置域宽的函数是A、wsB、octC、setfill(int)D、setw(int)标准答案:D知识点解析:本题需要考生记忆一些输入输出控制操作子,oct为八进制,setfill为设置填充符,setw为设置域宽。32、下列不能作为类的成员的是A、自身类对象的指针B、自身类对象C、数组D、另一个类的对象标准答案:B知识点解析:类的数据成员可以是任意类型,包括整型,浮点型、字符型、数组、指针和引用,也可以是类自身的指针,另一个类的对象,但不能是类自身的对象,故B项是错误的。33、设置虚基类的目的是A、简化程序B、消除二义性C、提高程序运行效率D、减少目标代码标准答案:B知识点解析:虚基类的目标就是要消除二义性。34、下列描述中正确的是A、类中可以定义与类名相同的数据成员B、直接子类中可以定义与父类名相同的数据成员C、孙子类中可以定义与爷爷类名相同的数据成员。D、类的所有子孙中都不可以定义与该类同名的数据成员。标准答案:C知识点解析:本题所有选项中均提到了同名数据成员的现象。是否允许同名数据成员存在,关键要看这种同名现象编译器是否能够判断出来,如果可以判断,则是允许的,否则则是禁止的。35、要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用A、重载函数B、内联函数C、静态函数D、虚函数标准答案:B知识点解析:内联inline函数就是取代宏定义的,在编译时展开,插入到相应的位置,从而减少了系统开销,加快了执行速度。虚函数则是为了取消二义性现象,静态函数则是一个类所有对象的共享函数。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、设一棵二叉树的中序遍历结果为ABCDEFG,前序遍历结果为DBACFEG,则后序遍历结果为______。标准答案:ACBEGFD知识点解析:由于在前序遍历中首先访问根结点,因此,前序序列中的第一个结点为二叉树的根结点,即D为二叉树的根结点。又由于在中序遍历中访问根结点的次序为居中,而访问左子树上的结点为居先,访问右子树上的结点为最后,因此,在中序序列中,以根结点(D)为分界线,前面的子序列(ABC)一定在左子树中,后面的子序列(EFG)一定在右子树中。同样的道理,对于已经划分出的每一个子序列的所有结点中,位于前序序列最前面的一个结点为子树的根结点,而在中序序列中位于该根结点前面的结点构成左子树上的结点子序列,位于该根结点后面的结点构成右子树上的结点子序列。这个处理过程直到所有子序列为空为止。根据上述道理,该二叉树恢复的过程如下图所示:根据后序遍历的方法,对该二叉树后序遍历的结果为ACBEGFD。37、在面向对象方法中,属性与操作相似的一组对象称为______。标准答案:类知识点解析:在面向对象方法中,类描述的是具有相似性质的一组对象。因此,属性与操作相似的一组对象称为类。38、在结构化设计方法中,数据流图表达了问题中的数据流与加工之间的关系,并且,每一个______实际上对应一个处理模块。标准答案:加工知识点解析:SD方法实际上是面向数据流图的,即它的工作对象实际上是在SA方法中形成的数据流图。因此,可以由数据流图来导出结构图。另外,由数据流图导出结构图的关键是找出中心加工,而每个加工则对应一个处理模块。39、软件概要设计的成果是______。标准答案:软件设计说明书知识点解析:软件生命周期各个阶段都有阶段成果,软件设计说明书是软件概要设计阶段的成果。40、在数据库的外模式、模式和内模式3级模式的体系结构中,存在两级映射:外模式到模式的映射定义了外模式与模式之间的对应关系;模式到内模式的映射定义了数据库的逻辑结构与______之间的对应关系。标准答案:物理结构知识点解析:模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述;内模式也称存储模式或数据库模式,它是数据物理结构和存储结构的描述。四、填空题(本题共10题,每题1.0分,共10分。)41、为了表明一个函数不带返回值,应在定义函数时指定该函数类型为______。标准答案:void知识点解析:void表明该函数不带返回值,如果没有void,则系统会返回一个默认类型的随机值,这对程序可能造成不必要的问题。42、下列程序如果去掉for循环外围的大括号对,则会出现编译错误。错误原因是______。#include<iostream.h>inta=5;voidmain(){inta=10,b=20;cout<<a<<","<<b<<endl;{inta=0,b=0;for(inti=1;i<8;i++){a+=i;b+=a;}cout<<a<<","<<b<<","<<::a<<endl;}cout<<a<<","<<b<<endl;}标准答案:a,b重定义知识点解析:在本题中for循环外围的大括号对没有实质含义,仅用于函数的作用域范围。如果去掉该括号,编译错误就会发生,因为变量a,b出现了重定义错误。43、有以下程序#include<iostream>usingnamespacestd;longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn2;}intmain(){cout<<fib(3)<<endl;return0;}则该程序的输出结果应该是______。标准答案:4知识点解析:本题主要考查C++中递归函数,主函数通过调用fib()函数,fib()函数的内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用。主函数通过实参将值3赋给fib()函数的形参n,由于n=3满足if分支语句条件,因此函数进行递归调用,即计算fib(2)和fib(1)的值;将2赋给fib()函数的形参后,由于n=2不满足if语句条件,因此程序退出递归,返回2;将1赋给fib()函数的形参后,函数同样返回2。因此函数递归调用的最终结果为返回2+2=4,即fib(3)=4,程序最后输出值为4。44、下列程序不能通过编译,应该在划线部分填写的语句是______。#include<iostream.h>#include<stdlib.h>doubleFunc(inta,intb,charch){doublex;switch(ch){case’+’:x=double(a)+b;break;case’-’:x=double(a)-b;break;case’*’:x=double(a)*b;break;case’/’:if(B)x=double(a)/b;elseexit(1);break;default:exit(1);}______}voidmain(){cout<<Func(32,6,’-’)<<",";cout<<Func(32,6,’*’)<<",";cout<<Func(32,6,’/’)<<endl;}标准答案:returnx;知识点解析:本题函数声明时指定了函数的返回值为double,因此在函数体中必须存在一个return语句。45、根据下面的主程序,完成类的一种构造函数的最简单形式。#include<iostream.h>classbase{private:intnum;public:______;};voidmain(){basetry(6);}标准答案:[10]base(intn){}知识点解析:注意,根据main函数中对类base的使用情况可知,base类必须提供整型单参构造函数,同时要求构造其最简单的形式,故函数体为空。46、下列程序的执行结果为______。#include<iostream.h>intf(inti){return++i;}intg(int&i){return++i;}voidmain(){inta,b;a=b=0;a+=f(g(a));b+=f(f(b));cout<<"a="<<a<<",b="<<b<<endl;}标准答案:a=3,b=2知识点解析:本题考查函数间引用传递的知识点。g(a)执行之后,返回值为1,a也变为1,这就是引用传递的特点。然后执行f(1),返回值为2,此时a=2+1,故a此时为3。由于f(b)不具有引用传递的特征,因此,执行后b=0+2,结果为2。47、下列程序的运行结果是______。#include<iostream.h>classA{public:virtualvoiduse(){cout<<"inA\n";}};classB:publicA{public:virtualvoiduse(){cout<<"inB\n";}};classC:publicB{public:virtualvoiduse(){cout<<"inC\n";}};voidmain(){A*obj;obj=newC;obj->use();deleteobj;}标准答案:inC知识点解析:本题考查虚函数和多态性。原本obj指向祖先类,随后被赋值,指向新的子孙类,则在使用use这个重载的虚函数时,根据当前指向可确定调用子孙的同名虚函数。48、完成下列类的构造函数,初始化语句为______。#include<iostream.h>classTest{private:intx,y;public:voidTest(intinitx,intinity){______}voidprintx(){cout<<x<<"-"<<y<<"="<<x-y;}};voidmain(){Testx(300,200);x.printx();}标准答案:x=initx;y=inity;知识点解析:本题考查的是类的私有数据如何从接口成员函数那里得到数据的。本题虽然简单,却体现了类的数据封装思想,并指明了如何完成这种封装。49、根据下列程序的执行结果,可以断定划线部分的修饰符应为______。执行结果:i9afootballiscreated.afootballiscreated.i=10afootballisdestroyed.afootballiscreated.i=20afootballisdestroyed.afootballisdestroyed.源程序:#include<iostream.h>classFootball{public:Football(){cout<<"afootballiscreated."<<endl;}~Football(){tout<<"afootballisdestroyed."<<endl;}};voidfunc(inti){______Footballf1;Footballf2;cout<<"i="<<i<<endl;}voidmain(){func(10);func(20);}标准答案:static知识点解析:观察一下输出中对象的构造函数和析构函数的执行次数可以看出,再次进入时某对象没有被构造,亦即该对象在func执行后没有被销毁,再次进入时则不需要重构,可以体现这种功能的标识符只有static。50、下列程序的输出结果为2,请将程序补充完整。#inelude<iostream.h>usingnamespacestd;classBase{public:______voidfun(){cout<<1;}};classDerived:publicBase{pbulic:voidfubn(){cout<<2;}};intmain(){Base*P=newDerived;P→fun();deleteP;return0;}标准答案:virtual知识点解析:本题考查虚函数的概念。在C++中,一个基类的指针可以用于指向它的派生类对象。而且通过这样的指针调用虚函数时,被调用的是该指针实际指向的对象类的那个重定义版本。在本题中,通过对象指针P调用的是派生类中重定的。fun函数,那么基类中的fun只有是虚函数才能满足要求。国家二级(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、任意存取的存储结构、任意存取的存储结构标准答案:2知识点解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(a(下标)i)=LOC(a(下标)1)+(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\0fghjik\0";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’,作为字符的结束标志,在本题中,chara[]=“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>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;iA、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、constructAdestructAB、constructAconstructAdestructAdestructAC、constructAconstructAconstructAdestructAdestructAdestructAD、constructAonstructAconstructAconstructAdestructAdestructAdestructAdestructA标准答案: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为:operator++(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;cout<<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),fun(15,-6)=9。29、下列程序的运行结果是#include<iostream.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>intb=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(2)的返回值为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(intnl){n=nl;}private:intn;};intf(){MyClass*ptr=newMyClass(45);【】}标准答案:ptr->SetNum(50);知识点解析:本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“->”。46、继承的方式有公有继承、私有继承和【】3种。标准答案:保护继承知识点解析:继承性是面向对象程序设计中最重要的机制,用户可以根据不同的需要选择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、在深度为5的满二叉树中,叶子节点的个数为A、32B、31C、16D、15标准答案:B知识点解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有节点都有两个叶子节点。这就是说,在满二叉树中,层上的节点数都达到最大值,即在满二叉树的第k层上有2k-1个节点,且深度为m的满二叉树有2m-1个节点。2、若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的节点访问顺序是A、bdgcefhaB、gdbecfhaC、bdgaechfD、gdbehfca标准答案:D知识点解析:前序遍历的第一个节点a为树的根节点;中序遍历中a的左边的节点为a的左子树,a右边的节点为a的右子树;再分别对a的左右子树进行上述两步处理,直到每个节点都找到正确的位置。3、一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用A、栈B、堆C、数组D、链表标准答案:A知识点解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出的关系,而栈结构正适合来存储这些调用点。4、软件工程的理论和技术性研究的内容主要包括软件开发技术和A、消除软件危机B、软件工程管理C、程序设计自动化D、实现软件可重用标准答案:B知识点解析:软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。5、开发软件时对提高开发人员工作效率至关重要的是A、操作系统的资源管理功能B、先进的软件开发工具和环境C、程序人员的数量D、计算机的并行处理能力标准答案:B知识点解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。6、在软件测试设计中,软件测试的主要目的是A、实验性运行软件B、证明软件正确C、找出软件中的全部错误D、发现软件错误而执行程序标准答案:D知识点解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。7、数据处理的最小单位是A、数据B、数据元素C、数据项D、数据结构标准答案:C知识点解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。8、索引属于A、模式B、内模式C、外模式D、概念模式标准答案:B知识点解析:内模式(InternalSchema)又称物理模式(PhysicalSchema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。9、下述关于数据库系统的叙述中正确的是A、数据库系统减少了数据冗余B、数据库系统避免了一切冗余C、数据库系统中数据的一致性是指数据类型一致D、数据库系统比文件系统能管理更多的数据标准答案:A知识点解析:数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。10、数据库系统的核心是A、数据库B、数据库管理系统C、模拟模型D、软件工程标准答案:B知识点解析:数据库管理系统(DataBaseManagementSystem,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。二、选择题(本题共25题,每题1.0分,共25分。)11、下面关于C++语言的描述错误的是A、C++语言支持数据封装B、C++语言中引入友元,没有破坏封装性C、C++语言允许函数名和运算符重载D、C++语言支持动态联编标准答案:B知识点解析:数据封装就是数据抽象;友元可以访问类中的所有成员,是面向对象的一个重要特征,但是破坏了封装性;重载和动态联编都是面向对象的另一个特点——多态性。12、设有定义inta=1;floatf=1.2;charc=’a’;,则下列表示错误的是A、++a;B、f--;C、c++;D、8++;标准答案:D知识点解析:++、--运算符不能用于常量表达式。13、下列程序的运行结果为#include<iostream.h>voidmain(){inta=2;intb=a+1;cout<<a/b<<endl;}A、0.66667B、0C、0.7D、0.66666666…标准答案:B知识点解析:表达式值的类型是由操作数的类型决定的,因为本题的两个数都是int型的,所以得出的结果也为int型,即去掉小数点后的部分,只取商的整数部分。14、设inta=1,b=2;,则(a++)+b和a+++b这两个表达式的值分别为A、3,3B、3,4C、4,3D、4,4标准答案:A知识点解析:单目的什运算优先级高于双目的+运算,不过抖的结合性是自右向左的,而+是自左向右的,所以上面的两个表达式都是先计算a+b的值之后,a再自加1。15、下面程序的运行结果为#include<iostream.h>voidmain(){chara=’3’;switch(a){case’3’:cout<<"3";case’2’:cout<<"2";break;default:cout<<"1";}}A、3B、321C、31D、32标准答案:D知识点解析:本题主要考查的是switch语句的使用,在第一个case处,因为满足条件所以输出字符3,但这个分支没有break语句终止,所以会继续执行下面的分支语句,即输出字符2,这时出现break语句,结束整个语句,即输出32。16、有如下数组声明:intnum[10];,下标值引用错误的是A、num[10]B、num[5]C、num[3]D、num[0]标准答案:A知识点解析:数组定义中的数字指的是数组的大小,而下标是从0开始的,所以题中数组的最后一个元素是num[9]。17、存在定义inta[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的?A、x=*pa;B、x=*(a+1);C、x=*(pa+1);D、x=*[1];标准答案:A知识点解析:本题考查的是数组和指向数组的指针之间的关系,选项A)中x是被数组a的第一个元素赋值,其余的都是被数组a的第二个元素赋值。18、下面程序的运行结果为#include<iostream.h>voidswap(int&a,intb){inttemp;temp=a++;a=b;b=temp;}voidmain()inta=2,b=3;swap(a,b);cout<<a<<","<<b<<endl;}A、2,3B、3,2C、2,2D、3,3标准答案:D知识点解析:本题考查的是引用调用,因为函数swap引用调用参数a,所以在swap函数中a的变化会改变主函数中a的值,即a自加1,但b的值并未改变。19、一个函数功能不太复杂但要求被频繁调用,应选用A、内联函数B、重载函数C、递归函数D、嵌套函数标准答案:A知识点解析:本题考查的是内联函数的使用,它的引入是为了解决程序中函数调用的效率问题,在编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来替换。20、下面关于C++语言变量的叙述错误的是A、C++语言中变量分为auto、static、extern和register4种存储类型B、自动变量和外部变量的作用域为整个程序C、内部静态变量的作用域是定义它的函数D、外部静态变量的作用域是定义它的文件标准答案:B知识点解析:自动变量是函数体或分程序内定义的变量,它的作用域在所定义的函数体内或分程序体内。21、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为A、publicB、protectedC、privateD、static标准答案:A知识点解析:本题考查点为类成员的访问权限,public关键字修饰的类成员可以被类的对象通过成员操作符“.”直接访问,protected和private则不能,而static不能单独修饰类的成员。22、在C++语言程序中,对象之间的相互通信通过A、继承实现B、调用成员函数实现C、封装实现D、函数重载实现标准答案:B知识点解析:对象属于某个已知的类,是类的实例,对象之间通信实际上就是通过函数传递信息,封装是把数据和操作结合在一起,继承是对于类的方法的改变和补充,重载是多态性之一。23、类的析构函数是在什么时候调用的?A、类创建时B、创建对象时C、删除对象时D、不自动调用标准答案:C知识点解析:析构函数可以被函数调用,也可以系统调用:函数体内的对象在函数结束时调用析构函数和使用delete释放对象所占有用的资源。24、通常拷贝构造函数的参数是A、某个对象名B、某个对象的成员名C、某个对象的引用名D、某个对象的指针名标准答案:C知识点解析:复制初始化构造函数的作用是用一个已知的对象来初始化一个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。25、下面程序的运行结果为#include<iostream.h>ClassAstaticintn;public:A(){n=1;}A(intnum){n=num;}voidprint(){cout<<n;}};intA::n=2;voidmain(){Aa,b(3);a.print();b.print();cout<<endl;}A、11B、13C、23D、33标准答案:D知识点解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个)。26、下列不是描述类的成员函数的是A、构造函数B、析构函数C、友元函数D、复制构造函数标准答案:C知识点解析:友元函数是独立于当前类的外部函数,但它可以访问该类的所有对象的成员;拷贝构造函数是使用已存在的对象初始化正在生成的对象时调用的成员函数。27、继承机制的作用是A、信息隐藏B、数据封装C、定义新类D、数据抽象标准答案:C知识点解析:数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。28、C++语言类体系中,不能被

温馨提示

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

评论

0/150

提交评论