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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷5(共9套)(共213题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共24题,每题1.0分,共24分。)1、有如下类定义:classMyClass{public:private:intdata;};若要为MyClass类重载流输入运算符“>>”,使得程序中可以“cin>>obj;”的形式改变MyClass类的对象obj中数据成员data的值,则横线处的声明语句应为()。A、friendistream&operator>>(istream&is,MyClass&a;B、friendistream&operator>>(istream&is,MyClassa);C、istream&operator>>(istream&is,MyClass&a;D、istream&operator>>(istream&is,MyClassa;标准答案:A知识点解析:本题考查重载流运算符“>>”,根据重载规则,本题答案为A。2、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。3、字符串“a+b=12\n\t”的长度为()。A、12B、10C、8D、6标准答案:C知识点解析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8个字符。4、设树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点数为()。A、8B、7C、6D、5标准答案:B知识点解析:深度为m二叉树其总结点数为2m-1=24-1=15。总结点数减去度为1,2,3,4的结点个数就是叶子结点数。15-4-2-1-1=7。5、关于函数中的<返回类型>,下列表述中错误的是()。A、<返回类型>中有可能包含关键字intB、<返回类型>中有可能包含自定义标识符C、<返回类型>中有可能包含字符*D、<返回类型>中可能包含[]标准答案:D知识点解析:<返回类型>又称为函数类型,表示一个函数所计算(或运行)的结果值的类型。它可以是C++中已定义的数据类犁,也可能是用户自定义的数据类型。但是不能包含[],因为符号[]不是一个数据类型。6、对序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,需要比较次数为()。A、1B、2C、3D、4标准答案:C知识点解析:根据二分法查找法需要两次:①首先将60与表中间的元素55进行比较,由于60大于55,所以在线性表的后半部分查找。②第二次比较的元素是后半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在线性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这时两者相等,即查找成功。7、下列关于类定义的说法中,正确的是()。A、类定义中包括数据成员和函数成员的声明B、类成员的缺省访问权限是保护的C、数据成员必须被声明为私有的D、成员函数只能在类体外进行定义标准答案:A知识点解析:此题考查的是类的定义。类中缺省的访问权限是私有的,所以选项B错误;类的数据成员和成员函数的访问控制权限均可被声明为公有、私有和保护中的一种,所以选项c错误:成员函数的实现可以在类体内定义,也可以在类体外定义,所以选项D错误。8、下面不属于软件设计原则的是A、抽象B、模块化C、自底向上D、信息隐藏标准答案:C知识点解析:软件设计的基本原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。9、按照标识符的要求,下列选项中,()符号不能组成标识符。A、连接符B、下划线C、大小写字母D、数字字符标准答案:A知识点解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格:标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。10、己知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是()。A、枚举常量NAME的值为1B、枚举常量NUMBER的值为1C、枚举常量MINUS的值为6D、枚举常量PRINT的值为10标准答案:A知识点解析:此题考查的是C++语言的数据类型。第一个枚举常量的值为0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增1。11、若一个函数的原型为“int*Xfun1(intx,int&y,charz);”,则该函数的返回值类型为()。A、int*B、intC、int&D、char标准答案:A知识点解析:由“int*Xfunl(intx,int&y,charz);”的定义可知,其返回值为指向int指针的函数。12、将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是()。A、不合法的运算符B、一元运算符C、无操作数的运算符D、二元运算符标准答案:B知识点解析:对于一元或二元运算符函数作为成员函数重载时,第一操作数就是对象本身,并不显式地出现在参数表中。即第一操作数仅以this指针的形式隐含存在于参数表中。因此,对于一元运算符参数表是空的:对于二元运算符参数表中只有一个参数,它代表第二操作数。13、若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为()。A、AA.getA()B、x.getA()C、x.AD、AA::a标准答案:B知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数getA()。14、下列情况中,不会调用拷贝构造函数的是()。A、用一个对象去初始化同一类的另一个新对象时B、将类的一个对象赋值给该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时标准答案:B知识点解析:此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。因此,选项A、C、D均会调用复制构造函数,而只有选项B没有创建的动作,不调用复制构造函数。15、若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:C1、*C2、C3是3个MyClass对象.C4是MyClass对象的引用,它是对象C1的别名。16、下列关于this指针的描述中,正确的是()。A、类的成员函数都有this指针B、类的友元函数都有this指针C、任何与类相关的函数都有this指针D、类的非静态成员函数都有this指针标准答案:D知识点解析:this是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针可以知道自己属于哪一个对象。它隐藏于每个类的非静态成员函数中。17、有如下程序:#include<iostream>usingnamespacestd;classA{public:A(){cout<<="A";}};classB{public:B(){cout<<"B";}}classC:publicA{Bb;public:C(){cout<<"C";}};intmain(){Cobj;return0;}执行后的输出结果是()。A、CBAB、BACC、ACBD、ABC标准答案:D知识点解析:此题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。18、下列程序段中包含4个函数。其中具有隐含this指针的是()。intfun1();classTest{public:intfun2();friendintfun3():staticintfun4();}A、fun1B、fun2C、fun3D、fun4标准答案:B知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针知道自己属于哪一个对象。this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确的地表示出了成员函数当前操作的数据所属的对象。19、已知类MyCiock中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行:MyClockc1,c2;//……c2=c1+10;由此可知:为类MyClock重载的“+”运算符函数的声明是()。A、friendMyClockoperator+(MyClock,int);B、friendMyClockoperator+(MyClock,MyClock);C、friendMyClockoperator+(int,MyClock);D、MyClockoperator+(MyClock);标准答案:A知识点解析:由表达式c2=c1+10可知,在对“+”进行重载时,第一操作数是MyCloek类的对象,而第二操作数是一个整型数据。20、有如下程序:#include<iostream>usingnamespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<<page<<endl;}voidShow(){Media::Show();}//①};intmain(){BookBible;Bible.Name();//②Bible.Print();//③Bible:Show();//④return0;}编译时有错误的是()。A、语句①B、语句②C、语句③D、语句④标准答案:B知识点解析:类Book私有继承自类Media,所以类Media中的公有成员函数Name()在继承类Book中变成了私有成员函数,因而类Book的对象Bible不能访问私有成员函数Name()。21、下列关于虚函数的说明中,正确的是()。A、从虚基类继承的函数都是虚函数B、虚函数不得是静态成员函数C、只能通过指针或引用调用虚函数D、抽象类中的成员函数都是虚函数标准答案:B知识点解析:此题考查的是虚函数的概念。在成员函数的声明前面加上viual关键字,即可把函数声明为虚函数。虚函数可以是另一个函数的友元函数而不能是静态成员函数。22、有如下程序:#include<iostream>usingnamespacestd;classBase{public:virtualvoidfunction1(){tout<<’0’;}voidfunction2(){cout<<’1’;}};classDerived:publicBase{public:voidfunction1(){tout<<’2’;}voidfunction2(){cout<<’3’;}};intmain(){Base*p=newDerived();p->function1();p->function2();return0;};运行时的输出结果是()。A、01B、21C、03D、23标准答案:B知识点解析:函数function1()在基类Base中定义为虚成员函数,而在派生类Dervied中重新进行了定义,输出字符2,函数function2()在基类Base中定义虚成员函数,在主函数中使用指向基类的指针变量p访问function2()时,输出1。23、下列关于运算符重载的描述中,错误的是()。A、可以通过运算符重载在C++中创建新的运算符B、赋值运算符只能重载为成员函数C、运算符函数重载为类的成员函数时,第一操作数是该类对象D、重载类型转换运算符时不需要声明返回类型标准答案:A知识点解析:运算符重载应尽可能保持其原有的基本语义,而不是创建新的运算符。重载的运算符应该体现为原运算符的功能在新数据类型上的延伸,它的使用应当使程序中算法的表达式显得更流畅、自然,使阅读程序的人在不借助于其他说明资料的情况下就能够正确理解。24、下面关于C++流的叙述中,正确的是()。A、cin是一个输入流对象B、可以用ifstream定义一个输出流对象C、执行语句序列char*y="PQMN’’;cout<<,y;将输出字符串"PQMN”的地址D、执行语句序列charx[80];cin.getline(x,80);时,若键入Happynewyear则x中的字符串是"Happy’’标准答案:A知识点解析:此题考查的是C++流的概念和I/O的格式化。cin是类的对象,亦即输入流对象;ifstream是输入文件流类,不能定义一个输出流对象:C选项中最后输出的是字符串“PQMN”:D选项中x中字符串应该是“Happynewyear”。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共21题,每题1.0分,共21分。)1、下列字符串中,不可以用作C++标识符的是()。A、y_2006B、____TEST__HC、ReturnD、switch标准答案:D知识点解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。2、下列关于栈的描述中错误的是A、栈是先进后出的线性表B、栈只能顺序存储C、栈具有记忆作用D、对栈的插入与删除操作中,不需要改变栈底指针标准答案:B知识点解析:栈是限定在一端进行插入与删除的线性表。栈顶(top):插入数据(即入栈)的一端;栈底(bottom):不能入栈也不能出栈的一端。栈存储数据的原则:“先进后出”或“后进先出”。栈的特性是具有记忆作用。3、有如下程序:#includevoidfun(int&X,inty){intt=x;x=y;y=t;)intmain(){inta[2]={23,42);fun(a[1],a[0]);std::cout<<a[0]<<“,”<<a[1]<<std::endl;retum0:}执行后的输出结果是()。A、42,42B、23,23C、23,42D、42,23标准答案:B知识点解析:此题考查是是函数的调用以及参数值的传递。函数fun中的第一个参数是引用传值方式,是双向的;第二个参数是按值传递,是单向的。4、两个或两个以上模块之间关联的紧密程度称为()。A、耦合度B、内聚度C、复杂度D、数据传输特性标准答案:A知识点解析:模块的独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系较少且接口简单。衡量软件的模块独立性使用:内聚性和耦合性两个定性度量标准。内聚性是对…个模块内部各个元素彼此结合的紧密程度的度量;耦合性是对模块间互相连接的紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。5、数据独立性是数据库技术的重要特点之一,所谓数据独立性是指()。A、数据与程序独立存放B、不同的数据被存放在不同的文件中C、不同的数据只能被对应的应用程序所使用D、以上三种说法都不对标准答案:D知识点解析:数据独立性是指数据库中数据独立于应用程序而不依赖于应用程序,即数据与程序间的互不依赖性。也就是说数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据的独立性包括物理独立性和逻辑独立性两级。①物理独立性:数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。②逻辑独立性:数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要相应的应用程序改变,这就是数据的逻辑独立性。6、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度标准答案:B知识点解析:耦合性是反映模块问互相连接的紧密程度,内聚性是指一个模块内部各个元素问彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于模块的独立性。7、有以下程序,在横线应添加()。#include<iostream>usingnamespacestd;classTestClass{public:TestClass(intn){number=n;}//拷贝构造函数~TestClass(){}private:intnumber;};TestClassfun(TestClassp){TestClasstemp(p);returntemp;}intmain(){TestClassobj1(10),obj2(0);TestClassobj3(obj1);obj2=fun(obj3);return0:}A、TestClass(TestClass&other){number=other.number;}B、TestClass(TestClassother){number=other.number;}C、TestClass(TestClass&other){number;}D、TestClass(&other){number=other.number;}标准答案:A知识点解析:拷贝构造函数也是构造函数,但它只有一个参数,这个参数是本类的对象,即other,所以赋值操作将本类的参数other.number赋值给number;而且采用对象的引用的形式,也就是&other。8、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、并C、交D、差标准答案:D知识点解析:由关系T中的数据可以看出,其数据由属于关系R但是不属于关系S的数据组成。所以关系T是由关系R和S通过差运算得到的。9、下列符号中可以用作C++标识符的是()。A、_radiusB、foo-barC、elseD、3room标准答案:A知识点解析:此题考查的是C++语言中标识符的定义。标识符有字母、数字和下划线构成,其第一个字母必须是字母或下划线;定义标识符时,不要采用系统的保留字。10、数据独立性是数据库技术的重要特点之一,所谓数据独立性是指A、数据与程序独立存放B、不同的数据被存放在不同的文件中C、不同的数据只能被对应的应用程序所使用D、以上三种说法都不对标准答案:D知识点解析:数据独立性是指数据库中数据独立于应用程序而不依赖于应用程序,即数据与程序间的互不依赖性。也就是说数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据的独立性包括物理独立性和逻辑独立性两级。①物理独立性:数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。②逻辑独立性:数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要相应的应用程序改变,这就是数据的逻辑独立性。11、C++类体系中,不能被派生类继承的有()。A、构造函数B、虚函数C、静态成员函数D、赋值操作函数标准答案:A知识点解析:不能被继承的有构造函数、拷贝构造函数、赋值函数、析构函数。12、有如下语句序列:charstr[10];cin>>str;当从键盘输入”Ilovethisgame”时,str中的字符串是()。A、ˊˊIlovethisgameˊˊB、ˊˊIlovethiˊˊC、ˊˊIloveˊˊD、ˊˊIˊˊ标准答案:D知识点解析:由于字符\0作为字符串的结束标志,所以当从键盘上输入“Ilovethisgame”时,只把字母I输入字符串str。13、若字符指针p所指向的字符串为’’abcdefg’’,在执行语句()。Char*ap=newchar[strlen(p)+1];之后,印指向的字符数组的元素个数为A、9B、8C、7D、6标准答案:B知识点解析:字符指针p所指向的字符串为"abcdefg’’,所以函数strlen(p)的值等于7,再加1,等于8。14、若有下面的函数调用:fun(a+b,3,max(n-1,b))则fun的实参个数是()。A、3B、4C、5D、6标准答案:A知识点解析:此题考查的是函数的调用。C++中函数调用的一般形式为:函数名(实参表),其中实参表是用逗号分隔的一系列表达式。因此,本题中fun()函数的实参表由a+b、3和max(n-1,b)组成。15、若为Fraction类重载前增1运算符++,应在类体中将其声明为()。A、Fraction&operator++();B、Fraction&operator++(int);C、MendFraction&operator++();D、friendFraction&operator++(int);标准答案:A知识点解析:在类Fraction中重载前增1运算符++时,其声明形式为Fraction&operator++();在类Fraction中重载后增1运算符++时,其声明形式为Fraction&operatorH(int);。16、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun1(){cout<<’’Base\n’’;}virtualvoidfun2(){cout<<’’Base\n’’;}};classDerived:publicBase{public:voidfun1(){cout<<’’Derived\n’’;}voidfun2(){cout<<’’Derived\n’’;}};voidf(Base&b){b.fun1();b.fun2();}intmain(){Derivedobj;f(obj);return0:}执行这个程序的输出结果是()。A、BaseBaseB、BaseDerivedC、DerivedBaseD、DerivedDerived标准答案:B知识点解析:此题考查的是虚函数的概念。在C++语言中,一个派生类的对象可以被它的任何一个基类的指针所指向,若基类和派生类中存在一模一样的成员函数。那么通过该基类指针调用这样的成员函数时,若这个成员函数被定义成虚函数,那么就调用派生类中的;否则就调用基类中的。本题中,在f()函数中,形参b是一个基类的引用,它引用的是主函数中定义的派生类对象obj,所以在调用fun1()时,运行的是基类的版本,而fun2()运行的是派生类的版本。17、有如下程序:#includeusingnamespacestd;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为正确选项。18、下列关于赋值运算符“=”重载的叙述中,正确的是()。A、赋值运算符只能作为类的成员函数重载B、默认的赋值运算符实现了“深层复制”功能C、重载的赋值运算符函数有两个本类对象作为形参D、如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符标准答案:A知识点解析:赋值运算符“=”只能作为成员函数重载。19、如果利用C++流进行输入输出,下面的叙述中正确的是()。A、只能借助于流对象进行输入输出B、只能进行格式化输入输出C、只能借助于cin和cout进行输入输出D、只能使用运算符>>和<<进行输入输出标准答案:A知识点解析:此题考查的知识点是C++流。利用C++流既可以进行有格式输入输出,也可以进行无格式输入输出,所以选项B错误;C++的4个预定义的流对象为:cin—标准输入,cout—标准输出,cerr—标准出错信息输出,clog-一带缓冲的标准出错信息输出,选项C错误;C++流除了可以使用提取“>>”插入“<<”进行输入输出外,还可以通过流对象的一些成员函数进行输入输出,故选项D错误。20、模板对类型的参数化提供了很好的支持,因此()。A、类模板的主要作用是生成抽象类B、类模板实例化时,编译器将根据给出的模板实参生成一个类C、在类模板中的数据成员都具有同样类型D、类模板中的成员函数都没有返回值标准答案:B知识点解析:此题考查了类模板的概念。在定义对象的过程中,系统会自动地根据需要生成相应的类定义,这种依据类模板生成具体类的过程称为类模板的实例化。21、要利用C++流进行文件操作,必须在程序中包含的头文件是()。A、iostreamB、fstreamC、strstreamD、iomanip标准答案:B知识点解析:要使用文件流对象进行针对磁盘文件的I/O操作,必须包含fstrem.头文件。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共19题,每题1.0分,共19分。)1、下列字符串中可以用作C++标识符的是()。A、2009varB、gotoC、test-2009D、_123标准答案:D知识点解析:标识符是用户为程序中各种需要命名的“元素”所起的名字。标识符的组成要符合一定的规则:①标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。②标识符不能与任意一个关键字同名。③标识符中的字母区分大小写。④标识符不宜过长。C++语言一般设定一个标识符的有效长度为32个字符。由这四条规则可知,选项D为正确答案。2、下列有关指针的用法中,错误的是()。A、inti;int*p=&i;B、inti;int*p;i=*p;C、int*p;p=0;D、inti=5;int*P;p=&i;标准答案:B知识点解析:“inti:”语句为定义了一个整型变量i。“int*p”为定义一个整型指针p。选项A中的“int*p=&i;”是定义整型指针变量p,并指向整型i的地址。选项B)中“i=*p”语句是将p指向的变量赋值给i,而指针p没有初始化,所以选项B错误。选项C中“p=0;”表示p指向0的地址。选项D中“&i”为取i的地址,并赋值给p。3、阅读下面程序:#include<iostream.h>fun(inta,intB.{intc;c=a+b:returnC;}voidmain(){intx=6,y=7,z=8,r;r=fun((x--,y++,x+y),z--);cout<<r<<end1;}则该程序的输出结果是()。A、11B、20C、21D、31标准答案:C知识点解析:由主函数入手,定义变量x、y、z,然后调用函数fun,其中的参数为(x--,y++,x+y)的计算结果和z--的计算结果,所以调用fun(13,8)计算结果为21。4、下列叙述中正确的是()。A、循环队列是队列的一种链式存储结构B、循环队列是队列的一种顺序存储结构C、循环队列是非线性结构D、循环队列是一种逻辑结构标准答案:B知识点解析:本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。5、结构化程序设计中,下面对goto语句使用描述正确的是()。A、禁止使用goto语句B、使用goto语句程序效率高C、应避免滥用goto语句D、goto语句确实一无是处标准答案:C知识点解析:滥用goto语句确实有害,应尽量避免;完全避免使用goto语句并非是明智的方法,有些地方使用goto语句会使程序流程更清楚、效率更高;争论的焦点不应该放在是否取消goto语句,而应该放在用在什么程序结构上。6、下列选项中不属于结构化程序设计原则的是()。A、可封装B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句。7、已知函数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中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。8、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是()。A、测试B、设计C、可行性研究D、实现标准答案:C知识点解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设计、详细设计和实现属于开发阶段。9、数据字典(DD)所定义的对象都包含于()。A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。10、有如下程序:#includeusingnamespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<A、语句①B、语句②C、语句③D、语句④标准答案:B知识点解析:类Book私有继承白类Media,所以类Media中的公有成员函数Name()在继承类Book中变成了私有成员函数,冈而类Book的对象Bible不能访问私有成员函数Name()。11、有如下函数定义:voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=0,y=1;func(x,y);则变量x和y的值分别是()。A、0和1B、1和1C、0和2D、1和2标准答案:C知识点解析:此题考查的是函数参数的传递方式。此题中形参a是普通参数,即传值调用,函数中对a增1不会影响到实参x的值;形参b是传址调用,函数中对b增1同时会改变实参y的值。故最终结果是0和2。12、下列关于函数重载的叙述中,错误的是()。A、重载函数的参数个数可以不同B、重载函数的参数类型可以不同C、重载函数的返回值类型必须不同D、重载函数的参数个数或参数类型必须有所不同标准答案:C知识点解析:两个或两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪个函数,这就是函数的重载。13、有如下程序:#include<iostream>usingnamespacestd;classPoint{public:staticintnumber;public:Pointo{number++;}~Point(){number--;}};intPoint::number--0:voidmainO{Point*ptr;PointA,B:{Point*ptr_point=newPoint[3];ptx=ptr_point;}PointC;Gout+Point:number+endl;delete[]ptr;}运行时输出的结果是()。A、3B、4C、6D、7标准答案:C知识点解析:此题是静态成员、对象的构造和对象的生存期等知识点的综合考查。此题定义了一个静态成员变量number,初始值为0。主函数中第2行定义了2个Point对象,此时number变为2;随后new运算符又定义了一个包含3个Point对象元素的数组,其通过delete结束后number的值变为5;然后又定义了一个Point对象C,number变为6;最后输出number的内容。14、有如下程序:#include<iostream>usingnamespacestd;intmain(){charstr[100],*p;cout<<’’Pleaseinputastring:’’;cin;str;p=str;for(inti=0;*p!=’\0’;p++,i++);cout<<’’i’’<<end1;return0;}运行这个程序时,若输入字符串为:abcdefgabcd则输出结果是()。A、7B、12C、13D、100标准答案:A知识点解析:此题考查的是默认输入格式。本题输入数据类型为char,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefgabed,其中abcdefg后有空格。所以输入后str中的字符串为"abcdefg’’:主函数中接下来for语句的作用是计算字符串p的长度,故最终输出字符串"abcdefg’’的长度7。15、有如下程序:#include<iostream>#include<cstring>usingnamespacestd;classMyString{public:charstr[80];MyString(constchar*s){strcpy(str,s);}MyString&operator+=(MySringa){strcat(str,a.str);return*this;}};ostream&operator<<(ostream&s,constMyString&z){returns<<z.str;}intmain(){MyStringx(’’abe’’),y(’’ede’’);eout<<(x+=y)<<end1;return0;}运行这个程序的输出结果是()。A、ahcB、CdeC、abCdeD、ahccde标准答案:D知识点解析:在类MyString中,定义了带参数的构造函数MyString(constchar*s),其作用是把s指向的字符串拷贝到字符组str中。在类中还对运算+=进行重载定义,其作用是把字符串s仃和a相连接并赋给str,所以在主函数中执行x+=y时,结果为abccde。16、已知类Myclass的定义如下:classMyClass{public:MyClass(intd){data=d;}~MyClass(){}private:intdata;};下列对Myclass类对象数组的定义和初始化语句中,正确的是()。A、MyClassarrays[2];B、MyClassarrays[2]={MyClass(5)};C、MyClassarrays[2]={MyClass(5),MyClass(6)};D、MyClass*arrays=newMyClass[2];标准答案:C知识点解析:在选项C中定义了类MyClass对象数组arrays[2],并用对象MyClass(5)和MyClass(6)对这个数组中的两个元素赋初值。17、有如下程序:#include<iostrearm>#include<iomanip>usingnamespacestd;intmain(){cout<<setfill(’#’)<<setw(4)<<’’OK’’<<123<<endl;return0;}运行这个程序的输出结果是()。A、##OK123B、##OK#123C、K#123D、OK##123#标准答案:A知识点解析:setfill是设置填充字符,setw设置输出的宽度,它们的作用表现在紧接着输出的字符串上。这个宽度是填充后的宽度。所以cout<<setfill(’#’)<<setw(4)<<’’OK’’<<123中,setfill和s6tw只作用在’’OK’’,表示在’’OK’’前面填充2个##。18、要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是()。A、ifstreamfin=ifstream.open("file.dat");B、ifstream*fin=newifstream("file.dat");C、ifstreamfin;fin.open("file.dat");D、ifstream*fin=newifstream();fin->open("file.dat");标准答案:A知识点解析:在选项A中,在赋值号的左侧表示建立一个输入流对象fin,而在赋值号的右侧的表达式不正确,因为文件输入流类ifStream不能直接调用其成员函数open。19、语句ofstreamf("SALARYDAT",iosbase::app);的功能是建立流对象f,并试图打开文件SALARYDAT与f关联,而且()。A、若文件存在,将其置为空文件;若文件不存在,打开失败B、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D、若文件存在,打开失败;若文件不存在,建立一个新文件标准答案:B知识点解析:此题考查的是文件打开模式。文件打开模式iso_base::app是为添加数据而打开(总是在尾部写),故只有选项B说法正确。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共23题,每题1.0分,共23分。)1、下列叙述中正确的是A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。2、一棵二叉树的前序遍历结果是ABCEDF,中序遍历结果是CBAEDF,则其后序遍历的结果是()。A、DBACEFB、CBEFDAC、FDAEBCD、DFABEC标准答案:B知识点解析:由于该二叉树的前序遍历结果是ABCEDF,显然A结点为根结点,所以后序遍历时A结点是最后遍历的,其后序遍历的结果为CBEFDA。3、在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是()。A、ios―base::curB、ios―base::begC、ios―base::outD、ios―base::end标准答案:A知识点解析:streamoff定义于iostream.h中,定义有偏移量offset所能取得的最大值,seek―dir表示移动的基准位置,是一个有以下值的枚举:ios::beg:(文件开头)、ios::cur:(文件当前位置)、ios::end:(文件结尾)。4、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用、退役的过程。5、下列叙述中正确的是A、程序执行的效率与数据的存储结构密切相关B、程序执行的效率只取决于程序的控制结构C、程序执行的效率只取决于所处理的数据量D、以上都不正确标准答案:A知识点解析:影响程序执行效率的冈素有很多,如数据的存储结构、程序处理的数据量、程序的算法等。顺序存储结构和链式存储结构在数据插入和删除操作上的效率就存在差别。其中,链式存储结构的效率要高一些。6、数据库设计中反映用户对数据要求的模式是()。A、内模式B、概念模式C、外模式D、设计模式标准答案:C知识点解析:概念模式,是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(DataDescriptionLanguage,DDL)来描述、定义的,体现、反映了数据库系统的整体观。外模式对应于用户级,它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,也称为子模式或用户模式.它是用户的数据视图,也就是用户所见到的数据模式,它反映了用户对数据的要求。包含模式中允许特定用户使用的那部分数据,用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(DataManipulationLanguage,DML)对这些数据记录进行描述。内模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。7、负责数据库中查询操作的数据库语言是()。A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:负责数据库中查询操作的数据库语言是数据操纵语言。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、friendB、namespaceC、continueD、byte标准答案:D知识点解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时用到的关键字;namespace是定义或使用名字空间时用到的关键字;continue是终止本次循环直接开始下一次循环所用到的关键字;byte是字节的意思,它不是C++语言中的关键字。11、下列有关类成员的叙述中,正确的是()。A、友元函数是类的成员函数B、类成员的默认访问权限是私有的C、类成员函数必须声明为公有的D、类的静态数据成员不能是常成员标准答案:B知识点解析:此题考查的是类成员的有关概念。类的友元函数可以直接访问该类的所有成员,但它不是类的成员函数,故选项A错误;类成员函数的访问权限可以声明为公有、保护、私有,故选项C错误;静态数据成员的声明是使用关键字static.它可以是常成员,故选项D错误。12、有如下程序:#include<iostream>usingnamespacestd;classPoint{intx,y;public:Point(intx1=0,inty1=0):x(x1),y(y1){}intget(){returnx+y;}};classCircle{Pointcenter;intradius;public:Circle(intcx,intcy,intr):center(cx,cy),radius(r){}intgetO{returncenter.get0+radius;}};intmain(){Circlec(3,4,5);cout<<c.get()<<end1;return0;}运行时的输出结果是()。A、5B、7C、9D、12标准答案:D知识点解析:根据类Point和类Circle韵定义可知,类Circle的实例c(3,4,5)的成员函数c.get()返回值为3+4+5=12。13、下列关于派生类的叙述中,错误的是()。A、派生类至少要有一个基类B、派生类中包括了从基类继承的成员C、一个派生类可以作为另一个派生类的基类D、基类成员被派生类继承以后访问权限保持不变标准答案:D知识点解析:派生类对象对基类成员的访问权限:①对于公有继承,只有基类的公有成员可以被派生类对象访问,其他(保护和私有)成员不能被访问。②对于私有继承和保护继承,基类中所有成员都不能被派生类对象访问。派生类对基类成员的访问权限:①对于公有继承,基类中公有成员和保护成员可以访问,而基类中私有成员不能被访问。②对于私有继承和保护继承,也是基类中的公有成员和保护成员可以被派生类访问,而基类中的私有成员不能被访问。14、有如下程序#include<iostream>usingnamespacestd;classBase{protected:Base(){cout<<’A’;}Base(charc){cout<<c;}};classDerived:publicBase{public:Derived(charc){cout<<c;}};intmain(){Derivedd1(’B’);return0;}执行这个程序屏幕上将显示输出()。A、BB、BAC、ABD、BB标准答案:C知识点解析:此题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序是:执行基类的构造函数,调用顺序按照各个基类被被继承时声明的顺序;执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序:执行派生类的构造函数。此题中,在建立派生类Derived的对象dl时会先调用基类Base的构造,调用的是默认构造函数,输出字符‘A’;然后调用自身的构造函数,输出‘B’;故程序的输出结果是:AB。15、在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:如果一个类中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。16、通过运算符重载,可以改变运算符原有的()。A、操作数类型B、操作数个数C、优先级D、结合性标准答案:A知识点解析:此题考查的是运算符重载。运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。故本题选项A正确。17、若在表达式y/x中,"/"是作为成员函数重载的运算符,则该表达式还可以表示为()。A、x.operator/(y)B、operator/(x,y)C、y.operator/(x)D、operator/(y,x)标准答案:C知识点解析:运算符函数的函数名是由运算符前加关键字operator构成的。所以当“/”作为运算符重载后,其格式为operator/。所以其作为成员函数调用时的格式为y.operator/(x)。18、有如下类定义c1assMyClasspublic:________Private:intdata;};若要为MyClass类重载流输入运算符>>,使得程序中可以“cin>>obj;”形式输入MyClass类的对象obj,则横线处的声明语句应为()。A、friendistream&operator>>(istream&is’MyClass&a);B、friendistream&operator>>(istream&is,MyClassa);C、istream&operator>>(istream&is,MyClass&a);D、istream&operator>>(istream&is,MyClassa);标准答案:A知识点解析:C++的输入运算符>>作为非类成员函数重载。在一个类中,可将输入运算符>>声明为友元函数,在类MyClass重载输入运算符>>的形式如选项A)所示。19、若为Fraction类重载前增1运算符++,应在类体中将其声明为()。A、Fraction&operator++();B、Fraction&operator++(int),C、friendFraction&operator++();D、friendFraction&operator++(int);标准答案:A知识点解析:在类Fraction中重载前增1运算符++时,其声明形式为Fraction&operator++();在类Fraction中重载后增1运算符++时,其声明形式为Fraction&operator++(int);。20、有函数模板声明和一些变量定义如下:template<classT1,classT2,classT3>T1sum(T2,T3);doubledl,d2;则下列调用中,错误的是()。A、sum<double,double,double>(d1,d2);B、sum<double,double>(d1,d2);C、sum<double>(d1,d2);D、sum(d1,d2);标准答案:D知识点解析:虚拟类型参数T1没有出现在模板函数的形参表中,因此在调用时不可能从模板函数的实参表中获得相应的信息,因此T1无法省略。而在选项D)中省略了。21、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是()。A、fstreamB、istrearaC、ostreamD、iomanip标准答案:D知识点解析:要使用setw、fixed等操作符,须包含iomanip这个文件。22、有如下函数模板:templateTsquare(Tx){returnx*x;}其中T是()。A、函数形参B、函数实参C、模板形参D、模板实参标准答案:C知识点解析:此题考查的是函数模板。声明一个函数模板的格式是:template<模板形参表声明>函数声明,{函数体}其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名:类型修饰参数名。23、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为()。A、ios_base:finB、ios_base::in|ios_base::outC、iosbase::outD、iosbase::in&iosbase::out标准答案:A知识点解析:对于ifstream,默认打开模式是ios_base::in。ifstream只能用于输入,它没有提供任何用于输出的操作。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共17题,每题1.0分,共17分。)1、下列叙述中正确的是A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。2、下列数据结构中,能够按照“先进后出”原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据:队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。3、下列叙述中正确的是()。A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:本题主要考查了栈、队列、循环队列的概念,栈是先进后出的线性表,队列是先进先出的线性表。根据数据结构中各数据元素之间的前后件关系的复杂程度.一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。4、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、笛卡尔积B、交C、并D、自然连接标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的有序组可知R与S进行的是自然连接操作。5、已知递归函数fun的定义如下:intfun(intn){if(n<=1)return1;//递归结束情况elsereturnn*fun(n.2);//递归}则函数调用语句fun(5)的返回值是()。A、5B、12C、15D、30标准答案:C知识点解析:递归函数fun被定义为含有参数intn,返回整型。其中fun函数递归调用本身,当n=1时,fun返回1,如果大于1那么执行n*fun(n-2)。所以,当n等于5时,执行5*fun(3);当3时继续调用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案为15。6、在三级模式之间引入两层映像,其主要功能之一是()。A、使数据与程序具有较高的独立性B、使系统具有较高的通道能力C、保持数据与程序的一致性D、提高存储空间的利用率标准答案:A知识点解析:数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。7、下面不属于需求分析阶段任务的是()。A、确定软件系统的功能需求B、确定软件系统的性能需求C、需求规格说明书评审D、制定软件集成测试计划标准答案:D知识点解析:需求分析阶段的工作可分为4个阶段:需求获取、需求分析、编写需求规格说明书、需求评审。8、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组组成的,记为R∩S。9、在下列关键字中,不能用来表示继承方式的是()。A、privateB、staticC、publicD、protected标准答案:B知识点解析:此题考查的是继承方式。继承方式有私有(private)、保护(protected)、公有(public)三种。10、有如下程序:#inc1ude<iostream>voidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};return0,}执行后的输出结果是()。A、42,42B、23,23C、23,42D、42,23标准答案:B知识点解析:此题考查是是函数的调用以及参数值的传递。函数fun中的第一个参数是引用传值方式,是双向的;第二个参数是按值传递,是单向的。11、下列描述中,不属于面向对象思想主要特征的是()。A、封装性B、跨平台性C、继承性D、多态性标准答案:B知识点解析:封装性、继承性和多态性是面向对象程序设计的三个基本特征。跨平台性不是面向对象程序设计的特征。12、有如下类定义:classPoint{private;staticinthow_many;};_________how_many=0;要初始化Point类的静态成员how_many,下划线处应填入的内容是()。A、ingB、staticintC、intPoint::D、staticintPoint::标准答案:C知识点解析:此题考查的是静态数据成员的初始化。静态数据成员应在类体外进行初始化,且初始化的一般格式为:数据类型类名::静态数据成员名=初始值。13、有如下程序:#inc1ude<iostream>#inc1ude<cstring>usingnamespacestd;classMyString{public:charstr[80];MyString(constchar*s){strcpy(str,s);}MyString&operator+=(MyStringa){strcat(str,a.str);return*this;}};ostream&operator<<(ostream&s,constMyString&z){returns<<z.str,}intmain(){MyStringx(”2lbc¨),y("cde");cout<<(x+=y)<<endl;return0;}运行这个程序的输出结果是()。A、abcB、cdeC、abcdeD、abccde标准答案:D知识点解析:在类MyString中,定义了带参数的构造函数MyString(constchar*s),其作用是把s指向的字符串拷贝到字符组str中。在类中还对运算+=进行重载定义,其作用是把字符串str和a相连接并赋给str,所以在主函数中执行x+=y时,结果为abccde。14、有如下程序:#include<iostream>#include<cstfing>usingoamespacestd;classXCF{inta;public:XCF(intaa=0):a(aa){cout<<’’1’’;}XCF(XCF&x){a=x.a;cout<<’’2’’;}-XCF(){cout<<a;}intGeta(){return,a;}};intmain(){XCFd1(5),d2(d1);XCF*pd=newXCF(8);cout<<pd->Geta0;deletepd;return0;}运行时的输出结果是()。A、1215588B、1218855C、12185D、128512标准答案:B知识点解析:在这个程序中在建立对象dl(5)时,调用构造函数XCF(intaa=0):a(aa){tout<<"1";),输出1;在建立d2(d1)时,调用拷贝构造函数XCF(XCF&x){a=x.a;cout<<"2";},输出2;在建立newXCF(8)对象时,调用构造函数XCF(intaa=0):a(aa){cout<<"1";},输出1;语句cout<<pd->Geta()的功能是输出8;语句deletepd;调用析构函数~XCF(),输出8;当退出程序时,分别释放对象d2、d1,输出55。15、有如下程序:#include<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum0{returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=new"rest;deletep;tout<<’’n=’’<<Test::getNum()<<end1;return0;}执行后的输出结果是()。A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员n的运算具有叠加性,执行“n+=2”和“n-=3”后n的值为0。16、下列关于模板的叙述中,正确的是()。A、如果一个类中存在纯虚函数,这个类就是类模板B、函数模板不能有形式参数表C、类模板是一种参数化类型的类,是类的生成器D、类模板中不能包含构造函数标准答案:C知识点解析:对于函数模板,数据类型本身成了它的参数,是一种参数化类型的函数。对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。17、下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是()。A、cout<<internal<<12345;B、cout<<left<<12345:C、cout<<right<<12345;D、cout<<setw(6)<<12345;标准答案:D知识点解析:选项A,B,C都没有指输出数据的宽度,所以在输出时,按实际字符的宽度输出,而选项D指定输出字符的宽度为6,而实际输出的宽度等于5,所以最后一个字符用空格补齐。国家二级C++机试(选择题)模拟试卷第6套一、选择题(本题共24题,每题1.0分,共24分。)1、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的性质,在任意二叉树中,度为O的结点(即叶子结点)总是比度为2的结点多一个。2、对如下二叉树进行后序遍历的结果为()。A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA标准答案:D知识点解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右予树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左予树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回;否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项D)为正确答案。3、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为()。A、63B、64C、6D、7标准答案:B知识点解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较

温馨提示

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

评论

0/150

提交评论