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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷14(共9套)(共199题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共22题,每题1.0分,共22分。)1、下列对队列的描述中正确的是()。A、队列属于非线性表B、队列按“先进后出”原则组织数据C、队列在队尾删除数据D、队列按“先进先出”原则组织数据标准答案:D知识点解析:队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾:允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除;反之,最后插入的元素将最后才能被删除。因此,队列又称“先进先出”或“后进后出”的线性表。2、某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()。A、n+1B、n-1C、2nD、n/2标准答案:A知识点解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以该二叉树的叶子结点数等于n+1。3、待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。A、2B、3C、4D、5标准答案:A知识点解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一一个位置,元素15则放在第二个位置。4、下面描述中,不属于软件危机表现的是()。A、软件过程不规范B、软件开发生产率低C、软件质量难以控制D、软件成本不断提高标准答案:A知识点解析:软件危机主要表现在以下6个方面:①软件需求的增长得不到满足。②软件开发成本和进度无法控制。③软件质量难以保证。④软件不可维护或维护程度非常低。⑤软件的成本不断提高。⑥软件开发生产率的提高赶不上硬件的发展和应用需求的增长。5、多继承的构造顺序可分为如下四步:①所有非虚基类的构造函数按照它们被继承的顺序构造②所有虚基类的构造函数按照它们被继承的顺序构造③所有子对象的构造函数按照它们声明的顺序构造④派生类自己的构造函数体这四个步骤的正确顺序是()。A、④③①②B、②④⑨①C、②①③④D、③④①②标准答案:C知识点解析:多继承派生类的构造顺序是:首先调用虚基类的构造函数,然后调用非虚基类的构造函数按照它们被继承的顺序构造,其次调用子对象的构造函数,最后是派生类构造函数中的内容。6、软件设计中划分模块的一个准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:耦合性与内聚性是模块独立性的两个定性标准。一般一个较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。7、下列代码段中声明了3个类:classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列关于这些类之间关系的描述中,错误的是()。A、类Person是类Undergraduate的基类B、类Undergraduate从类Student公有继承C、类Student是类Person的派生类D、类Undergraduate是类Person的派生类标准答案:B知识点解析:本题考查基类和派生类的逻辑关系,属于基础知识,如果没有指明哪种继承方式,那么默认为私有继承,所以B选项错误。8、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:关键字是指属性或属性的组合,其值能够唯一地标识一个元组,而在SC中学号和课号的组合可以对元组进行唯一的标识。9、有如下程序:#includeusingnamespacestd;classXX{intx;public:XX(intxx=0):x(xx){)intgetX(){returnx;));classYY:publicXX{inty;public:YY(intXX,intyy):XX(xx),y(yy){)intget(){returngetX0+y;));intmain(){YYc(3,4);cout<A、3B、4C、7D、10标准答案:D知识点解析:由于类YY公开继承自类xx,所以执行表达式c.getV()+c.getX()的值等于3+3+4=10。10、下列循环语句中有语法错误的是()。A、inti;for(i=1;i<10;i++)cout<<’*’;B、inti,j;for(i=l,j=0;i<10;i++,j++)cout<<’*’;C、inti=0;for(;i<10;i++)cout<<’*’;D、for(1)tout<’*’;标准答案:D知识点解析:这道题目主要考查for循环语句的语法。for循环语句的语法格式如下:for(<表达式1>;<表达式2>;<表达式3>)<语句>,在三个表达式都省略的情况下,其格式如下for(;;),这时for循环语句是一个死循环。11、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfunction2(intn);voidfunctionl(intn){if(n<=0)return;function2(n—2);)voidfunction2(intn){if(n<=0)return;functionl(n—1);}intmain(){functionl(5);return0;}下列关于程序运行情况的描述中,正确的是()。A、function1运行1次,function2运行2次B、function1运行2次,function2运行1次C、function1运行2次,function2运行3次D、function1运行2次,function2运行2次标准答案:D知识点解析:在主函数中执行functionl(5)时,会调用function2(3),function2(3)又会调用functionl(2),functionl(2)又会调用function2(0),到此相互调用结束。所以funaion1()和function2()各执行了2次。12、在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。A、operator+有两个参数,operator*有两个参数B、operator+有两个参数,operator*有一个参数C、operator+有一个参数,operator*有两个参数D、operator+有一个参数,operator*有一个参数标准答案:C知识点解析:此题考查的是运算符的重载。运算符可重载成员函数,也可重载为友元函数。当重载为成员函数时,运算符重载函数的形参个数要比运算符操作数的个数少一个;当重载为友元函数时,其参数个数应与操作数的个数相同。13、要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是()。A、MyClassp=MyClass;B、MyClassp=newMyClass;C、MyClass&p=newMyClass;D、MyClassa,&p=a;标准答案:D知识点解析:在选项D中,定义了MyClass类的一个对象a和引用变量p,并且声明p初始化为对a的引用。14、下列关于类成员对象构造函数调用顺序的叙述中,正确的是()。A、与它们在初始化列表中的顺序相同B、与它们在类中声明的顺序相同C、与析构函数的调用顺序相同D、顺序不确定标准答案:B知识点解析:类成员对象构造函数的调用是按照在类中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行构造的。15、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值的成员函数标准答案:A知识点解析:此题考查的是常对象与常成员函数的概念。使用const关键字修饰的对象称为常对象,它不能被更新,所以常对象只能调用常成员函数而不能调用其它成员函数;使用const关键字声明的成员函数是常成员函数,它也不能被更新,常成员函数只能调用常成员函数而不能调用其它函数。16、在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:如果一个类中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。17、有如下程序:#includeusingnamespacestd;classBase{public:voidfun(){cout<<’B’;}};classDerived:publicBase{public:voidfun(){________cout<<’D’;}};intmain(){Derivedd;d.fun();return0;}若程序的输出结果是BD,则划线处缺失的部分是()。A、fun();B、Base.fun();C、Base:fun();D、Base->fun();标准答案:C知识点解析:派生类Derived的对象d调用其成员函数fum(),要输出结果为BD,所以在其成员函数fun()中要调用基类Base的成员函数fun()。18、如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。#includeusingnamespacestd;classBase{inta,b;public:Base(intx,inty){a=x;b=y;}voidshow(){cout<A、10,20B、30,40C、20,30D、50,50标准答案:A知识点解析:此题考查的是多态性。在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。在实函数的情况下。通过基类指针所调用的只能是基类的那个函数版本,无法调用到派生类中重定义函数。此题中,通过指针pb所调用的是基类的本,即输出a和b的值10,20。19、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:此题考查的是运算符重载的概念。C++语言规定,“.”、“.*”、“->*”、“::”和“?:”这五个运算符不能被重载,故选项A错误:运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定,故选项B说法是错误的;运算符重载是针对原有运算符,并不能通过重载创造出新的运算符,故选项D错误。20、在一个抽象类中,一定包含有()。A、虚函数B、纯虚函数C、模板函数D、重载函数标准答案:B知识点解析:拥有纯虚函数的类叫做抽象类,所以抽象类中必然包含有虚函数。21、通过运算符重载,可以改变运算符原有的()。A、操作数类型B、操作数个数C、优先级D、结合性标准答案:A知识点解析:此题考查的是运算符重载。运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。故本题选项A正确。22、将运算符“+”重载为非成员函数,下列原型声明中,错误的是()。A、Myc1oCkoperator+(Myc1ock,long);B、Myc1oCkoperator+(Myc1ock,Myc1ock);C、Myc1oCkoperator+(long,long);D、Myc1oCkoperator+(long,Myc1ock);标准答案:C知识点解析:运算符重载不能有二义性,故选项C)不能区分运算符的准确含义。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共23题,每题1.0分,共23分。)1、有如下程序:#includeusingnamespacestd;classBase{public:voidfunl(){cout<<”Base\n”;}virtualvoidflun2(){cout<<”Base\n”;}};classDerived:publicBase{public:voidfunl(){cout<<”Derived\n”;}voidfun2(){cout<<”Derived\n”;}};voidf(Base&b){b.funl();b.fun2();}intmain(){Derivedobj;f(obj);return0;}执行这个程序的输出结果是()。A、BaseBaseB、BaseDeftvedC、DerivedBaseD、DerivedDerived标准答案:B知识点解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个派生类对象obj,执行f函数后,将派生类对象obj转化为基类对象,由于funl不是虚函数,所以输出基类的funl;而fun2是虚函数,所以输出派生类的fun2,所以本题答案为B。2、以下不正确的是()。A、语句for(i=0;;i++)表示无限循环B、for(;;)表示无限循环C、for()表示无限循环D、while(1)表示无限循环标准答案:C知识点解析:选项C是一个错误的for语句格式,for()语句中三个表达式可以省略。但是两个分号(;)不能省略。3、下列有关内联函数的叙述中,正确的是()。A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句标准答案:C知识点解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项A)错误;即使没有使用inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B)错误;内联函数只是比普通函数有更高的执行效率。4、下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象设计方法的主要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下,逐步求精,模块化,限制使用goto语句。5、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。6、对于int*pa[5];的描述,正确的是()。A、pa是一个指向数组的指针,所指向的数组是5个int型元素B、pa是一个指向某个数组中第5个元素的指针,该元素是int型变量C、pa[5]表示某个数组的第5个元素的值D、pa是一个具有5个元素的指针数组,每个元素是一个int型指针标准答案:A知识点解析:语句“int*p[5]”表示一个数组p,它的大小是5,里面存放的数据类型是int*,也就是整型指针。称之为指针数组(从右向左解析这个表示)。7、在数据库系统中,用户所见的数据模式为()。A、概念模式B、外模式C、内模式D、物理模式标准答案:B知识点解析:用户所见到的数据模式是外模式也称用户模式。它是用户的数据视图,它由概念模式导出。一个概念模式可以有若干个外模式,每个用户只关心与它有关的外模式,这样不仅可以屏蔽大量无关信息,而且有利于数据维护。8、将E一R图转换为关系模式时,实体和联系都可以表示为()。A、属性B、键C、关系D、域标准答案:C知识点解析:将E一R图转换为关系模式时,实体和联系都可以表示为关系。9、下列关于虚基类的描述中,错误的是()。A、使用虚基类可以消除由多继承产生的二义性B、构造派生类对象时,虚基类的构造函数只被调用一次C、声明“classB:virtualpublicA”说明类B为虚基类D、建立派生类对象时,首先调用虚基类的构造函数标准答案:C知识点解析:虚基类是为了消除由多重继承产生的二义性而提出的。虚基类的说明格式是:Class<类名>:virtual<继承方式><基类名>,其中关键字virtual与继承方式的位置无关,但必须位于基类名之前,且virtual只对紧随其后基类名起作用。对于本题来说,声明“classB:virtualpublicA”说明类A为虚基类。10、下列关于C++函数的叙述中,正确的是()。A、每个函数至少要具有一个参数B、每个函数都必须返回一个值C、函数在被调用之前必须先声明D、函数不能自己调用自己标准答案:C知识点解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。11、下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是()。A、if(a<=b)n=0;B、if((a>b)||(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(b<=c)n=i;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。12、有如下程序:#include<iostream>usingnamespacestd;intmain(){hatsum;for(inti=0;i<6;i+=3){sum=i;for(intj=i;j<6;j++)sum+=j;}cout<<sum<<end1;return0:}运行时的输出结果是()。A、3B、10C、12D、15标准答案:D知识点解析:由题干可以知道,外层循环会进行两次,且第一次的结果我们可以不去理会和计算,读者仔细观察能发现,在第一次的循环以后sum和j都会被重新赋值,所以外层第二次循环如下:此时i=3,sum=3内层循环开始如下:j=3,j<6,sum=6;j=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出内层循环。得到sum=15。13、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:C++引入内联函数的原因是用它来取代C中的预处理宏函数。两者的区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现的。内联函数在调用时像宏函数一样展开,所以它没有一般函数的参数压栈和退栈操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。14、下列语句中,与语句“n=(a>b?(b>c?l:0):0);”的功能等价的是()。A、if(a<=b)n=0;B、if((a>b)‖(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(b<=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。15、下列关于输入流类成员函数getline()的描述中,错误的是()。A、该函数是用来读取键盘输入的字符串的B、该函数读取的字符串长度是受限制的C、该函数读取字符串时,遇到终止符便停止D、该函数读取字符串时,可以包含空格标准答案:A知识点解析:此题考查的是getline()函数。getline()函数的原型为:istream_lype&getline(char_type*s,streamsize,char_typedelim);。其功能是从当前输入位置开始提取字符存入s所指向的具有n个字节的字符空间中。遇到以下情况时停止:已提取并存储了n-1个字符;到流尾,无字符可取;下一个要提取的字符等于结束标志字符delim。故选项B、C、D都是正确的。getline()函数不仅可以用来读取键盘输入的字符串,还可以用来读取文件等数据流,故选项A错误。16、有如下两个类定义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。17、有如下程序:#include<iostream>usingnamespacestd;classAA{intk;protected:intn;voidsetK(intk){this->k=k;}public:voidsetN(intn){this->n=n;}};classBB:publicAA{/*类体略*/};intmain(){BBx;x.n=1;//1x.setN(2);//2x.k=3;//3x.setK(4);//4return0;}在标注号码的四条语句中正确的是()。A、1B、2C、3D、4标准答案:B知识点解析:因为类BB公有继承自类AA,所以AA中的保护成员和公有成员在类BB中仍是保护成员和公有成员。在选项B中调用了公有成员函数setN(intn){this->n=n;},对保护成员n进行赋值操作。18、有如下程序:#inc1ude<iostream>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。19、下列有关抽象类和纯虚函数的叙述中,错误的是()。A、拥有纯虚函数的类是抽象类,不能用来定义对象B、抽象类的派生类若不实现纯虚函数,它也是抽象类C、纯虚函数的声明以“=0;”结束D、纯虚函数都不能有函数体标准答案:D知识点解析:此题考查的是抽象类和纯虚函数的概念。纯虚函数可以有函数体,它的实现由派生类给出。20、有如下程序:#include<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)为正确选项。21、对于语句cout<<endl<<x;中的各个组成部分,下列叙述中错误的是()A、cout是一个输出流对象B、endl的作用是输出回车换行C、x是一个变量D、<<称作提取运算符标准答案:D知识点解析:此题考查的是C++语言的输出流。符号“<<”是预定义插入符,提取运算符是“>>”。22、语句ofstreamf("SALARY.DAT",ios_base::app);功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且()。A、若文件存在,将其置为空文件;若文件不存在,打开失败B、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D、若文件存在,打开失败;若文件不存在,建立一个新文件标准答案:B知识点解析:此题考查的是文件打开模式。文件打开模式iso_base::app是为添加数据而打开(总是在尾部写),故只有选项B说法正确。23、下列关于输入流类成员函数getline()的描述中,错误的是()。A、该函数是用来读取键盘输入的字符串的B、该函数读取的字符串长度是受限制的C、该函数读取字符串时,遇到终止符便停止D、该函数读取字符串时,可以包含空格标准答案:A知识点解析:此题考查的是getline()函数。getline()函数的原型为:istream_type&getline(char_type*s,streamsize,char_typedelim);。其功能是从当前输入位置开始提取字符存入s所指向的具有n个字节的字符空问中。遇到以下情况时停止:已提取并存储了n-1个字符:到流尾,无字符可取:下一个要提取的字符等于结束标志字符delim。故选项B、C、D都是正确的。getline()函数不仅可以用来读取键盘输入的字符串,还可以用来读取文件等数据流,故选项A错误。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共24题,每题1.0分,共24分。)1、当循环队列非空且队尾指针等于队头指针时,说明循环队列己满,不能进行入队运算。这种情况称为()。A、下溢B、上溢C、异常D、溢出标准答案:B知识点解析:由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列是满的却产生了“上溢”现象。2、下列与队列结构有关联的是()。A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。3、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、上述三种说法都不对标准答案:B知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。4、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、上述三种说法都不对标准答案:B知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。5、下列叙述中正确的是()。A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。6、若已定义inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是()。A、a[p-a]B、*(&a[i])C、p[i]D、a[10]标准答案:D知识点解析:数组有N个元素,则数组元素引用为a(0)~a(m-1),共计N个,没有a(10)2这个元素,最后的元素是a(9)。7、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件的生命周期描述了软件从产生到最终消亡的全过程,生命周期中的活动包括需求分析、软件设计(分为概要设计和详细设计)、软件实现、软件测试和软件维护,不包括市场调研。8、有如下两个类定义:classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一个成员变量的定义是错误的,这个变量是()。A、v1B、v2C、v3D、v4标准答案:C知识点解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。9、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10}:则下列说法中错误的是()。A、枚举常量YELLOW的值为1B、枚举常量RED的值为6C、枚举常量BLACK的值为10D、枚举常量WHITE的值为1标准答案:D知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum类型名{枚举值表}。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右分别与整数0、1、2、3…n-1对应:若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1、m+2…对应,直到下一个赋了值的枚举值或结束。10、下列关于运算符重载的叙述中,正确的是()。A、通过运算符重载机制可以为C++语言扩充新的运算符B、运算符重载的作用是使已有的运算符作用于类的对象C、重载运算符的操作数类型可以全部为基本类型D、所有运算符都可以被重载标准答案:B知识点解析:运算符重载就是赋予已有的运算符多重含义。通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,这便增强了C++语言的扩充能力。运算符重载要注意以下3点:①不能重载的运算符包括∷,.,.*?;②必须重载为成员函数的运算符包括[],(),->,=;③在类成员函数中重载运算符是不允许返回引用的,会出现“返回局部变量的地址”警告。11、下列运算符函数中,肯定不属于类Value的成员函数的是()。A、Valueoperator+(Value);B、Valueoperator-(Value,Value);C、Valueoperator*(int);D、Valueoperator/(Value);标准答案:B知识点解析:运算符作为非成员函数时,由于没有隐含this指针,因此所有的操作数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。12、下列各组类型声明符中,含义相同的一组是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int标准答案:B知识点解析:此题考查的是基本类型和派生型。C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。本题A选项中,unsignedlongint的省略形式为unsignedlong;选项B中,signedshortint的省略形式是short;选项C中,unsignedshort的省略形式是unsignedshort;选项D中,shortint的省略形式是short。13、有如下程序:#inc1ude<iostream>usingnamespacestd;classMonkey{public:Monkey(){cout<<’M’;}Monkey(charn){cout<<n;}~Monkey(){cout<<’Y’;}};intmain(){Monkeypl,*p2;p2=newMonkey(’X’);deletep2;return0:}运行这个程序的输出结果是()。A、MYXB、MYMYC、MXYD、MXYY标准答案:D知识点解析:在类Monkey中定义了默认的构造函数和带参数的构造函数,所以在主函数中,定义Monkey的对象pl时,调用默认的构造函数,输出M;定义Monkey的对象p2时,调用带参数的构造函数,输出X;在执行“deletep2;”语句时,调用析构函数,输出Y,在退出程序时,调用析构函数输出Y。14、有如下程序:#includeusingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<”n=”<A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员n的运算具有叠加性,执行“n+=2”和“n-=3”后n的值为0。15、有如下类定义:classXX{intxdata;public:XX(intn=0):xdata(n){}};classYY:publicXX{intydata;public:YY(intm=0,intn=0):XX(m),ydata(n){}};YY类的对象包含的数据成员的个数是()。A、1B、2C、3D、4标准答案:B知识点解析:因为类XX包括一个数据成员xdata,而类YY继承自类XX,所在类YY中也包含数据成员xdata,同时类YY中也定义了其本身的数据成员ydata,因而YY类的对象包含的数据成员的个数是2。16、若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为()。A、AA.getA()B、x.getA()C、x.aD、AA::a标准答案:B知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数getA()。17、有如下类定义:classMyClass{intb;chara;doublec;public:MyClass():c(0.0),b(0),a(’,’){}};创建这个类的对象时,数据成员的初始化顺序是()。A、a,b,cB、c,b,aC、b,a,cD、c,a,b标准答案:C知识点解析:类的成员初始化顺序与成员变量在构造函数中的位置先后顺序无关,只与成员变量在类中定义的先后顺序有关。18、有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb:XA(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA::b=0;intmain(){XAdl(2),d2(3);cout<<d1.get()+d2.get()+XA::b<<end1;return0;}运行时的输出结果是()。A、5B、6C、7D、8标准答案:C知识点解析:执行XA类的实例变量d1(2)时,成员函数d1.get()的返回值等于2,XA.b的值等于1,执行XA类的实例变量d2(3)时,成员函数d1.get()的返回值等于3,XA.b的值等于2,所以输出结果为2+3+2=7。19、通过派生类的对象可直接访问其()。A、公有继承基类的公有成员B、公有继承基类的私有成员C、私有继承基类的公有成员D、私有继承基类的私有成员标准答案:A知识点解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类中进行访问,而通过派生类的对象不能访问,所以选项c也是错误的。基类的公有成员通过公有继承后,在派生类中是公有成员,所以可以通过派生对象来访问。20、下面是一个模板声明的开始部分:templute<typenameT>double____由此可知()。A、这可能是一个函数模板的声明B、这可能是一个类模板的声明C、这既可能是一个函数模板的声明,也可能是一个类模板的声明D、这肯定是一个错误的模板声明标准答案:A知识点解析:此题考查的是函数模板的声明。声明一个函数模板的格式是:template<模板形参表声明>函数声明;定义类模板的格式是:template<类型形参表>class<类模板名>{};。21、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为()。A、ios_base::inB、ios_base::inlios_base::outC、ios_base::outD、ios_base::in&ios_base::out标准答案:A知识点解析:对于ifstream,默认打开模式是iosbase::in。ifstream只能用于输入,它没有提供任何用于输出的操作。22、下列函数模版中的定义中,合法的是()。A、template<typenameT>Tabs(Tx){returnx<0?-x:x;}B、templateclass<T>Tabs(Tx){returnx<0?-x:x;}C、templateT<class.T>abs(Tx){returnx<0?-x:x;}D、templateTabs(Tx){returnx<07-x:x;}标准答案:A知识点解析:此题考查的是函数模板。声明一个函数模板的格式是:template<模板形参表声明>函数声明,其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。23、若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTemp<double>p2;MyTemp<long>p3[2];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是()。A、1B、2C、3D、0标准答案:C知识点解析:p2是一个double型的MyTemp,p3[2]是一个long.型MyTemp数组,其中包括两个元素。所以共有3个MyTemp的实例。24、下列关于模板的叙述中,错误的是()。A、调用模板函数时,有时可以省略模板实参B、函数模板的每个实例就是一个函数定义C、类模板的每个实例就是一个类定义D、类模板的实例是一个类对象标准答案:D知识点解析:在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。类模板实例化所生成的每一个类定义就是相应类模板的一个实例。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列关于栈的叙述正确的是()。A、栈按“先进先出”组织数据B、栈按“先进后出”组织数据C、只能在栈底插入数据D、不能删除数据标准答案:B知识点解析:栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素的一端称为栈顶,另一端称为栈底。栈是按照“先进后出”的原则组织数据的。2、执行语句序列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。3、下列对队列的描述中正确的是()。A、队列属于非线性表B、队列按“先进后出”原则组织数据C、队列在队尾删除数据D、队列按“先进先出”原则组织数据标准答案:D知识点解析:队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾:允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除;反之,最后插入的元素将最后才能被删除。因此,队列又称“先进先出”或“后进后出”的线性表。4、阅读下面程序:#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<<endl;)则该程序的输出结果是()。A、11B、20C、21D、31标准答案:C知识点解析:由主函数入手,定义变量x、y、z,然后调用函数fun,其中的参数为(x--,y++,x+y)的计算结果和z一的计算结果,所以调用fun(13,8)计算结果为21。5、下面程序的运行结果是()。#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。6、若有以下定义,说法错误的是()。inta=100,*p=&a;A、声明变量p,其中*表示p是一个指针变量B、变量p经初始化,获得变量a的地址C、变量p只可以指向一个整型变量D、变量p的值为100标准答案:D知识点解析:D是一个指针,用来存储a变量的地址,而100是存储在该地址的一个值用p表示的为*p。7、有如下程序段:inti=0,j=1;int&r=i;∥@r=j;∥②int*p=&i;∥③*p=&r;∥④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:此题考查的是指针和引用。本题中,语句①是一条合法的引用声明语句,使得变量i被r引用;语句②通过引用r将变量j的值赋给变量i;语句③声明了指针变量p,并初始化指向变量i;语句④中*p代表了变量i的值,要将&r赋给*p,这会使编译器产生类型不符的错误提示。8、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、编译程序B、操作系统C、教务管理系统D、汇编程序标准答案:C知识点解析:编译软件、操作系统、汇编程序都属于系统软件,只有c教务管理系统才是应用软件。9、下面叙述中错误的是()。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行“错误定位”是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。软件测试要严格执行测试计划,排除测试的随意性。程序调试通常也称Debug,对被调试的程序进行“错误”定位是程序调试的必要步骤。10、有如下程序:#includeusingnamespacestd;classXA{inta;public:staticintb:XA(intaa):a(aa){b++;)~XA(){}intget0{returna;});intXA::b=0;intmain(){XAd1(2),d2(3);cout<A、5B、6C、7D、8标准答案:C知识点解析:执行xA类的实例变量d1(2)时,成员函数d1.get()的返回值等于2,xA.b的值等于1,执行xA类的实例变量d2(3)时,成员函数d1.get()的返回值等于3,xA-b的值等于2,所以输出结果为2+3+2=7。11、在E—R图中,用来表示实体联系的图形是()。A、椭圆形B、矩形C、菱形D、三角形标准答案:C知识点解析:构成E—R图的基本要素是实体型、属性和联系,其表示方法为:实体型(Entity)一用矩形表示;属性(Attribute)—用椭圆形表示,联系(Relationship)—用菱形表示,菱形框内写明联系名。12、有如下头文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是()。A、f1B、f2C、f3D、f4标准答案:C知识点解析:此题考查的是this指针。this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。题目中,只有f3()满足“类的非静态成员函数”的要求,故应选C选项。13、下面不属于结构化程序设计风格的是A、程序结构良好B、程序的易读性C、不滥用Goto语句D、程序的执行效率标准答案:D知识点解析:结构化程序设计(structuredprogramming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。14、下列关于派生类的叙述中,错误的是()。A、派生类至少要有一个基类B、派生类中包括了从基类继承的成员C、一个派生类可以作为另一个派生类的基类D、基类成员被派生类继承以后访问权限保持不变标准答案:D知识点解析:派生类对象对基类成员的访问权限:①对于公有继承,只有基类的公有成员可以被派生类对象访问,其他(保护和私有)成员不能被访问。②对于私有继承和保护继承,基类中所有成员都不能被派生类对象访问。派生类对基类成员的访问权限:①对于公有继承,基类中公有成员和保护成员可以访问,而基类中私有成员不能被访问。②对于私有继承和保护继承,也是基类中的公有成员和保护成员可以被派生类访问,而基类中的私有成员不能被访问。15、在开发一个C++程序的整个过程中,第3个步骤为()。A、链接B、运行C、编辑D、编译标准答案:A知识点解析:C++程序的开发过程是编辑、编译、链接、运行和调试。16、针对数组定义intdata[10];,下列表述中错误的是()。A、用*data可访问到数组的首元素B、用data[9]可访问到数组的末元素C、用data[10]访问数组元素会超出数组边界D、data共有10个元素,其首元素是data[1]标准答案:D知识点解析:此题考查的是数组和指针的概念。题目中data[10]共有10个元素,分别是data[0]、data[1]、data[2]、data[3]…data[9],首元素是data[0],所以选项D错误;其他选项均正确。17、下列字符串中,正确的C++标识符是()。A、foo—1B、2bC、newD、256标准答案:D知识点解析:此题考查的是C++语言中标识符的定义。标识符由字母、数字或下划线构成,但第一个字符必须是字母或下划线;标识符中大小写字母是不同的;用户定义标识符时,不允许采用系统的关键字。18、有如下程序:#inc1ude<iostream>usingruunespacestd;c1assObj{staticinti;public:Obj(){i++}——Obj(){i——;}staticintgetVal(){returni;}};intObj::i=0;voidf(){Objob2;cout<<ob2.getVal();}intmain(){Objobl;f();Obj*ob3=newObj;cout<<ob3—>getVal();deleteob3;cOut<<Obj::getVal();retutn0;}程序的输出结果是()。A、232B、231C、222D、221标准答案:D知识点解析:此题考查的是静态成员。本题中,Obj类定义了一个静态数据成员i,并初始化为0.在主函数中,首先定义了1个该类对象obl,所以构造函数被调用1次,i加1;然后调用函数f0,该函数中又定义了一个对象ob2,此时j再次加1变为2,然后通过函数getVal0输出i的值2。f()函数结束,ob2变量被释放,故析构函数被调用了1次,i变成1:回到主函数中,又动态创建了1个对象并让ob3指向它,此后i变成2并输出。最后释放动态创建的对象i变为l,输出1。故最终的输出结果是221。19、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun(){cout<<’B’;}};classDerived:publicBase{public:voidfun(){______cout<<’D’;}};intmain(){Derivedd;d.fun();return0;}若程序的输出结果是BD,则划线处缺失的部分是()。A、fun();B、Base.fun();C、Base::fun();D、Base->fun();标准答案:C知识点解析:派生类Derived的对象d调用其成员函数fun(),要输出结果为BD,所以在其成员函数fun()中要调用基类Base的成员函数fun()。20、如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。#inc1ude<iostream>usingnamespacestd;c1assBase{inta,b,public:Base(intx,inty){a=x;b=y;}voidshow(){cout<<a<<’,’<<b<<end1;}};c1assDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;)voidshow(){cout<<c<<’,’<<d<<end1;)};intmain(){BaseB1(50,50),*pb;DerivedD1(10,20,30,40);pb=&D1;retum0:retum();}运行时输出的结果是()。A、10,20B、30,40C、20,30D、50,50标准答案:A知识点解析:此题考查的是多态性。在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。在实函数的情况下。通过基类指针所调用的只能是基类的那个函数敝本,无法调用到派生类中中重定义函数。此题中,通过指针pb所调用的是基类的版本,即输出a和b的值10,20。21、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assGA{public;virtualintf(){retuml;}};c1assGB:publicGA{public;virtualintf(){return2;}};voidshow(GAg){cout<<g.f();}voiddisp1ay(GA&g){cout<<g.f();}intmain(){GAa:show(a);disp1ay(a);GBb:show(b);disp1ay(b);retum0;}运行时的输出结果是()。A、1111B、1211C、1112D、1212标准答案:C知识点解析:此题考查派生类与虚函数的考查。由主函数main入手,其中分别定义了类GA和GB的对象a和b。首先,执行参数a的show函数调用,其中的输出语句为调用GA类中的f()虚函数,返回1。同理disp1ay(a)函数输出1。show(b)函数中调用的为GA中的f()函数,disp1ay(b)调用GA中f()函数,返回1,disp1ay(b)调用GB中的f()函数返回2。所以最后输出为1112。22、有如下程序:#includeusingnamespacestd;classA{public:A(inti=0):r1(i){)voidprim(){cout<<’E’<A、P8-E4B、P8-C16-C、P0-E4-D、P0-C16-标准答案:D知识点解析:在主函数中创建a1对象时,调用类A的默认构造函数,其数据成员订的值等于0。当执行a1.pnnt(2)语句时,调用带参数的print成员函数,所以输出结果为p0-,对象a2为常成员,所以其成员变量r1的值等于4,因为常对象只能调用常成员函数,所以当执行语句a2.print()语句时,输出结果为C14-。23、已知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正确。24、已知类MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行:MyClockc1,c2;//……c2=c1+10;由此可知:为类MyClock重载的“+”运算符函数的声明是()。A、friendMyClockoperator+(MyClock,int);B、friendMyClockoperator+(MyClock,MyClock);C、fiendMyClockoperator+(int,MyClock);D、MyClockoperator+(MyClock);标准答案:A知识点解析:由表达式c2=c1+10可知,在对“+”进行重载时,第一操作数是Myclock类的对象,而第二操作数是一个整型数据。25、下列有关模板的叙述中,正确的是()。A、函数模板不能含有常规形参B、函数模板的_个实例就是一个函数定义C、类模板的成员函数不能是模板函数D、用类模板定义对象时,绝对不能省略模板实参标准答案:B知识点解析:此题考查的是模板的概念。函数模板可以含有常规形参;函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数;在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共22题,每题1.0分,共22分。)1、下列字符串中,不可以用作C++标识符的是()。A、y_2006B、_TEST_HC、ReturnD、switch标准答案:D知识点解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符:标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。2、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15;rear=15,则循环队列中的元素个数为()。A、15B、16C、20D、0或35标准答案:D知识点解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数为0:第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素个数为35。3、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、上述三种说法都不对标准答案:B知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。4、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:因为一一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。5、设二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为A、HGFEDCBAB、ABCDEFGHC、ABCDHGFED、DCBAHGFE标准答案:A知识点解析:前序遍历(DLR)是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右;中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游,可记做左根右;后序遍历(LRD)是二叉树遍历的一种,也叫做后根遍历、后序周游,可记做左右根。根据题中前序和中序序列均为ABCDEFGH,可画出二叉树,该二叉树是一个子结点全部在右侧二叉树,然后根据后序遍历方法,可得出后序遍历为HGFEDCBA。6、有如下程序:#include#includeusingstd∷cout;classPoint{public:frienddoubledistance(constPoint&p);∥p距原点的距离Point(intxx=0,intyy=0):x(xx),y(yy)}∥①private:intx,y;};doubledistance(constPoint&p){∥②returnsqrt(p.XP.x+p.yP.y);}intmain(){Pointp1(3,4);cout<A、程序编译正确B、程序编译时语句①出错C、程序编译时语句②出错D、程序编译时语句③出错标准答案:A知识点解析:这段程序是正确的,计算p距离原点的距离。语句①是类Point的构造函数,在构造函数中给变量xx和yy赋初值0。语句②是计算点p距原点的距离的函数distance。语句③是计算点p1距离原点的距离并输出。7、数据独立性是数据库技术的重要特点之一,所谓数据独立性是指()。A、数据与程序独立存放B、不同的数据被存放在不同的文件中C、不同的数据只能被对应的应用程序所使用D、以上三种说法都不对标准答案:D知识点解析:数据独立性是指数据库中数据独立于应用程序而不依赖于应用程序,即数据与程序间的互不依赖性。也就是说数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据的独立性包括物理独立性和逻辑独立性两级。①物理独立性:数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。②逻辑独立性:数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要相应的应用程序改变,这就是数据的逻辑独立性。8、下面属于黑盒测试方法的是A、语句覆盖B、逻辑覆盖C、边界值分析D、路径覆盖标准答案:C知识点解析:采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。9、下列关于C++函数的叙述中,正确的是()。A、每个函数至少要具有一个参数B、每个函数都必须返回一个值C、函数在被调用之前必须先声明D、函数不能自己调用自己标准答案:C知识点解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。10、通过派生类的对象可直接访问其()。A、公有继承基类的公有成员B、公有继承基类的私有成员C、私有继承基类的公有成员D、私有继承基类的私有成员标准答案:A知识点解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类中进行访问,而通过派生类的对象不能访问,所以选项c也是错误的。基类的公有成员通过公有继承后,在派生类种是公有成员,所以町以通过派生对象来访问。11、下列语句中错误的是()。A、constint

温馨提示

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

评论

0/150

提交评论