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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷13(共9套)(共211题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共24题,每题1.0分,共24分。)1、下面程序的输出结果为()。#include<iostream.h>classTestClass{public:TestClass(){val++;}staticintval;};intTestClass::val=0:voidmain(){TestClasscs1;cout<<cs1.val<<"";TestClasscs2;TestClasscs3,cs4;cout<<cs2.val<<endl;}A、03B、13C、14D、24标准答案:C知识点解析:由主函数main入手,定义TestClass类的对象cs1,执行cs1.val,其中val为静态变量,根据“intTestClass::val=0;”初始化,TestClass中的TestClass(){val++;}构造函数执行后,val值为1。主函数中接着定义对象cs2,cs3,cs4。执行“cout<<cs2.val<<endl:”中的val值为4。2、有如下程序:#include<iostream>usingnamespacestd;classTestClass{protected:TestClass0{tout<<’x’;}TestClass(charc){cout<<c;}};classTestClass1:publicTestClass{public:TestClass1(charc){cout<<c;}};intmain(){TestClass1d1(’y’);return0:}执行这个程序,屏幕上将显示输出()。A、yB、yxC、xyD、yy标准答案:C知识点解析:程序中的类TestClass为基类,TestClass1为TestClass的派生类。由main主函数入手。定义TestClassl类型的对象d1,参数值为’y’。TestClass1类继承TestClass,所以主函数中“TestClass1dl(y);”语句首先调用基类中的“TestClass(){cout<<’x’;}”输出x,然后调用“TestClass1(charc){cout<<c;}”输出y,即答案为“xy”。3、下列叙述中错误的是A、具有两个根结点的数据结构一定属于非线性结构B、具有两个以上指针域的链式结构一定属于非线性结构C、具有两个以上叶子结点的数据结构一定属于非线性结构D、具有一个根结点且只有一个叶子结点的数据结构也可能是非线性结构标准答案:B知识点解析:非线性结构,数学用语,其逻辑特征是一个结点元素可能有多个直接前趋和多个直接后继。常见的非线性结构有:二维数组,多维数组,广义表,树(二又树等),图。4、有如下程序段:inti=0,j=1;nt&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而,*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。5、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是()。A、编辑软件B、操作系统C、教务管理系统D、浏览器标准答案:B知识点解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。支撑软件是介于系统软件和应用软件之问,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅助管理人员控制开发进程和项目管理的工具软件。6、存在定义inta[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的?()A、x*pa;B、x=*(a+1);C、x=*(pa+1);D、x=a[1];标准答案:A知识点解析:选项B)、C)、D)都是获取a(1)元素,而选项A)是获取a(0)的元素。7、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derived1d1;Derived2d2;d1.data=0;//①d2.data=0;//②retum0;}下列关于程序编译结果的描述中,正确的是()。A、①②皆无编译错误B、①有编译错误,②无编译错误C、①无编译错误,②有编译错误D、①②皆有编译错误标准答案:C知识点解析:本题考查公用继承和保沪继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中Deljvedl公用继承Base,所以①编译正确,Derived2保护继承Base,所以②编译不正确。8、在C++中,cin是一个()。A、类B、对象C、模板D、函数标准答案:B知识点解析:本题考查流对象cin,属于基础知识,cin是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为B。9、下列描述中正确的是()。A、软件测试应该由程序开发者来完成B、程序经调试后一般不需要再测试C、软件维护只包括对程序代码的维护D、以上三种说法都不对标准答案:D知识点解析:为了达到好的测试效果,应该由独立的第三方进行测试工作。因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是会不同程度地存在障碍的,所以选项A)错误。在程序调试时,修改了一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以选项B)错误。所谓软件维护,就是将交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改,所以选项C)错误。10、类MyClass的定义如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private;intvalue;);则对下列语句序列正确的描述是()。MyClass*P,my;p=&my;A、语句p=&my;是把对象my赋值给指针变量PB、语句Myaass*p,my;会调用两次类MyClass的构造函数C、对语句*p.SetVariable(5)的调用是正确的D、语句p->SetVariable(5)与语句my.SetVariable(5)等价标准答案:D知识点解析:选项A),语句p=&my;是把对象my的地址值赋值给指针变量p;选项B),语句MyClass*p,my;,由于p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数;对成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名.成语函数名(形参表),故选项C)错误,选项D)正确。11、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:逻辑结构设计的任务:概念结构是各种数据模型的共同基础,为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。它包括从E-R图向关系模式转换和逻辑模式规范化及调整、实现。12、关于new运算符的下列描述中,错误的是()。A、它可以用来动态创建对象和对象数组B、使用它创建的对象或对象数组可以通过运算符delete删除C、使用它创建对象时要调用构造函数D、使用它创建对象数组时必须指定初始值标准答案:D知识点解析:用new创建对象是不用显式调用构造函数的,它自己会自动调用。13、执行语句序列()。inti=0;while(i<25)i+=3;cout<<i;输出结果是A、24B、25C、27D、28标准答案:C知识点解析:此题考查的是循环语句while的使用。i为3的倍数,当i=24时,i<25,执行while的循环体i+=3,则i=27,不满足i<25的条件,结束循环。14、有如下程序段:inti=l;while(1){i++:if(i==10)break;if(i%2==0)cout<<’*’;}执行这个程序段输出字符木的个数是()。A、10B、3C、4D、5标准答案:C知识点解析:这段程序代码的功能是计算在1~10(包括10)之间偶数i的个数,如果整数i为偶数,则输出一个‘*’,共有4个偶数,所以共输出4个‘*’。15、有如下程序:#includeusingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()const{returnim;}Complex&operator+=(Complexa){re+=a.re;im+=a.im;return*this;}};ostream&operator<<(ostream&s,constComplex&z){returns<<’(’<A、(1,-2)B、(2,3)C、(3,5)D、(3,1)标准答案:D知识点解析:此题考查了运算符重载应用。因为x和y都是Complex类的对象,Complex类中已经重载了+=运算符,表达式x+=y就等价与x.operator+=(y),执行后得到(3,1);接着计算cout<<(x+=y),其等价于调用operator<<(cout,(x+=y)),最后输出结果是(3,1)。16、在对函数进行原型声明时,下列语法成分中,不需要的是()。A、函数返回类型B、函数参数列表C、函数名D、函数体标准答案:D知识点解析:在C++中函数在使用之前要预先声明,这种声明在标准C++中称为函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类型。17、有类定义如下:classType{public:Type(inti=0);Typeoperator一(int);friendTypeoperator+(Type,Type);private:intval;};若有对象定义Typecl;则下列语句序列中,错误的是()。A、Type(3)+c1;B、cl+Type(3);C、3一cl;D、c1—3;标准答案:C知识点解析:由于在类Type中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3是正确的,而3-c1是错误的表达式。18、如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是()。A、public和publicB、public和protectedC、protected和publicD、protected和protected标准答案:D知识点解析:此题考查的是基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。19、下列代码段声明了3个类classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列关于这些类之间关系的描述中,错误的是()。A、类Person是类Undergraduate的基类B、类Undergraduate从类student公有继承C、类student是类Person的派生类D、类Undergraduate是类Person的派生类标准答案:B知识点解析:Student类公有继承自Person类,Undergraduate类私有继承自Srudent类。所以Undergraduate类是从Student类私有继承的。20、如果表达式a>=b中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为()。A、a.operator>=(b)B、b.operatotr>=(a)C、operator>=(a,b)D、operator>=(b,a)标准答案:C知识点解析:运算符函数作为非成员函数时,没有隐含的this指针,因此所有的操作数必须出现在参数表中,对于二元运算符,参数表中有两个参数,分别代表第一操作数和第二操作数,且顺序不能改变。21、下列关于类模板的模板参数的叙述中,错误的是()。A、模板参数可以作为数据成员的类型B、模板参数可以作为成员函数的返回类型C、模板参数可以作为成员函数的参数类型D、模板参数不能作为成员函数的局部变量的类型标准答案:D知识点解析:此题考查的是模板参数。模板参数是一种参数化的数据模型,在模板类或模板函数中,只要使用数据类型的地方都能使用模板参数来代表一种未知的数据类型。所以,模板参数可以作为成员函数的局部变量类型。22、有如下函数模板定义:temp1ate<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。23、下列关于模板的叙述中,正确的是()。A、如果一个类中存在纯虚函数,这个类就是类模板B、函数模板不能有形式参数表C、类模板是一种参数化类型的类,是类的生成器D、类模板中不能包含构造函数标准答案:C知识点解析:对于函数模板,数据类型本身成了它的参数,是一种参数化类型的函数。对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。24、下列关于C++预定义流对象的叙述中,正确的是()。A、cin是C++预定义的标准输入流对象B、cin是C++预定义的标准输入流类C、cout是C++预定义的标准输入流对象D、cout是C++预定义的标准输入流类标准答案:A知识点解析:cin为istream流类的标准输入对象,标准输入设备就是指键盘。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共21题,每题1.0分,共21分。)1、下列运算符函数中肯定不属于类FunNumber的成员函数的是()。A、intoperator一(FunNumber);B、FunNumberoperator一();C、FunNumberoperator一(int);D、intoperator一(FunNumber,FunNumber);标准答案:D知识点解析:本题考查运算符重载的一些规则:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符=、()、[]、一>不能重载为类的友元函数;③类型转换函数只能定义为一个类的成员函数,而不能定义为类的友元函数;④若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好;⑤若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数;⑥当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个内部类型的对象,该运算符函数必须作为一个友元函数来实现。所以答案为D。2、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。分别是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。数据字典是对系统中数据的详尽描述,是各类数据属性的清单。对数据设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。3、必须用一对大括号括起来的程序段是()。A、switch语句中的cIise标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体标准答案:D知识点解析:本题考查c++基本控制结构,A、B、c三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。4、软件生命周期是指A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用、退役的过程。5、以下程序的输出结果是()。#include<iostream>usingnamespacestd;voidfun(char**q){++q;cout<<*q<<end1;}main(){staticchar*s[]={’’HI","HELLO’’,’’TEST’’};char**p;p=s;fun(p);system(’’PAUSE’’);return0;}A、为空B、HIC、HELLOD、TEST标准答案:C知识点解析:由程序main主函数入手,调用fun函数,在fun函数中执行“cout<<*q<<end1;”语句实现程序输出。主函数中变量char*s[]为指针数组,char**p表示p指向的字符指针数据。*p就代表p指向的字符指针。语句“p=s;"表明p指向字符指针s,而**p则是s[]中的第一个字符串“HI”。主函数将变量p传值给函数fun(char**q)中的q,在函数体内部首先执行“++q”语句,就是将q的指针指向s中的下一个字符串,即“HEILO”,所以输出语句“cout<<*q<<end1:”输出该字符串值。6、数据独立性是数据库技术的重要特点之一,所谓数据独立性是指()。A、数据与程序独立存放B、不同的数据被存放在不同的文件中C、不同的数据只能被对应的应用程序所使用D、以上三种说法都不对标准答案:D知识点解析:数据独立性是指数据库中数据独立于应用程序而不依赖于应用程序,即数据与程序间的互不依赖性。也就是说数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据的独立性包括物理独立性和逻辑独立性两级。①物理独立性:数据的物理结构(包括存储结构、.存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。②逻辑独立性:数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要相应的应用程序改变,这就是数据的逻辑独立性。7、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式包括概念模式、外模式和内模式(物理模式)。8、有三个关系R、S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为()。A、选择B、投影C、交D、并标准答案:D知识点解析:由关系T中的数据可以看出,其数据由关系R和s的数据组成。所以关系T是由关系R和T通过并运算得到的。9、已知类MyClass声明如下:classMyClass{intn:public:MyClass(intk):n(k){}intgetValue()const{returnn;}};在下列数组定义中正确的是()。A、MyClassxl[2];B、MyClassx212]--{newMyClass(1),newMyClass(2)};C、MyClass木x312];D、MyClass*x412]={MyClass(1),MyClass(2));标准答案:C知识点解析:考查的是对象数组。选项A中在建立对象数组时也同样需要调用构造函数;选项B和D的类型不匹配,B中不能将指针传给非指针,D中是将非指针传给指针。10、()提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。A、公有成员B、私有成员C、私有成员函数D、保护成员标准答案:A知识点解析:此题考查的是公有成员的特点。公有成员允许可使用者访问,提供了类对外部的接口。11、下列语句中,错误的是()。A、constintbuffeF256;B、constdouble*point;C、intconstbuffer=256;D、double*constpoint;标准答案:D知识点解析:此题考查的是常指针和指针常量的概念。常指针是指向一个常量的指针变量,指针自身的内容可以改变但指针指向的内容不可以改变:指针常量是一个常量,即不能修改指针自身的内容,但可以通过指针修改其所指向的内容。D选项中指针常量point没有初始化.编译无法通过。12、若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是()。A、operatorlong()const;B、operatorlong(bigNumber);C、longoperatorlong()const;D、longoperatorlong(BigNumber);标准答案:A知识点解析:在重载类型转换符时,由于运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。13、已知有数组定义chara[3][4];下列表达式中错误的是()。A、a[2]="WIN"B、strcpy(a[2],"WIN")C、a[2][3]=’W’D、a[0][1]=a[0][1]标准答案:A知识点解析:本题主要是对字符数组的考查。选项A中a[2]为一个地址,所以不能用等号进行赋值操作。14、下列关于this指针的描述中,正确的是()。A、类的成员函数都有this指针B、类的友元函数都有this指针C、任何与类相关的函数都有this指针D、类的非静态成员函数都有this指针标准答案:D知识点解析:this是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针可以知道自己属于哪一个对象。它隐藏于每个类的非静态成员函数中。15、有如下类定义classMyClasspublic:____________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所示。16、关于函数重载,下列叙述中错误的是()。A、重载函数的函数名必须相同B、重载函数必须在参数个数或类型上有所不同C、重载函数的返回值类型必须相同D、重载函数的函数体可以有所不同标准答案:C知识点解析:此题考查的是函数重载。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。17、计算斐波那契数列第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次。18、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为()。A、派生类、成员对象类、基类B、成员对象类、基类、派生类C、基类、成员对象类、派生类D、基类、派生类、成员对象类标准答案:C知识点解析:建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造函数,调用的顺序按照基类被继承时候的顺序(自左向右)。然后是执行成员对象的构造函数,调用顺序按照各个成员对象在类中的声明顺序(自上而下),最后是执行派生类的构造函数。19、有如下程序#include<iostream>#include<iomanip>usingnamespacestd;classMyClass{public:MyClass(){cout<<’A’;}MyClass(chafc){cout<<c;}~MyClass(){cout<<’B’;}};intmain(){MyClassp1,*p2;p2=newMyClass(’X’);deletep2;return0;}执行这个程序屏幕上将显示输出()。A、ABXB、ABXBC、AXBD、AXBB标准答案:D知识点解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题中,主程序在创建MayClass类的对象p1时,调用MayClass类的默认构造函数,输出字母A;然后在创建*p2对象时,调用带字母参数的构造函数,输出字母X;语句deletep2:调用析构函数,输出字母B;在主函数退出时,调用析构函数清除对象p1,输出字母B。20、有如下类声明:classMyBASE{intk;public:voidset(intn){k=n;}intgetoconst{returnk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;}};则类MyDERIVED中保护的数据成员和成员函数的个数是()。A、4B、3C、2D、1标准答案:B知识点解析:此题考查的是派生与继承中的访问权限。protected派生:private->不可见;protected->private;public->protected。21、下列语句都是程序运行时的第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++机试(选择题)模拟试卷第3套一、选择题(本题共24题,每题1.0分,共24分。)1、下列叙述中正确的是A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2、下列数据结构中,能用二分法进行查找的是()。A、顺序存储的有序线性表B、线性链表C、二叉链表D、有序线性链表标准答案:A知识点解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素按值非递减排序(即从小到大,但允许相邻元素值相等)的表。3、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为()。A、9B、10C、45D、90标准答案:C知识点解析:线性表的长度为n,最坏情况下冒泡排序需要比较的次数为n(n-1)/2。4、下列排序方法中,最坏情况下比较次数最少的是()。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序标准答案:D知识点解析:冒泡排序、简单选择排序和直接插入排序法在最坏的情况下比较次数为:n(n—1)/2。而堆排序法在最坏的情况下需要比较的次数为O(log2n)。其中堆排序的比较次数最少。5、下列叙述中正确的是A、算法的复杂度是指算法所处理的数据量B、算法的复杂度是指算法程序中指令的数量C、算法的复杂度是指算法控制结构的复杂程度D、算法的复杂度包括时间复杂度与空间复杂度标准答案:D知识点解析:算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。6、数据流程图(DFD图)是()。A、软件概要设计的工具B、软件详细设计的工具C、结构化方法的需求分析工具D、面向对象方法的需求分析工具标准答案:C知识点解析:本题考查数据流程图DFD的概念。对于面向数据流的结构化分析方法,按照DeMarco的定义,“结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档”。结构化分析方法的实质是着眼于数据流,自项向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。数据流图(DFD-DataFlowDiagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。由此可得数据流程图是结构化方法的需求分析工具。7、在下列函数原型中,可以作为类AA构造函数的是()。A、voidAA(int);B、intAA();C、AA(int)const;D、AA(int);标准答案:D知识点解析:此题考查的是构造函数的概念。构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。选项A、B不符合要求。选项c中函数AA,会更新对象的数据成员。8、程序流程图中带有箭头的线段表示的是()。A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:程序流程图是一种传统的、应用广泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用柜形表示加工步骤,用菱形表示逻辑条件。9、在数据库管理技术的发展中,数据独立性最高的是()。A、人工管理B、文件系统C、数据库系统D、数据模型标准答案:C知识点解析:在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。10、下列关于对象概念的描述中,正确的是()。A、对象就是C语言中的结构变量B、对象代表着正在创建的系统中的一个实体C、对象是一个状态和操作(或方法)的封装体D、对象之间的信息传递是通过消息进行的标准答案:D知识点解析:对象之间的信息传递是通过消息进行的。对象=方法(函数)+属性(数据),而C语言的结构体其实就是不同类型数据的组合。并没有处理数据的方法。11、对于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*,也就是整型指针。称之为指针数组(从右向左解析这个表示)。12、下列存储类标识符中,可见性与存在性不一致的是()。A、外部类B、自动类C、内部静态类D、寄存器类标准答案:C知识点解析:可见性是函数内部,存在整个程序中,第二次调用值不变。13、有如下程序:撕ncludeusingnamespacestd;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知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以本题中n、k和setK变为了派生类的保护成员,不能直接使用,即1、3、4错误,所以B选项正确。14、若已定义了类Vehicle,则下列派生类定义中,错误的是()。A、classCar:vehicle{/*类体略*/};B、classCar:publiccar{/*类体略*/};C、classCar:publicVehicle{/*类体略*/):D、classCar:virtualpublicVehicle{/*类体略*/};标准答案:B知识点解析:类Car不能派生自它本身。15、下列选项可以做C++标识符的是()。A、_256B、fat/pigC、deleteD、Schar标准答案:A知识点解析:标识符的命名规则:①所有标识符必须由一个字母(a~Z或A~Z)或下划线()开头;②标识符的其他部分可以用字母、下划线或数字(0~9)组成;③大小写字母表示不同意义,即代表不同的标识符,如cout和Cout。16、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){intsum;for(inti=0;i<6;i+=3){sum=i;for(intj=i;j<6;j++)sum+=j;}cout<<sum<<end1;retum0;}运行时的输出结果是()。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。17、有如下类定义:classAA{inta:public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)______};其中横线处缺失部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}标准答案:B知识点解析:根据派生类构造函数的一般格式:<派生类名>(<总参数表>):<基类名1>(<参数表1>),…<基类名n>(<参数表n>),<成员对象名1>(<参数表n+1>),…<成员对象名m>(<参数表n+m>)<派生类构造函数体>。在派生类BB的构造函数总参数表后面应该接上基类名AA和其参数。18、有如下程序#inc1ude<iostream>#inc1ude<iomanip>usingnamespacestd;c1assMyClass{public:MyClass(){cout<<’A’;)MyClass(charc){cout<<c;}~MyClass(){cout<<’B’;}};intmain(){MyClassp1,*p2;p2newMyClass(’X’);deletep2;retum0;}执行这个程序屏幕上将显示输出()。A、ABXB、ABXBC、AXBD、AXBB标准答案:D知识点解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题中,主程序在创建MayClass类的对象p1时,调用MayClass类的默认构造函数,输出字母A:然后在创建.p2对象时,调用带字母参数的构造函数,输出字母X;语句deletep2;调用析构函数,输出字母B:在主函数退出时,调用析构函数清除对象p1,输出字母B。19、有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obi是类D的对象,则下列语句中不违反访问控制权限的是()。A、obj.fun1();B、obj.fun2();C、obj.fun3();D、obj.fun4();标准答案:A知识点解析:派生类D公有继承父类B,所以obj可以访问基类B的公有,不能访问其它成员。20、生成派生类对象时,派生类构造函数调用基类构造函数的条件是()。A、无需任何条件B、基类中显示定义了构造函数C、派生类中显式定义了构造函数D、派生类构造函数明确调用了基类构造函数标准答案:A知识点解析:因为派生类从基类中继承,它含有基类中的数据成员和函数成员,所以当生成派生类对象时,能无条件的调用基类的构造函数。21、有如下程序:#includeusingnamespacestd;classVAC{public;intf()const{return3;}intf(){return5;}};Intmain(){VACv1;constVACv2;cout<A、53B、35C、55D、33标准答案:A知识点解析:此题考查的是常成员函数的应用。VAC类中说明了两个函数,一个是常成员函数,一个是普通函数;在主函数中说明了两个对象,通过普通对象v1调用的是普通函数,输出5;通过常对象V2调用的是常成员函数,输出3。22、下列关于运算符函数的描述中,错误的是()。A、运算符函数的名称总是以operator为前缀B、运算符函数的参数可以是对象C、运算符函数只能定义为类的成员函数D、在表达式中使用重载的运算符相当于调用运算符重载函数标准答案:C知识点解析:C++把重载的运算符视为特殊的函数,称为运算符函数。编译系统能够依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一运算符的不同含义。运算符函数作为非成员函数时,所有的操作数必须出现在参数表中。23、若有函数模板mySwap和一些变量定义如下:()。template<classT>voidmySwap(Tx,Ty);doubled1,d2;inti1,i2;下列对mySwap的调用中,错误的是A、mySwap(i1,i2)B、mySwap(d1,d2)C、mySwap(i1,d1)D、mySwap<int>(i2,d2)标准答案:C知识点解析:按照函数模板mySwap的定义,变量x和y应该是同一类型,而在选项C的定义中变量i1和d1属于不同的数据类型。24、有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){cout.fill(’*’);cout<<left<<setw(4)<<123<<"OK"<<endl;return0;}执行这个程序的输出结果是()。A、123*OKB、123*OK**C、*123OKD、*123**OK标准答案:A知识点解析:此题考查了输出流的格式控制。cout的fill()是设置填充字符;left和endl分别是使输出数据左对齐和换行:setw()函数的作用是设置输入输出的宽度,此设置效果只对以此输入或输出有效。此题中,输出整数123时宽度为4且左对齐,得到“123*”;输出字符串“OK”/宽度没有定义实际大小输出,结果得到OK;故最后得到的输出结果是123*OK。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共18题,每题1.0分,共18分。)1、在面向对象方法中,不属于“对象”基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象具有如下特征;标识惟一性、分类性、多态性、封装性、模块独立性。2、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件的生命周期描述了软件从产生到最终消亡的全过程,生命周期中的活动包括需求分析、软件设计(分为概要设计和详细设计)、软件实现、软件测试和软件维护,不包括市场调研。3、从工程管理角度看,软件设计一般分为两步完成,它们是()。A、概要设计与详细设计B、数据设计与接口设计C、软件结构设计与数据设计D、过程设计与数据设计标准答案:A知识点解析:软件设计是开发阶段最重要的步骤.从工程管理的角度来看可分为两步:概要设计和详细设计.概要设计是将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式;详细设计是指确立每个模块的实现算法和局部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件与人之间如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。4、数据库系统的核心是()。A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:B知识点解析:数据库管理系统(DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。所以,数据库管理系统是数据系统的核心。5、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式包括概念模式、外模式和内模式(物理模式)。6、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的()。A、记录B、行C、属性D、元组标准答案:C知识点解析:自然连接要满足两个条件:一是两关系之间有公共域。二是通过共域的相等值进行连接。7、下列关于运算符重载的描述中,错误的是()。A、可以通过运算符重载在C++中创建新的运算符B、赋值运算符只能重载为成员函数C、运算符函数重载为类的成员函数时,第一操作数是该类对象D、重载类型转换运算符时不需要声明返回类型标准答案:A知识点解析:运算符重载应尽可能保持其原有的基本语义,而不是创建新的运算符。重载的运算符应该体现为原运算符的功能在新数据类型上的延伸,它的使用应当使程序中算法的表达式显得更流畅、自然,使阅读程序的人在不借助于其他说明资料的情况下就能够正确理解。8、有如下程序:#include<iostream>usingnamespacestd;voidf1(intax,int&y){intz=x;x=y;y=z;}voidf2(intx,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<<end1;return0;}运行时的输出结果是()。A、10B、16C、26D、36标准答案:A知识点解析:子函数f1中的形参是引用变量,所以执行子函数实现了变量x,y值的交换,变量x的值等于26,而变量y的值等于10。而子函数f2中的形参是普通变量,因为C++的函数之间的参数传递是传值,所以执行函数f2不能实现变量x,y值的交换。9、下列关于模板形参的描述中,错误的是()。A、模板形参表必须在关键字template之后B、模板形参表必须用括弧()括起来C、可以用class修饰模板形参D、可以用typename修饰模板形参标准答案:B知识点解析:声明一个函数模板的格式是:template<<模板形参表声明>><函数声明>,其中的<模板形参表声明>是由一个或多个<模板形参>组成(如果是多个,需要用逗号隔开)。每个<模板形参>具有下面的几种形式:①typename<参数表>②class<参数名>③<类型修饰><参数名>由此可知,模板形参表必须用括弧

