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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷19(共9套)(共217题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共23题,每题1.0分,共23分。)1、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9;eout<<“Thevalueatp:”<<*p;retum0:编译运行程序将出现的情况是()。A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:Thevalueatp:9C、运行时一定输出:Thevalueatp:*9D、运行时有可能出错标准答案:D知识点解析:先定义指针变量,然后给指针变量赋初值有三种情况:①用取地址运算符“&”将变量地址赋给指针变量,如p=&a;②将一个指针变量中的地址赋给另一个指针变量,如p=p1;③给指针变量赋空值0,如q=0,表示该指针变量不指向任何变量。而不能用一个常量给指针变量赋初值,所以本题选D。2、下列叙述中正确的是()。A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:栈是“先进后出”,队列“是先进先出”。栈和队列都是一种线性表,属于线性结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。采用链式存储结构的线性表称之为线性链表。3、在深度为7的满二叉树中,叶子结点的个数为()。A、32B、31C、64D、63标准答案:C知识点解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。对于深度为7的满二叉树,叶子结点所在的是第7层,一共有27-1=64个叶子结点。全部结点共27-1=127个。4、下列描述中,不符合良好程序设计风格要求的是()。A、程序的效率第一,清晰第二B、程序的可读性好C、程序中要有必要的注释D、输入数据前要有提示信息标准答案:A知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。5、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件的生命周期描述了软件从产生到最终消亡的全过程,生命岗期中的活动包括需求分析、软件设计(分为概要设计和详细设计)、软件实现、软件测试和软件维护,不包括市场调研。6、下i面程序输出的结果为()。#include<iostream.h>voidfun(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=1;n=2:fun(m,n);cout<<m<<’’’’<<n<<end1:}A、12B、21C、22D、程序有错误标准答案:A知识点解析:函数fun中定义的参数a和b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内存空间,结束后,形参所占有的内存单元也被释放。并且函数fun没有返回值,它做的交换操作,并不能影响实际参数m和n。所以输出值保持不变,仍然是1和2,即输出:12。7、在E―R图中,用来表示实体联系的图形是()。A、椭圆形B、矩形C、菱形D、三角形标准答案:C知识点解析:在E―R图中实体集用矩形,属性用椭圆,联系用菱形。8、用树形结构表示实体之间联系的模型是()。A、关系模型B、网状模型C、层次模型D、以上三个都是标准答案:C知识点解析:层次模型的基本结构是树形结构,这种结构方式在现实世界中很普遍,它们自顶向下、层次分明。9、如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为()。A、x.operator++(0).operator*(y)B、operator*(x.operator++(0),y)C、y.operator*(operator++(x,0))D、operator*(operator++(x,0),y)标准答案:C知识点解析:运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即y.opemtor*(z)或者operator*(y,z);另一种是通过运算符构成表达式,即y*z。因为“++”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀“++”时必须多一个虚拟参数:int。10、下列符号中,正确的C++标识符是()。A、enumB、100bitC、s-1D、_int标准答案:D知识点解析:此题考查的是c++语言中标识符的概念。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。11、下列字符串中,正确的C++标识符是()。A、foo—1B、2bC、newD、_256标准答案:D知识点解析:此题考查的是C++语言中标识符的定义。标识符由字母、数字或下划线构成,但第一个字符必须是字母或下划线;标识符中大小写字母是不同的;用户定义标识符时,不允许采用系统的关键字。12、下列叙述中,错误的是()。A、false是一个逻辑型常量B、’’b’’是一个字符型常量C、365是一个int常量D、3.1415926是一个double常量标准答案:B知识点解析:字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个字符。或者以“\”开头的包括多个字符的字符序列也符合规定的字符常量。13、在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是()。A、+B、()C、<<D、++标准答案:B知识点解析:本题考查重载运算符,C++规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选B。14、数据库设计中反映用户对数据要求的模式是A、内模式B、概念模式C、外模式D、设计模式标准答案:C知识点解析:概念模式,是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(DataDescriptionLanguage,DDL)来描述、定义的,体现、反映了数据库系统的整体观。外模式,对应于用户级,它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,也称为子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它反映了用户对数据的要求。包含模式中允许特定用户使用的那部分数据,用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(DataManipulationLanguage,DML)对这些数据记录进行描述。内模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。15、有如下程序段:inti=5;while(inti=0){cout<<’*’;i--;}运行时输出“*”的个数是()。A、0+B、1C、5D、无穷标准答案:A知识点解析:因为while循环中,因为i的值等于0,所以while循环体一次也不执行。因而运行时输出“*”,的个数是0。16、有如下程序:#includeusingnamespacestd;classCl{public:~4210{cout<<1;}};classC2:publicC1{public:~C2(){cout<<2;}};intmain(){C2cb2;C1*cb1;return0;}运行时的输出结果是()。A、121B、21C、211D、12标准答案:B知识点解析:在主函数中定义C2类的对象,当程序结束时,首先调用C2类的析构函数~C2,输出2,再调用C1类的析构函数~C1,输出1。所以程序运行的结果就是21。17、下列关于函数重载的叙述中,错误的是()。A、重载函数的参数个数可以不同B、重载函数的参数类型可以不同C、重载函数的返回值类型必须不同D、重载函数的参数个数或参数类型必须有所不同标准答案:C知识点解析:两个或两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪个函数,这就是函数的重载。18、有如下程序:#inc1ude<iostream>#inc1ude<cstring>.usingnamespacestd;classXCD{char*a:intb:public:XCD(char*aa,intbb){a=newchar[strlen(aa)+1];strcpy(a,aa),b=bb;}char*Geta(){returna;}intGetb(){returnb;}};intmain(){char*p1="abcd",*p2="weirong";intd1=6,d2=8;XCDx(p1,d1),y(p2,d2);cout<<strlen(x.Geta())+y.Getb()<<end1;return0;}运行时的输出结果是()。A、12B、16C、14D、11标准答案:A知识点解析:由类XCD的定义可知,成员函数Geta()返回的是字符串的长度,Getb0返回的是参数b的值。在主函数中strlen(x.Geta(》的值等于4,y.Getb()的值等于8,所以输出两者的和为12。19、在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是()。A、ios_base∷curB、ios_base∷begC、ios_base∷outD、ios_base∷end标准答案:A知识点解析:C++流的定位方式(也就是指针移动方式)有三种,被定义为ios_base∷seek_dir中的一组枚举符号:ios_base∷beg相当于文件首;ios_base∷cur相当于当前位置(负数表示当前位置之前);ios_base∷end相对于文件尾。20、下列是重载乘法运算符的函数原型声明,其中错误的是()。A、MyClassoperator*(double,double);B、MyClassoperator*(double,MyClass);C、MyClassoperator*(MyClass,double);D、MyClassoperator*(MyClass,MyClass);标准答案:A知识点解析:此题考查的是运算符重载。本题中,选项A重载运算符“-”使用的形参是两个double,而系统中的“*”运算原本就能计算两个double,所以这样违反了重载函数的原则,当执行a*b这样的表达式时,系统不能识别是否执行运算符重载函数。故答案是A选项。21、有如下函数模板定义:template<classT>Tfunc(Tx,Ty){retumx*x+y*y;}在下列对func的调用中,错误的是()。A、func(3,5);B、func(3.0,5.5);C、func(3,5.5);D、func<int>(3,5.5);标准答案:C知识点解析:此题考查的是函数模板的使用。引用模板函数和引用~般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题C选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误;A、B选项正确;D选项中,函数名后的<int>是模板实参表,编译系统会将double型的形参“5.5”自动转化成int类型。22、下列有关运算符重载的叙述中,正确的是()。A、运算符重载是多态性的一种表现B、C++中可以通过运算符重载创造新的运算符C、C++中所有运算符都可以作为非成员函数重载D、重载运算符时可以改变基结合性标准答案:A知识点解析:此题考查的是运算符重载。C++中运算符重载是多态性的一种表现;运算符重载是针对C++原有运算符进行的,不可能通过重载创造出新的运算符;除了“.”、“.*”、“->”、“::”、“?:”这五个运算符外,其它运算符都可以重载;但“=”“[]”“->”及所有的类型转换运算符只能作为成员函数重载,运算符重载不可改变其结合性、操作数个数和优先级。23、下列控制对齐方式的操作符中,错误的是()。A、internalB、centerC、leftD、fight标准答案:B知识点解析:对齐方式的控制操作符left的含义是在设定的宽度内左对齐输出,右端填已设定的填充字符:right(此为默认设置)在设定的宽度内右对齐输出;intemal在设定的宽度内右对齐输出,但若有符号(-或+),符号置于最左端。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间夏杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的:数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。2、下列描述中正确的是()。A、数据的逻辑结构与存储结构必定是一一对应的B、由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C、程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D、以上三种说法都不对标准答案:D知识点解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等。3、下列选项中,正确的C++标识符是()。A、6_groupB、group~6C、age+3D、_group_6标准答案:D知识点解析:C++中标识符的命名遵循如卜规则:不能是C十十关键字,第一个字母必须是字母或下划线,中间不能有空格,变量名中不能包括“.”、“:”、“,”、“”’、“””+.之类的特殊符号。总之标识符中除了能使用26个英文大小写字母和数字外,只能使用下划线“一”。4、设一棵完全二叉树共有700个结点,则此二叉树中的叶子结点数为()。A、85B、120C、250D、350标准答案:D知识点解析:①具有n个结点的完全二叉树的深度为[long2n]+1,计算出该完全二叉树的深度为10。②设度为0的结点(即叶子结点)为n0,度为1的结点为n1,度为2的结点为n2,总结点数为n,深度为k。n=n1+n2+n0,由于n0=n2+1则n2=n0-1,故n=n1+n0-1+n0=n1+2n0-1。由于完全二叉树中度为1的结点数只有两种可能:0或1。③假设度为1的结点数为0即满二叉树,根据满二叉树的定义,其2m-1个结点,根据以上计算所得的深度10来计算,应有210-1=1024-1=1023个结点,显然与题目中700个结点不符。因此,度为1的结点数必然为1。故n=n1+2n0-1=1+2n0-1=2n0,则n0=n/2=700/2=350。5、若字符指针P所指向的字符串为"abcdefg",在执行语句()。char*ap=newchar[strlen(p)+1];之后,ap指向的字符数组的元素个数为A、9B、8C、7D、6标准答案:B知识点解析:字符指针p所指向的字符串为"abcdefg",所以函数strlen(p)的值等于7,再加1,等于8。6、下列选项中属于面向对象设计方法主要特征的是A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象设计方法的丰要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下,逐步求精,模块化.限制使用goto语句。7、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:耦合性和内聚性是模块独立性的两个定性标准,各模块的内聚性越强,则耦合性越弱。软件设计应该遵循高内聚低耦合。8、下面叙述中错误的是()。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行“错误定位”是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。软件测试要严格执行测试计划,排除测试的随意性。程序调试通常也称Debug,对被调试的程序进行“错误”定位是程序调试的必要步骤。9、已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是()。A、枚举常量NAME的值为1B、枚举常量NUMBER的值为1C、枚举常量MINUS的值为6D、枚举常量PRINT的值为10标准答案:A知识点解析:此题考查的是C++语言的数据类型。第一个枚举常量的值为0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增1。10、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;d1.data=0;∥①d2.data=0;∥②return0;}下列关于程序编译结果的描述中,正确的是()。A、①②皆无编译错误B、①有编泽错误,②无编译错误C、①无编译错误,②有编译错误D、①②皆有编译错误标准答案:C知识点解析:保护继承的类Dervied2不能访问基类Base中的公共数据成员data。11、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){intf,f1=0,f2=1;for(inti=3;i<=6;i++){f=f1+f2;f1=f2;f2=f;}cout<<f<<end1;return0;}运行时的输出结果是()。A、2B、3C、5D、8标准答案:C知识点解析:在主函数中for循环语句执行4次,第一次循环结束时,变量f的值等于l,f1的值等于1,f2的值等于1:第二次循环结束时,变量f的值等于2,fl的值等于1,f2的值等于2;第三次循环结束时,变量f的值等于3,f1的值等于2,f2的值等于3;第四次循环结束时,变量f的值等于5,f1的值等于3,f2的值等于5;结束循环。12、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout<A、编译出错,无法运行B、输出:3C、输出:3.0D、输出一个不确定的数标准答案:D知识点解析:此题考查的是函数参数的传递。C++语言中,函数在传递参数时,总是将实参的值传递给被调用函数的形参,即传值调用。因此,在函数中对形参所作的任何操作都不会改变实参的值。13、有如下程序:#inc1ude<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){retumn;}intget()const{returnn+1,}};intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();+return0;}执行后的输出结果是()。A、55B、57C、75D、77标准答案:B知识点解析:此题考查的是常成员函数和函数的重载。所谓函数重载,是指同一个函数名可以对应着多个函数实现。…般对象a既可以调用普通成员函数get,也可以调用常成员函数get,由于常成员函数不能更新对象的数据成员,所以题目中通过对象a调用的函数为常成员函数:常对象b只能调用普通成员函数。14、有如下类定义:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:Foo(){}//③intvalue=0;//④};其中存在语法错误的行是()。A、①B、②C、③D、④标准答案:D知识点解析:此题考查的是类的定义。C++语言规定,在类体内不允许对所定义的数据成员进行初始化。15、下列叙述中,错误的是()。A、false是一个逻辑型常量B、b是一个字符型常量C、365是一个int常量D、3.1415926是一个double常量标准答案:B知识点解析:字符常量简称字符,它以单引号作为起止符号,中问有一个或若干个字符。或者以“\”开头的包括多个字符的字符序列也符合规定的字符常量。16、下列语句中错误的是()。A、constinta;B、constinta=10;C、eonstint*point=0;D、constint*point=newint(10);标准答案:A知识点解析:由关键字const声明符号常量的同时必须为其赋初值。17、已知函数f的原型是“voidflint*x,int&y);”,变量v1、v2的定义是“intv1,v2;”,下列调用语句中,正确的是()。A、f(v1,V2);B、f(v1,&V2);C、f(&v1,v2);D、f(&v1,&v2);标准答案:C知识点解析:在函数f的形参表达式中第一个形参为整型指针变量,第二个为整型引用变量,所以用实参v1的指针初始化第一个形参,用实参v2初始化第二形参。18、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个描象类标准答案:D知识点解析:此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项A和B错误;公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项C错误。19、将运算符“+”重载为非成员函数,下列原型声明中,错误的是()。A、MycloCkoperator+(MyClock,long);B、MycloCkoperator+(MyClock,MyClock);C、MycloCkoperator+(long,long);D、MycloCkoperator+(long,MyClock);标准答案:C知识点解析:运算符重载不能有二义性,故选项C)不能区分运算符的准确含义。20、有类定义如下:classType{public:Type(inti=0);Typeoperator-(int);friendTypeoperator+(Type,Type);private:intval;};若有对象定义Typec1;则下列语句序列中,错误的是()。A、Type(3)+c1;B、c1+Type(3);C、3-c1;D、c1-3:标准答案:C知识点解析:由于在类Type中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3是正确的,而3-c1是错误的表达式。21、下列关于函数模板的描述中,错误的是()。A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B、对于常规参数所对应的模板实参,任何情况下都不能省略C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D、模板参数表不能为空标准答案:D知识点解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。22、有如下模板声明:templateclassA;下列声明中,与上述声明不等价的是()。A、templateclassA;B、templateclassA;C、templateclassA;D、templateclassA;标准答案:D知识点解析:在类模板中,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。声明一个类模板的格式是:template<<模板形参表声明>><类声明>,<模板形参表声明>是由一个或多个模板形参组成。对于本题来说,模板形参表中包括类型T1和T2两个类型参数,而在选项D中T1说明其类型,而T2没有说明其类型,与题干中的模板说明不一致。23、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是()。A、fstreamB、istrearaC、ostreamD、iomanip标准答案:D知识点解析:要使用setw、fixed等操作符,须包含iomanip这个文件。24、下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<A、cout<B、cout<C、cout<D、cout<标准答案:B知识点解析:此题考查的是C++流。setfill0作用是设置填充字符:left是使输出数据在指定宽度内左对齐:setw()的作用是设置输入输出宽度,且只对当前一次有效。25、下列关于输入流类成员函数getline()的描述中,错误的是()。A、该函数是用来读取键盘输入的字符串的B、该函数读取的字符串长度是受限制的C、该函数读取字符串时,遇到终止符便停止D、该函数读取字符串时,可以包含空格标准答案:A知识点解析:此题考查的是getline0函数。getline()函数的原型为:istream_type&getline(char_type*s,streamsize,char_typedelim);。其功能是从当前输入位置开始提取字符存入s所指向的具有n个字节的字符空间中。遇到以下情况时停止:已提取并存储了n一1个字符;到流尾,无字符可取;下一个要提取的字符等于结束标志字符delim。故选项B、C、D都是正确的。getline()函数不仅可以用来读取键盘输入的字符串,还可以用来读取文件等数据流,故选项A错误。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共22题,每题1.0分,共22分。)1、算法的有穷性是指A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。2、下列叙述中正确的是()。A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。3、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值的成员函数标准答案:A知识点解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。4、下列关于栈的描述中正确的是A、在栈中只能插入元素而不能删除元素B、在栈中只能删除元素而不能插入元素C、栈是特殊的线性表,只能在一端插入或删除元素D、栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素标准答案:C知识点解析:栈是限定在一端进行插入与删除的线性表,在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。5、字符串“a+b=12\n\t”的长度为()。A、12B、10C、8D、6标准答案:C知识点解析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8个字符。6、下列排序方法中,最坏情况下比较次数最少的是()。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序标准答案:D知识点解析:冒泡排序、简单选择排序和直接插入排序法在最坏的情况下比较次数为:n(n—1)/2。而堆排序法在最坏的情况下需要比较的次数为O(log2n)。其中堆排序的比较次数最少。7、计算斐波那契数列第n项的函数定义如下:intfib(intn){if(n==0)return1;elseif(n==1)return2;elsereturnfib(n-1)+fib(n-2);}若执行函数调用表达式fib(2),函数fib被调用的次数是()。A、1B、2C、3D、4标准答案:B知识点解析:斐波那契数列是递归函数,所以fib(2)=fib(1)+fib(0)=2+1=3。因而执行函数调用表达式fib(2)时,函数fib被调用的次是2次。8、下列程序的输出结果是()。#mclude<iostream>usingnamespacestd;voidfun(inn&r){r*=2;}intmain(){intn=50;fun(n);cout<<n<<end1;return0;}A、0B、20C、50D、100标准答案:D知识点解析:题中主程序中首先定义整型变量n=50,然后调用函数fun,实际参数为n。函数fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以2。9、数据字典(DD)所定义的对象都包含于()。A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。10、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。分别是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。数据字典是对系统中数据的详尽描述,是各类数据属性的清单。对数据设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。11、已知类Myclass的定义如下classMyClass{public:voidfunction1(MyClass&c){cout<A、function1B、function2C、function3D、function4标准答案:D知识点解析:funcyion4()函数作为类的静态成员函数,不能直接访问类中说明的非静态成员,即cout<12、数据库系统的核心是()。A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:B知识点解析:数据库管理系统(DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。所以,数据库管理系统是数据系统的核心。13、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下面图符名标识的图符不属于数据流图合法图符的是A、控制流B、加工C、数据存储D、源和潭标准答案:A知识点解析:数据流图中的主要图形元素有加工(转换)、数据流、存储文件(数据源)、源和潭等。14、下列关于C++函数的叙述中,正确的是()。A、每个函数至少要具有一个参数B、每个函数都必须返回一个值C、函数在被调用之前必须先声明D、函数不能自己调用自己标准答案:C知识点解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。15、有如下程序段:inti=5:while(inti=0){cout<<ˊ*ˊ;i--;}运行时输出“*”的个数是()。A、0B、1C、5D、无穷标准答案:A知识点解析:因为while循环中,因为i的值等于0,所以while循环体一次也不执行。因而运行时输出“*”的个数是0。16、有如下程序:#include<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){returnn;}intget()const{returnn+1;}};intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();return0;}执行后的输出结果是()。A、55B、57C、75D、77标准答案:B知识点解析:此题考查的是常成员函数和函数的重载。所谓函数重载,是指同一个函数名可以对应着多个函数实现。一般对象a既可以调用普通成员函数get,也可以调用常成员函数get,由于常成员函数不能更新对象的数据成员,所以题目中通过对象a调用的函数为常成员函数;常对象b只能调用普通成员函数。17、下面是重载为非成员函数的运算符函数原型,其中错误的是()。A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator—(Fraction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);标准答案:C知识点解析:此题考查的是运算符重载。C++语言规定,“=”运算符只能作为成员函数重载。18、字面常量42、4.2、42L的数据类型分别是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long标准答案:C知识点解析:此题考查的知识点是字面常量。对于整型字面常量,只要没有超过C++中整数所能表示的范围,C++将自动按整数来存储此数,也可以通过在整型字面常量后添加u或l来指定无符号整数或长整数来存储;对于实型字面常量,C++将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度数存储。19、若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。A、Data+(Data);B、Dataoperator+{Data};C、Data+operator{Data};D、operator+(Data,Data);标准答案:B知识点解析:“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。运算符函数的函数名是由运算符前加关键字operator构成的。20、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。21、下列关于虚函数的说明中,正确的是()。A、从虚基类继承的函数都是虚函数B、虚函数不得是静态成员函数C、只能通过指针或引用调用虚函数D、抽象类中的成员函数都是虚函数标准答案:B知识点解析:此题考查的是虚函数的概念。在成员函数的声明前面加上viual关键字,即可把函数声明为虚函数。虚函数可以是另一个函数的友元函数而不能是静态成员函数。22、语句ofstreamf("SALARY.DAT",ios_base::app);功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且()。A、若文件存在,将其置为空文件;若文件不存在,打开失败B、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D、若文件存在,打开失败;若文件不存在,建立一个新文件标准答案:B知识点解析:此题考查的是文件打开模式。文件打开模式iso_base::app是为添加数据而打开(总是在尾部写),故只有选项B说法正确。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共24题,每题1.0分,共24分。)1、下列叙述中正确的是A、栈是一种先进先出的线性表。B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。2、若字符指针P所指向的字符串为”abcdefg”,在执行语句()。Char*ap=newchar[strlen(p)+1];之后,ap指向的字符数组的元素个数为A、9B、8C、7D、6标准答案:B知识点解析:字符指针p所指向的字符半为“abcdefg”,所以函数strlen(p)的值等于7,再加l,等于8。3、下列选项中不属于结构化程序设计方法的是()。A、自顶向下B、逐步求精C、模块化D、可复用标准答案:D知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化,限制使用goto语句。自项向下是指程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。逐步求精是指对复杂问题应设计一些子目标过渡,逐步细化。模块化是把程序要解决的总目标先分解成分目标,再进一步分解成具体的小目标,把每个小目标称为一个模块。可复用性是指软件元素不加修改成稍加修改便可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法,不属于结构化程序设计方法。4、在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的()。A、连接码B、关系码C、外码D、候选码标准答案:D知识点解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。5、下面描述中,不属于软件危机表现的是()。A、软件过程不规范B、软件开发生产率低C、软件质量难以控制D、软件成本不断提高标准答案:A知识点解析:软件危机主要表现在以下6个方面:①软件需求的增长得不到满足。②软件开发成本和进度无法控制。③软件质量难以保证。④软件不可维护或维护程度非常低。⑤软件的成本不断提高。⑥软件开发生产率的提高赶不上硬件的发展和应用需求的增长。6、以下关键字不能用来声明类的访问权限的是()。A、publicB、staticC、protectedD、private标准答案:B知识点解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。7、设二叉树的后序序列为DGHEBIJFCA,中序序列为DBGEHACIFJ。则前序序列为A、ABDEGHCFIJB、JIHGFEDCBAC、GHIJDEFBCAD、ABCDEFGHIJ标准答案:A知识点解析:后序遍历中,最后一个字母是根结点,也就是A是根结点:在中序遍历中,根结点前面的是左子树、后面的是右子树。后序中C在A前面、中序中C在A的后面,说明C是A的右结点;后序中F在C的前面、中序中在C后面,且后序和中序中,I均在F前面由此可确定,I为F的左结点,F为C的右结点。同C理J为F的右结点。后续中B为左子树的根结点,因此B为A的左结点,以此划分,在中序中B前面的D为左结点,后面的GEH为右子树,后序中,E在最后,应为剩下3个结点的根结点,也就是B的右子树,再根据中序中的顺序,可得出G为E的左结点.H为E的右结点。由此可画出这个二叉树,然后根据二叉树可的前序序列为ABDEGHCFIJ。8、下列选项中属于面向对象设计方法主要特征的是A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象设计方法的丰要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下,逐步求精,模块化.限制使用goto语句。9、下列描述中正确的是()。A、软件测试应该由程序开发者来完成B、程序经调试后一般不需要再测试C、软件维护只包括对程序代码的维护D、以上三种说法都不对标准答案:D知识点解析:为了达到好的测试效果,应该由独立的第三方进行测试工作。因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是会不同程度地存在障碍的,所以选项A)错误。在程序调试时,修改了一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以选项B)错误。所谓软件维护,就是将交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改,所以选项C)错误。10、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。11、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组组成的,记为R∩S。12、下列符号中不属于C++关键字的是()。A、friendB、namespaceC、continueD、byte标准答案:D知识点解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时用到的关键字;namespace是定义或使用名字空间时用到的关键字;continue是终止本次循环直接开始下一次循环所用到的关键字;byte是字节的意思,它不是C++语言中的关键字。13、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为()。A、派生类、成员对象类、基类B、成员对象类、基类、派生类C、基类、成员对象类、派生类D、基类、派生类、成员对象类标准答案:C知识点解析:建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造函数,调用的顺序按照基类被继承时候的顺序(白左阳右)。然后是执行成员对象的构造函数,调用顺序按照各个成员对象在类中的声明顺序(自上而下),最后是执行派生类的构造函数。14、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,—88,0和0,则下列定义语句中错误的是()。A、intvect[]={30,50,—88};B、intvect[l={30,50,—88,0,0};C、intvect[5]={30,50,—88};D、intvect[5]={30,50,—88,0,0};标准答案:A知识点解析:此题考查的是一维数组定义时的初始化。当数组声明时没有给出数组的大小但是有初始化列表时,数组的大小就由列表中元素的个数来确定。所以选项A中数组只定义3个元素,不符合题目。15、若一个函数的原型为“int*Xfun1(intx,int&y,charz);”,则该函数的返回值类型为()。A、int*B、intC、int&D、char标准答案:A知识点解析:由“int*Xfun1(intx,int&y,charz);”的定义可知,其返回值为指向int指针的函数。16、下列各组类型声明符中,含义相同的一组是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int标准答案:B知识点解析:此题考查的是基本类型和派生型。C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。本题A选项中,unsignedlongint的省略形式为unsignedlong;选项B中,signedshortint的省略形式是short;选项C中,unsignedshort的省略形式是unsignedshort;选项D中,shortint的省略形式short。17、在下列函数原型中,可以作为类AA构造函数的是(>。A、voidAA(int);B、intAA();C、AA(int)const;D、AA(int);标准答案:D知识点解析:此题考查的是构造函数的概念。构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。选项A、B不符合要求。选项C中函数AA,会更新对象的数据成员。18、若有如下类声明classMyclass{public:Myclass(){cout<<l;)};执行下列语句Myclassa,b[2],*p[2]:以后,程序的输出结果是()。A、11B、111C、1111D、11111标准答案:B知识点解析:此题考查的是对象的构造。本题共声明了一个MyClass对象a,一个包含2个MyClass对象的数组b和…个包含2个MyClass对象指针的数组p,所以一共创建了3个MyClass类的对象,即调用了3次构造函数。19、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assONE{intC;public:ONE():c(O){cout<<l;)ONE(intn):c(n){cout<<2;)};c1assTWO{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<3;}};intmain(){TWOt(4);return0;}运行时的输出结果是()。A、3B、23C、123D、213标准答案:C知识点解析:由类TWO的定义可知,其成员为类ONE的两个对象onel和one2。所以在主函数中构建类TWO的对象t(4)时,先后调用类ONE的构造函数ONE():(0)(count<<1,}和ONE(intn):c(n){cout<<2:j输出12,然后再调用类TWO的构造函数TWO(intm):one2(m){cout<<3;},输出3。20、在下列原型所示的C++函数中,按“传值”方式传递参数的是()。A、voidfi(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);标准答案:A知识点解析:传值方式是将实参复制到形参中,因此实参和形参是两个不同的变量,有各自的存储空间,可以把函数的形参看做是函数的局部变量。其中BC选项为按低值传递D选贤为按引用传递。21、若要重载+、=、<<、==和[]运算符,则必须作为类成员重载的运算符是()。A、+和=B、=和<<C、==和<<D、:和[]标准答案:D知识点解析:=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,而且不能是针对枚举类型操作数的重载。22、若有如下类定义:classB{voidfun1(){}protected:doublevar1;public:voidfun2(){)};classD:publicB{protected:voidfun3(){}};已知obj是类D的对象,下列句中不违反类成员访问控制权限的是()。A、obj.fun1();B、obj.var1;C、obj.fun2();D、obj.fun3();标准答案:C知识点解析:此题考查的是基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,錾类的保护成员在派生类中仍然是保护成员。根据以上分析可知,本题中只有从B类继承的fun2()为公有属性,故选C选项。23、在类中重载赋值运算符时,应将其声明为类的()。A、静态函数B、友元函数C、成员函数D、构造函数标准答案:C知识点解析:赋值运算符只能作为类的成员函数重载。24、下列有关C++流的叙述中,错误的是()。A、C++操作符setw设置的输出宽度永久有效B、C++操作符endl可以实现输出的回车换行C、处理文件I/O时,要包含头文件fstreamD、进行输入操作时,eof()函数用于检测是否到达文件尾标准答案:A知识点解析:此题考查的是C++流。C++操作符setw()的作用是设置输入输出宽度,且只对当前一次有效,并非永久有效,故选项A叙述错误。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共32题,每题1.0分,共32分。)1、算法的有穷性是指A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。2、有如下程序:#include<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}-TestO{n-=3;}staticintgetNum(){returnn;}private:staticintn:};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<’’n=’’<<Test::getNum()<<end1;return0;}执行后的输出结果是()。A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:语句Test*p=newTest;会调用类的构造函数Test(){n+=2;},使n的值由原来的1变为3,然后deletep调用类的析构函数~Test(){n-=3;},因为n是static型变量,所以会在3的基础上减3使得输出结果为0。3、若AA为一个类,a为该类的私有整型数据成员,getA0为该类的一个非静态公有成员函数,功能是返回a的值。如果X为该类的一个对象,要在类外访问X对象中a的值,正确的访问格式为()。A、AA.getA()B、x。getA()C、x.aD、AA::a标准答案:B知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数getA()。4、面向对象方法中,继承是指A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。5、有如下程序:#includeusingnamespacestd;classA{public:A(inti):r1(i){}voidprint(){cout<<’E’<*r1<<’一’;}private:intr1;};intmain(){Aa1(2);constAa2(4);a1.print();a2.print();return0;}运行时的输出结果是()。A、运行时出错B、E2-C16-C、C4-C16D、E2-E4-标准答案:B知识点解析:类A包括一个整型数据成员r1,一个一般成员函数print(),一个常成员函数print()const。在主函数中定义了对象a1,并对r1的值赋2和常对象a2,并对r1的值赋4,在C++中,常对象不能被更新,所以常对象只能调用类的常成员函数,而不能调用一般成员函数。而一般的对象,既可以调用一般成员函数也可以调用常成员函数。所以在本题中,当执行a1.print()时,输出为E2-,执行a2.print()时,输出为C16-。6、在下列double型常量表示中,错误的是()。A、E15B、.35C、3E5D、3E-5标准答案:A知识点解析:在C++中,科学计数法表示小数的方法:E(e)左右必须有数,且E(e)的右侧只能为整数。7、关于虚函数,以下说法正确的是()。A、若在重定义虚函数时使用了virtual,则该重定义函数还是虚函数B、虚函数不能声明为友元C、子类必须重定义父类的虚函数D、虚函数不能是static的标准答案:D知识点解析:在C++中,虚函数可以是友元函数,但不能是静态成员。虚函数的重定义函数,无论是否使用virtual关键字,仍然是虚函数。所以答案选择D。8、将以下程序写成三目运算表达式是()。if(x<y)min=x;elserain=y;A、min=(x>y)?x:yB、min=(x<y)?x:yC、min=(x<y)x:yD、min=(x<y)?x,y标准答案:B知识点解析:题目中给出的程序是求x,y中的小值。即如果x小于y,那么min=x,否则min=y。条件运算符为“?:”,(x<y)?x:y是当x小于y时取x,否则取y。9、有如下程序:#include<iostream>usingnamespacestd;classXX{protected:intk;public:XX(intn=5):k(n){};~XX(){cout<<’’XX’’;}virtualvoidf()const=0;};inlinevoidXX::f()const{cout<<k+3;};classYY:publicXX{public:~YY(){cout<<’’YY’’;}voidf()const{cout<<k-3;XX::f();}};intmain(){XX&p=*newYY:p.f();delete&p;return0;}执行上面的程序将输出()。A、28XXB、28YYXXC、33XXD、-33XXYY标准答案:A知识点解析:类YY公有派生于类:XX,派生类对象可以替代基类对象向基类对象的引用进行赋值初始化,XX&p=*newYY语句定义了XX对象p引用,并用YY对象初始化,p并不是YY对象的别名,是XX基类对象的别名,故先调用基类XX的构造函数将k初始化为5,p.f()首先输出k-3即2,然后调用XX::f()输出k+3即8,delete&p删除p,调用XX的析构函数输出“XX”。10、关于new运算符的下列描述中,错误的是()。A、它可以用来动态创建对象和对象数组B、使用它创建的对象或对象数组可以通过运算符delete删除C、使用它创建对象时要调用构造函数D、使用它创建对象数组时必须指定初始值标准答案:D知识点解析:用new创建对象是不用显式调用构造函数的,它自己会自动调用。11、下列描述中正确的是A、为了建立一个关系,首先要构造数据的逻辑关系B、表示关系的二维表中各元组的每一个分量还可以分成若干数据项C、一个关系的属性名表称为关系模式D、一个关系可以包括多个二维表标准答案:C知识点解析:为了建立一个关系,首先要指定关系的属性,所以选项A是错误的。表示关系的二维表中各元组的每一个分量必须是不可分的基本数据项,所以选项B是错误的。在关系数据库中,把数据表示成_维表,而一个二维表就是一个关系,所以选项D足错误的。一个关系的属性名表称为该关系的关系模式,其记法为:<关系名>(<属性名1>,<属性名2>,…,<属性名n>)。12、在下列原型所示的C++函数中,按“传值”方式传递参数的是()。A、voidf1(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);标准答案:A知识点解析:传值方式是将实参复制到形参中,因此实参和形参是两个不同的变量,有各自的存储空间,可以把函数的形参看做是函数的局部变量。其中BC选项为按低值传递D选贤为按引用传递。13、下面是重载为非成员函数的运算符函数原型,其中错误的是()。A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator-(Fraction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);标准答案:C知识点解析:此题考查的是运算符重载。C++语言规定,“=”运算符只能作为成员函数重载。14、下列叙述中正确的是A、关系模式可以没有候选关键字B、关系模式的候选关键字只能有1个C、关系模式必须有2个以上的候选关键字D、关系模式的候选关键字可以有1个或多个标准答案:D知识点解析:关系的描述称为关系模式(RelationSchema),形式化地表示为:R(U,D,dom,F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。关系模式的候选关键字可以有1个或多个。15、已知函数fun的原型为intfun(int,int,int),下列重载函数原型中错误的是()。A、charfun(int,int),B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);标准答案:D知识点解析:重载函数至少要在参数个数或参数类型上不同。而选项D中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。16、下列运算符函数中,肯定不属于类Value的成员函数的是()。A、Valueoperator+(Value);B、Valueoperator-(Value,Value);C、Valueoperator*(int);D、Valueoperator/(Value);标准答案:B知识点解析:运算符作为非成员函数时,由于没有隐含this指针,因此所有的操作数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。17、有如下函数模板定义:template<typenameT1,TypenameT2>T1Fun(T2n){returnn*5.0;)若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为()。A、FUN(9)B、FUN<9>C、FUN<double>[9]D、FUN<9>(double)标准答案:C知识点解析:根据函数模板的定义,在选项C的请用中,把double类型传递给T1,int型传递给T2。18、下列选项中,正确的C++表达式是()。A、counter++3B、element3+C、a+=bD、’a’=b标准答案:C知识点解析:在C++中由一个或多个操作数与操作符连接而成的有效运算式称为表达式。选项C)是C++的合法表达式。19、若有下面的函数调用:fun(a+b,3,max(n-1,b))则fun的实参个数是()。A、3B、4C、5D、6标准答案:A知识点解析:此题考查的是函数的调用。C++中函数调用的一般形式为:函数名(实参表),其中实参表是用逗号分隔的一系列表达式。因此,本题中fun()函数的实参表由a+b、3和max(n-1,b)组成。20、有如下类和对象的定义:classConstants{public;staticdoublegetPl(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是()。A、cout<<constants->getPI();和cout<<Constants::gerPI();B、cout<<constants.getPI();和cout<<Constants.getPI();C、cout<<constants->getaI();和cout<<Constants->getPI();D、cout<<constants.getPI();和cout<<Constants::getPI();标准答案:D知识点解析:此题考查的是静态成员函数的引用。getPI()是类C0nstants的静态成员函数。引用静态成员函数可以有两种形式:一是通过类名直接进行调用,例如类名::静态成员函数名;另一种是用类的任何对象名进行调用其作用仅是通过对象名间接的指出类名,例如constants.getPI()选项D即是这种调用方式。21、有如下程序:#include<iostrcam>usingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);}protected:Chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列叙述中正确的是()。A、程序编译正确B、程序编译时语句①出错C、程序编译时语句②出错D、程序编译时语句①和②都出错标准答案:C知识点解析:派生类Jazz不能访问基类Music中的私有成员title。22、有如下程序:#includeusingnamespacestd;classInstrument{public:virtualvoidDisplay()=0:};classPiano:publicInstrument{public:voidDisplay(){/*函数体程序略*/}};intmain(){Instruments;Instrumen

温馨提示

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

评论

0/150

提交评论