括起来,而不是(),所以选项B为正确答案.10、已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是()。A、枚举常量NAME的值为1B、枚举常量NUMBER的值为1C、枚举常量MINUS的值为6D、枚举常量PRINT的值为10标准答案:A知识点解析:此题考查的是C++语言的数据类型。第一个枚举常量的值为0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增1。11、有如下两个类定义:classAA{};classBB{AAvl,*v2;BBv3;int*v4;};其中有一个成员变量的定义是错误的,这个变量是()。A、v1B、v2C、v3D、v4标准答案:C知识点解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。12、已知函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是()。A、voidprint()const;B、constvoidprint();C、voidconstprint();D、voidprint(const);标准答案:A知识点解析:const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。13、有如下程序:#include<iostream>usingnamespacestd;classC1{public:~C1(){cout<<1;}};classC2:publicC1{public:~C2(){cout<<2;}};intmain(){C2cb2;C1*cb1;return0;}运行时的输出结果是()。A、121B、21C、211D、12标准答案:B知识点解析:在主函数中定义C2类的对象,当程序结束时,首先调用C2类的析构函数~C2,输出2,再调用Cl类的析构函数~C1,输出1。所以程序运行的结果就是21。14、有如下程序:#include<iostream>usingnamespacestd;classA{public:A(inti=0):r1(i){}voidprint(){cout<<’E’<<r1<<’-’;}voidprint()const{cout<<’C’<<r1*r1<<’-’;}voidprint(intx){cout<<’p’<<r1*r1*r1<<’-’;}private:intr1;};mtmain(){Aa1;constAa2(4);a1.print(2);a2.print();return0;}运行时的输出结果是()。A、P8-E4B、P8-C16-C、P0-E4-D、P0-C16-标准答案:D知识点解析:在主函数中创建a1对象时,调用类A的默认构造函数,其数据成员r1的值等于0。当执行a1.print(2)语句时,调用带参数的print成员函数,所以输出结果为p0-对象a2为常成员,所以其成员变量r1的值等于4,因为常对象只能调用常成员函数,所以当执行语句a2.print()语句时,输出结果为C14.。15、下列关于运算符重载的描述中,错误的是()。A、∷运算符不能重载B、类型转换运算符只能作为成员函数重载C、将运算符作为非成员函数重载时必须定义为友元D、重载[]运算符应完成“下标访问”操作标准答案:C知识点解析:C++把重载的运算符视为特殊的函数,称为运算符函数。“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造出新的运算符。16、已知类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类的对象,而第二操作数是一个整型数据。17、下列关于C++预定义流对象的叙述中,正确的是()。A、cin是C++预定义的标准输入流对象B、cin是C++预定义的标准输入流类C、cout是C++预定义的标准输入流对象D、cout是C++预定义的标准输入流类标准答案:A知识点解析:cin为istream流类的标准输入对象,标准输入设备就是指键盘。18、语句ofstreamf(’’SALARY.DAT’’,ios_base::app);的功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且()。A、若文件存在,将其置为空文件;若文件不存在,打开失败B、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D、若文件存在,打开失败;若文件不存在,建立一个新文件标准答案:B知识点解析:此题考查的是文件打开模式。文件打开模式isobase::app是为添加数据而打开(总是在尾部写),故只有选项B说法正确。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共17题,每题1.0分,共17分。)1、下列情况中,不会调用拷贝构造函数的是()。A、用一个对象去初始化同一类的另一个新对象时B、将类的一个对象赋值给该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时标准答案:B知识点解析:拷贝构造函数是一个特殊的构造函数,它用一个己知的对象初始化一个正在创建的同类对象,它的一般格式是:类名::类名(const类名&引用对象名)。当一个类的对象赋值给该类的另一个对象时,是赋值而不是创建对象,所以不会调用拷贝构造函数。2、若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为()。A、AA.getA()B、x.getA()C、x.aD、AA∷a标准答案:B知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数getA()。3、下面不属于需求分析阶段任务的是A、确定软件系统的功能需求B、确定软件系统的性能需求C、需求规格说明书评审D、制定软件集成测试计划标准答案:D知识点解析:需求分析阶段的工作可分为4个阶段:需求获取、需求分析、编写需求规格说明书、需求评审。4、在下列字符中,不允许作为C++标识符的是()。A、bB、BC、_D、2标准答案:D知识点解析:C++的标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。5、下列叙述中,错误的是()。A、false是一个逻辑型常量B、b是一个字符型常量C、365是一个int常量D、3.1415926是一个double常量标准答案:B知识点解析:字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个字符。或者以“\”开头的包括多个字符的字符序列也符合规定的字符常量。6、下列定义语句中,错误的是()。A、intpx*;B、char*acp[10];C、char(*pac)[10];D、int(*p)();标准答案:A知识点解析:指针变量声明的一般形式为:<数据类型>*<变量名>,在选项A)中,*放在变量名的后面,所以是错误的。7、下列关于运算符重载的描述中,错误的是()。A、∷运算符不能重载B、类型转换运算符只能作为成员函数重载C、将运算符作为非成员函数重载时必须定义为友元D、重载[]运算符应完成“下标访问”操作标准答案:C知识点解析:C++把重载的运算符视为特殊的函数,称为运算符函数。“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造出新的运算符。8、有如下函数定义: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。9、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:此题考查的是函数重载的概念。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项C错误。10、对于语句cout<A、cout是一个输出流对象B、endl的作用是输出回车换行C、x是一个变量D、<<称作提取运算符标准答案:D知识点解析:此题考查的是C++语言的输出流。符号“<<”是预定义插入符,提取运算符是“>>”。11、有如下定义:inta[5]={1,3,5,7,9},*p=a;下列表达式中不能得到数值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4标准答案:B知识点解析:此题考查的是指针引用数组元素。B选项中,a[3]是数组的第四个元素,即7,其它选项的引用均可得到5。12、有如下类声明:c1assBase{protected;intamount;public;Base(intn=0):amount(n){}intgetAmount()const{retumamount;}};c1assDerived:publicBase{protected;intvalue;public;Derived(intm,intn):value(m).Base(n){}IntgetData()const{returnvalue+amount;}};已知x是一个Derived对象,则下列表达式中正确的是()。A、x.value+x.getAmount()B、x.getData()—x.gctAmount()C、x.getData()—x.amountD、x.vabled—x.aount标准答案:B知识点解析:此题考查的是派生类对基类成员的访问权限。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。13、已知类IMS中两个成员函数的声明为“voidlisten()const;”与“voidspeak();”,另有两个对象的定义为“IMSobj1;”与“constIMSobj2;”,则下列语句中,产生编译错误的是()。A、obj1.listen();B、obj1.speak();C、obj2.listen();D、obj2.speak();标准答案:D知识点解析:函数listen()作为类IMS的常成员函数,一般对象obj1和常对象obj2都可以调用它,而函数speak()作为IMS的一般成员函数,则只有一般对象obj1可以调用,而常对象obj2调用会产生编译错误。14、下列有关C++流的叙述中,错误的是()。A、C++操作符setw设置的输出宽度永久有效B、C++操作符endl可以实现输出的回车换行C、处理文件I/O时,要包含头文件fstreamD、进行输入操作时,eof()函数用于检测是否到达文件尾标准答案:A知识点解析:此题考查的是C++流。C++操作符setw()的作用是设置输入输出宽度,且只对当前一次有效,并非永久有效,故选项A叙述错误。15、有如下程序:#inc1ude<iostream>#inc1ude<iomanip>usingnamespacestd;intmain(){ints[]={123,234};cout<<right<<setfill(’*’)<<setw(6);for(intl=0;1<2;1++){cout<<s[i]<<end1;}return0:}运行时的输出结果是()。A、123234B、***123234C、***123***234D、***123234***标准答案:B知识点解析:在输出语句中定义了输出的格式是字符宽度为6,并且向右对齐,不足的位用‘—’补齐。在C++中,输出格式的设置只对第一次输出有效,在完成了一个数据的输出后,宽度殴置自动恢复为0(表示按数据实际宽度输出)。所以对于本题来说,在循环语句中输出数组s[0]中的元素时,按照规定的格式输出,其结果为¨—123,当输出s[1]时,输出格式已经恢复到按数据实际宽度输出,所以此时输出为234。16、下列控制格式输入输出的操作符中,能够设置浮点数精度的是()。A、setprecisionB、setwC、setfillD、showpoint标准答案:A知识点解析:setprecision(intn):设置浮点数的精度(有效位数或小数位数),等价函数调用:io.precision(n)。17、若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。A、Data+(Data);B、Dataoperator+{Data};C、Data+operator{Data};D、operator+(Data,Data);标准答案:B知识点解析:“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。运算符函数的函数名是由运算符前加关键字operator构成的。国家二级C++机试(选择题)模拟试卷第6套一、选择题(本题共23题,每题1.0分,共23分。)1、算法的有穷性是指A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。2、下列符号中,正确的C++标识符是()。A、enumB、100bitC、s-1D、int标准答案:D知识点解析:此题考查的是C++语言中标识符的概念。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的:定义标识符时不能采用系统的保留字。3、下列符号中不属于C++关键字的是()。A、friendB、namespaceC、continueD、byte标准答案:D知识点解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时用到的关键字:namespace是定义或使用名字空间时用到的关键字;continue是终止本次循环直接开始下一次循环所用到的关键字;byte是字节的意思,它不是C++语言中的关键字。4、下列关于栈的描述中错误的是()。A、栈是先进后出的线性表B、栈只能顺序存储C、栈具有记忆作用D、对栈的插入与删除操作中,不需要改变栈底指针标准答案:B知识点解析:栈是限定在一端进行插入与删除的线性表。栈顶(top):插入数据(即入栈)的一端:栈底(bottom):不能入栈也不能出栈的一端。栈存储数据的原则:“先进后出”或“后进先出”。栈的特性是具有记忆作用。5、下列叙述中正确的是A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D、循环队列中元素的个数是由队头指针和队尾指针共同决定标准答案:D知识点解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。6、设循环队列的存储空间为Q(1:35),初始状态为frontrear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。A、15B、16C、20D、0或35标准答案:D知识点解析:循环队列的队头指针和尾指针都等于15.此循环队列中元素的个数有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数为0:第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素个数为35。7、下列有关内联函数的叙述中,正确的是()。A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句标准答案:C知识点解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换所以它没有一般函数的参数压栈和和退栈操作,所以选项A错误;即使没有使用。inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B错误;内联函数只是比普通函数有更高的执行效率,所以选项D错误。8、有以下程序:#include<iostrearn>usingnamespacestd;classR{public:R(intr1,intr2){R1=r1;R2=r2;}voidprint();

温馨提示

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

评论

0/150

提交评论