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

下载本文档

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

文档简介

国家二级(C++)机试模拟试卷18(共9套)(共360题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共36题,每题1.0分,共36分。)1、下列对模板的声明中,正确的是()。A、templateB、templateC、templateD、template标准答案:C知识点解析:声明一个函数模板的格式为:template<模板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。2、使用地址作为实参传给形参,下列说法正确的是()。A、实参是形参的备份B、实参与形参无联系C、形参是实参的备份D、参与形参是同一对象标准答案:D知识点解析:地址作为实参,表示实参与形参代表同一个对象。如果实参是数值,形参也是普通变量,此时形参是实参的备份。3、在类中说明的成员可以使用关键字的是()。A、publicB、externC、cpuD、register标准答案:A知识点解析:extern用于声明外部变量的,register声明寄存器类型变量,无cpu类型。它们都不能声明类成员。public声明为公有访问权限。4、下列程序运行时,若输入labcdef2df<回车>,则输出结果为()。#includevoidmain(){chara=0,ch;while((ch=getchar())!=’\n’){if(a%2!=0&.&.(ch>=’a’&&ch<=’z’))ch=ch-’a’+’A’:a++;putchar(ch);}printf("n");}A、1aCcEdF2DfB、1AeCeDf2dFC、1AcCeDf2DfD、1aCeEdF2dF标准答案:B知识点解析:从键盘获取字符,这个程序的功能是对输入的字符,如果这个字符对2的余数不等于0,并且在这个小写字母’a’和’z’之间,则把这个字符转换成大写字母。5、下列关于派生类构造函数和析构函数的说法中,错误的是()。A、派生类的构造函数会隐含调用基类的构造函数B、如果基类中没有缺省构造函数,那么派生类必须定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。6、下列程序的输出结果为-5/8-3/4,横线处应填()。#includeusingnamespacestd;ClassFraction{//“分数”类public:Fraction(doublea,doubleb):num(a),den(b){}~Fraction(){}//重载取负运算符“-”,返回一个分数对象,其分子是原来分子的相反数Fractionoperator-(){________returnf;}voidprint(){cout<A、num(a),den(b){}B、(doublea,doubleb)C、(-f1),print();D、Fractionf(num,den);f.num=-hum标准答案:D知识点解析:考查了重载运算符“-”的操作,在重载函数中需要取分子的相反数。7、下列控制格式输入/输出的操作符中,能够设置浮点数精度的是()。A、setprecisionB、setwC、setfillD、showpoint标准答案:A知识点解析:iomanip中定义的操纵符包括:set—fiU(ch)用ch填充空白、setprecision(n)将浮点精度置为n、setw(w)、读写w个字符的值showpoint设置小数点。8、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。9、有如下类定义:classPass{staticintcount;public:Pass(){}voidshow()const;friendintgetCount();staticintiilere();};在所声明的4个函数中,具有this指针的有()。A、Pass和showB、Pass和getCountC、show和increD、getCount和incre标准答案:A知识点解析:C++的类定义中,只有非静态成员函数具有this指针,Pass类中getCount()函数是友元函数,不属于成员函数,没有this指针,选项B、D错误;incre()函数是静态成员函数,没有this指针,选项C错误;答案为A。10、下面属于黑盒测试方法的是()。A、错误推测法B、基本路径测试C、判定覆盖D、条件覆盖标准答案:A知识点解析:黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试方法主要有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖)、基本路径测试等。故本题答案为A选项。11、A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ标准答案:C知识点解析:前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则:①访问根结点;②前序遍历左子树;③前序遍历右子树,C正确。12、下面有关this指针的叙述中,正确的是()。A、类的成员函数都有this指针B、任何与类相关的函数都有this指针C、类的非静态成员函数才有this指针D、类的友元函数都有this指针标准答案:C知识点解析:C++中的this关键字用来表示指向类实例本身的指针。所以类的静态成员函数没有this指针,而友元函数不属于类的成员,也不存在this指针,只有类的非静态成员函数才有this指针。13、若有下列定义intx[10],*pt=x;则对x数组元素的正确引用是()。A、*&x[10]B、*(x+3)C、*(pt+10)D、pt+3标准答案:B知识点解析:在C语言中,数组名是一个存放地址值的指针变量名,其地址值是数组第一个元素的地址,也是数组所占一串连续存储单元的起始地址。因为数组的下标是从0开始的,所以选项B中,x+3表示数组x[10]中的第四个元素的地址,在其前面加上星号,表示是数组x[10]中的第四个元素中的值。所以正确答案为选项B。选项A、C的地址范围超出级数x[10]中元素的地址范围,选项D表示的是地址值。14、下列运算符中,可以重载为类的友元函数的运算符是A、=B、()C、.D、<<标准答案:D知识点解析:C++规定,赋值操作符"="、下标操作符"[]"、调用操作符"()"和成员访问箭头操作符"->"必须重载为成员函数,这些操作符定义为非成员函数将在编译时标记为错误,友元函数是非成员函数,上面四种操作符不能重载为类的友元函数,另外成员访问操作符"."不能重载,答案为D。15、在关系代数运算中,有5种基本运算,它们是()。A、并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)B、并(∪)、差(-)、交(∩)、投影(π)和选择(σ)C、并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)D、并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)标准答案:D知识点解析:并、差、笛卡儿积、投影和选择是5种基本的运算,其他运算即交、连接和除,均可以通过5种基本的运算来表达。16、已知函数f的原型为voidf(int&a,double*b);变量x、y的定义是intx;doubley;则下列调用该函数的语句中正确的是A、f(x,&y);B、f(x,y);C、f(&x,&y);D、f(&x,y);标准答案:A知识点解析:本题考查函数的调用,函数原型中第一个参数为引用,第二个参数为指针,所以只有A选项正确。17、下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是()。A、cout<B、cout<C、cout<D、cout<标准答案:D知识点解析:本题考查控制输出格式,A、B、C选项都会输出"12345",只有D选项输出"12345",所以本题答案为D。18、已知int型变量y的初值是5,但在执行语句"f(y);"后,y的值被改变,因此该语句所调用函数的原型是A、voidf(intx);B、voidf(int*x);C、voidf(constint*x);D、voidf(int&x);标准答案:D知识点解析:参数传递有三种:传值(value),传址(address),和传引用(reference)传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,A选项属于此类。传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量。传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。D选项属于此类,所以D选项正确。19、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"~A";}};classBB{public:BB(){cout<<"B";}~BB(){cout<<"~B";}};intmain(){AA*pa=newAA;BBb;deletepa;return0;}运行这个程序的输出是A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A标准答案:A知识点解析:main()函数中首先动态创建AA类对象,调用AA类构造函数,输出"A",创建BB类对象,调用BB类构造函数,输出"B",使用delete显式销毁AA类对象,调用AA类析构函数,输出"~A",程序结束时,销毁BB类对象,编译器自动调用BB类析构函数,输出"~B",整个程序输出结果为:"AB~A~B",答案为A。20、面向对象方法中,实现对象的数据和操作结合于统一体中的是A、结合B、封装C、隐藏D、抽象标准答案:B知识点解析:对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式,B选项正确。21、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所以为一对多联系。22、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,n0=1,则n2=0,总节点数为12=n0+n1+n2=1+n1+0,则度为1的节点数n1=11,故深度为12,选D。23、如下类定义:classAA{inta;public:intgetRef()const{return&a;}//①intgetValue()const{returna;}//②voidset(intn)const{a=n;}//③friendvoidshow(AAaa)const{cout<A、①B、②C、③D、④标准答案:B知识点解析:本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。24、建立一个类对象时,系统自动调用A、析构函数B、构造函数C、静态函数D、友元函数标准答案:B知识点解析:本题考查默认构造函数,如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,建立一个对象时,系统会自动执行默认构造函数。25、有如下类定义:classBag{public:Bag();//①voidSetSize(strings);//②stringGetSize()const;//③friendvoidDisplay(Bag&b);//④private:stringsize;};在标注号码的4个函数中,不具有隐含this指针的是A、①B、②C、③D、④标准答案:D知识点解析:当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,所以①②③正确使用this指针。26、下列关于继承和派生的叙述中,正确的是A、派生类中新定义的成员函数可以访问基类的所有成员B、在私有继承的情况下,派生类中新定义的成员函数不能访问基类的保护成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:本题考查继承与派生,派生类中的成员访问基类中的成员由派生方式决定,如果派生类私有继承基类,那么就不能新定义的成员函数就不能访问基类的私有成员,所以A选项错误。在私有继承的情况下,派生类中新定义的成员函数可以访问基类的保护成员。基类对象在某种情况下可以赋值给派生类对象。27、当一个派生类对象结束其生命周期时,自动做的事情是A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果派生类没有定义析构函数,则只调用基类的析构函数D、如果基类没有定义析构函数,则只调用派生类的析构函数标准答案:A知识点解析:执行派生类析构函数的顺序是:先执行派生类析构函数,再执行基类的析构函数,所以A选项正确。28、下列选项中,不是重载函数调用时选择依据的是A、参数个数B、参数类型C、参数名称D、函数名称标准答案:C知识点解析:重载函数调用时首先要从函数名称相同的候选函数中选择可行函数,可行函数必须满足两个条件:1、函数的形参个数与该调用的实参个数相同;2、每个实参的类型必须与对应形参的类型匹配,或者可被隐式转换为对应的形参类型。参数名称可以不相同,答案选C。29、有如下程序段:inti=0,j=1;nt&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。30、通过运算符重载,可以改变运算符原有的A、优先级B、结合性C、操作数类型D、操作数个数标准答案:C知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为C。31、在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名患者可在多个科室治疗。则实体医生和患者之间的联系是A、多对多B、多对一C、一对多D、一对一标准答案:A知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。医生可为多位患者看病,患者也可以找多位医生看病,实体医生与患者联系是多对多,A选项正确。32、有如下类定义:classBase{intm;public:intn;protected:intp;};classDerived:privateBase{intk;public:voidf();};则允许成员函数f访问的数据成员的个数是A、1B、2C、3D、4标准答案:C知识点解析:私有继承中,基类的所有成员(除了private成员)在派生类中为private成员;另外C++中,class关键字定义的类,默认的访问级别为private;题目中Derived以private方式继承Base,所以Derived中private成员有:n、p、k,没有public和protected成员,成员函数f可以访问Derived的private成员、public成员和protected成员,答案为C。33、下列语句中,错误的是()。A、constintbuffer=256;B、constdouble*point;C、intconstbuffer=256;D、double*constpoint;标准答案:D知识点解析:const是一个C++关键字,用于限定不允许改变的变量。选项B是指向常量的指针,定义时可以不初始化;选项D是指针常量,定义时必须初始化。故答案为D。34、下列关于二叉树的叙述中,正确的是()。A、叶子结点总是比度为2的结点少一个B、叶子结点总是比度为2的结点多一个C、叶子结点数是度为2的结点数的两倍D、度为2的结点数是度为1的结点数的两倍标准答案:B知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择B35、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)()。A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1一1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。36、工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是()。A、多对多B、一对多C、多对一D、一对一标准答案:A知识点解析:零件可以存放在多个仓库中,而每一仓库中可存放多种零件,则实体仓库和零件间的联系是多对多。故本题答案为A选项。二、基本操作题(本题共1题,每题1.0分,共1分。)37、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Theperimeteris62.8Theareais314注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#includeusingnamespacestd;constdoublePT=3.14;classCircle{public://ERROR**********found**********Circle(intr){radius=r;}voidDisplay();private:constintradius;};//EFRROR**********found**********voidDisplay(){cout<<"Theperimeteris"<<2*12T*radius<标准答案:(1)Circle(intr):radius(r){}(2)voidCircle::Display()(3)c.Display();知识点解析:(1)主要考查考生对构造函数的掌握,常变量私有成员只能通过成员列表进行初始化。(2)主要考查考生对成员函数的掌握,在定义类的成员函数时要加上类名和作用域符。(3)主要考查考生对成员函数调用的掌握,调用成员函数时应使用标识符’.’。三、简单应用题(本题共1题,每题1.0分,共1分。)38、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中包含一个头文件number.h,其中包含了类N啪ber、OctNumber、HexNumber和DecNumber的声明;包含程序文件number.cpp,其中包含了上述类的成员函数toString的定义;还包含程序文件proj2.cpp,它以各种数制格式显示输出十进制数11。请在程序中的横线处填写适当的代码并删除横线,以实现上述功能。此程序的正确输出结果应为:013,11,OXB注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//mumber.hclassNumber{protected:intn;staticcharbuf[33];public:Number(intk):n(k){)//**********found**********________;//纯虚函数toString的声明};classHexNumber:publicNumber{//16进制数public://**********found**********________//构造函数,参数名为kconstchar*toString()const;};classOctNumber:publicNumber{//八进制数public:OctNumber(intk):Number(k){}constchar*toString()const;};classDecNumber:publicNumber{//十进制数public:DecNumber(intk):Number(k){}constchar*toString()const;},/Imumber.cpp#include"Number.h"#include#include#includeusingnamespacestd;charNumber::buf[33]="";constchar*HexNumber::toString()const{strstreamstr(buf,33);str<标准答案:(1)virtualconstchar*toString()const=0(2)HexNumber(intk):Number(k){}(3)cout<<number.toString()(4)show(HexNumber(11))知识点解析:(1)主要考查考生对纯虚函数的掌握,参考在派生类中该函数的定义:constchar*toString()const;,可知纯虚函数应该写为:virtualconstchar*toString()const=0。(2)主要考查考生对构造函数的掌握,构造函数应使用成员列表初始化。(3)主要考查考生对纯虚函数的掌握,程序要求按既定的数制显示输出参数对象number的值,直接调用纯虚函数,可以使派生类调用自身定义的函数。(4)主要考查考生对派生类的掌握,使用十六进制的派生类初始为11,就可以调用该派生类的toString函数。四、综合应用题(本题共1题,每题1.0分,共1分。)39、请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程pl,og3,其中声明了ValArray类,该类在内部维护一个动态分配的int型数组v。ValArr~类的成员函数cycle用于对数组元素进行向左循环移动。调用一次cycle后,数组的第二个元素至最后一个元素都将向左移动一个位置,而最左端的元素将循环移动到最右端位置上。例如,若ValArray表示的数组为{1,2,3,4,5},则第一次调用cycle后,数组变为{2,3,4,5,1},第二次调用cycle后,数组变为{3,4,5,1,2},依次类推。请编写成员函数cycle。在main函数中给出了一组测试数据,此情况下程序的输出应该是:v={1,2,3,4,5}v={2,3,4,5,1}v={3,4,5,l,2}v={4,5,1,2,3}v={5,1,2,3,4}要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFfle已经编译为obj文件,并且在本程序中调用。//VaiArray.h#includeusingnamespacestd;classVaiArray{int*v;intsize;pubiic:VaiArray(constint*p,intn):size(n){v=newint[size];for(inti=0;i标准答案:for(inti=0;i<size-1;i++){inttemp=v[i];v[i]=v[i+1];v[i+1]=temp;}知识点解析:程序要将数组v中的size个整数依次移动到它的前一个单元,其中第一个整数移到原来最后元素所在单元。for循环语句用于遍历整个数组,每循环一次便将当前元素与后一个元素互换,因此循环变量的取值范围是0size-2,最后一个元素不需遍历。国家二级(C++)机试模拟试卷第2套一、选择题(本题共39题,每题1.0分,共39分。)1、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B错误。笛卡尔积是用R集合中元素为第一元素,s集合中元素为第二元素构成的有序对,所以C错误。根据关系T可以很明显地看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D。2、以下程序的执行结果为()。#includeclassSample{intn:public:Sample(inti){n=i;}operator++(){n++;}//前缀重载运算符operator++(int){n+=2;}//后缀重载运算符voiddisp(){cout<<“n=”<A、n=4B、n=1C、n=3D、n=5n=3n=2n=4n=6标准答案:A知识点解析:此题考查的是“++”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数:int。本题中,A(2)首先给n赋值2,语句A++,调用的是后缀运算符重载语句,使得n加2变为4。B(2)首先给n赋值2,然后语句++B,调用前缀运算符重载函数,使得n加1。因此最终的输出结果是n=4n=3。3、派生类的构造函数的成员初始化列表中,不能包含()。A、基类的构造函数B、派生类中子对象的初始化C、基类中子对象的初始化D、派生类中一般数据成员的初始化标准答案:C知识点解析:在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。4、某二叉树中度为2的结点有10个,则该二叉树中有()个叶子结点。A、9B、10C、11D、12标准答案:C知识点解析:根据二叉树的性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。5、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i://③*p=&r;//其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。6、下列程序运行时,若输入labcdef2df<回车>,则输出结果为()。#includevoidmain(){chara=0,ch;while((ch=getchar())!=’\n’){if(a%2!=0&.&.(ch>=’a’&&ch<=’z’))ch=ch-’a’+’A’:a++;putchar(ch);}printf("n");}A、1aCcEdF2DfB、1AeCeDf2dFC、1AcCeDf2DfD、1aCeEdF2dF标准答案:B知识点解析:从键盘获取字符,这个程序的功能是对输入的字符,如果这个字符对2的余数不等于0,并且在这个小写字母’a’和’z’之间,则把这个字符转换成大写字母。7、下列选项中,不属于数据管理员(DBA)职责的是()。A、数据库维护B、数据库设计C、改善系统性能,提高系统效率D、数据类型转换标准答案:D知识点解析:数据库管理员(DataBaseAdministrator,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:数据库设计。DBA的主要任务之一是数据库设计,具体地说是进行数据模式的设计。数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护。改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。8、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。9、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:此题考查的是函数重载的概念。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项C)错误。10、有以下程序,在横线应添加()。#includeusingnamespacestd;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,所以赋值操作将本类的参数othernlmber赋值给number;而且采用对象的引用的形式,也就是&other。11、有如下头文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是()。A、f1B、f2C、f3D、f4标准答案:C知识点解析:只有类的非静态成员函数才隐含this指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。所以本题答案为C。12、下列顺序的输出结果是()。#includeusingnamespacestd;voidfun(int&r1{r*=2:}intmain(){intn=50;fun(n);cout<A、0B、20C、50D、100标准答案:D知识点解析:题中主程序中首先定义整型变量n=50,然后调用函数fun,实际参数为n。函数fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以2。13、下列关于栈叙述正确的是()。A、栈顶元素最先能被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素最先被删除标准答案:A知识点解析:栈是先进后出的数据结构,所以栈顶元素最后人栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A。14、下面描述中正确的是()。A、好的软件设计应是高内聚低耦合B、内聚性和耦合性无关C、内聚性是指多个模块间相互连接的紧密程度D、耦合性是指一个模块内部各部分彼此结合的紧密程度标准答案:A知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。故本题答案为A选项。15、下列运算符中,可以重载为类的友元函数的运算符是()。A、=B、()D、<<标准答案:D知识点解析:C++规定,赋值操作符“=”、下标操作符“[]”、调用操作符“()”和成员访问箭头操作符“一>”必须重载为成员函数,这些操作符定义为非成员函数将在编译时标记为错误,友元函数是非成员函数,上面四种操作符不能重载为类的友元函数,另外成员访问操作符“.”不能重载,答案为D。16、有如下类定义:classMyClass{intk;public:MyClass(intn):k(n){}};则下列数组定义中,错误的是()。A、MyClassm4[4]={MyClass(1),MyClass(2),MyClass(3),MyClass(4)};B、MyClassm4[]={MyClass(1),MyClass(2),MyClass(3)};C、MyClassm4[4]={1,2,3};D、MyClassm4[]={1,2,3};标准答案:C知识点解析:选项A、B都使用MyClass类的构造函数,完成数组元素的初始化,数组定义正确;选项D中,隐式使用Myclass类的构造函数(接收一个int型的参数),将整数1、2、3转换为MyClass类的对象,数组定义正确;选项C中,数组前3个元素同选项D,可以完成初始化,但是第4个数组元素,需要调用MyClass类的默认构造函数,由于Myclass类已经提供了一个构造函数(非默认构造函数),所以编译器不会自动生成默认构造函数,也就无法构造第4个元素,选项C错误。故本题答案为C选项。17、假定MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。A、MyClass&(MyClassx);B、MyClass(MyClassX)C、MyClass(MyClass&x);D、MyClass(MyClass+X)标准答案:C知识点解析:拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名:类名(const类名&引用对象名)。18、设有定义“intx=2;”,下列表达式中,值不为6的是()。A、x*=x+1B、x++,2*xC、x*=(1+x)D、2*x,x+=2标准答案:D知识点解析:本题考查了复合运算符“*=”和逗号表达式如何正确求值。逗号表达式的作用是用逗号将表达式连起来,其有效值为最后一个表达的值,其运算的结合性从左到右进行运算。选项D是一个逗号表达式,其值为4。19、下面关于this指针的说法中错误的是()。A、this指针是一种隐含指针,存在于每个类的非静态成员函数中B、它是成员函数所属对象的指针C、通过this成员变量的形式可以访问类中的数据成员D、成员函数访问类中的数据成员格式可写成:this.>成员变量标准答案:C知识点解析:this指针是一个隐含指针,它隐含于每个类的非静态成员函数中。this指针是成员函数所属的对象指针,它指向当前类的对象地址。通过this指针访问当前对象成员有两种方式:(*this)成员,this->成员。20、下列关于getline函数的描述中,错误的是()。A、该函数可以用来从键盘上读取字符串B、该函数读取的字符串长度是受限制的C、该函数读取字符串时,遇到终止符时便停止D、该函数中所使用的终止符只能是换行符标准答案:D知识点解析:本题考查的是无格式输入/输出流对象中的getline函数。该函数的功能是允许从输入流中读取多个字符,并且允许指定输入终止字符(默认是换行符),在读取完成后,从读取的内容中删除该终止字符。21、若要重载+、=、<<、==和口运算符,则必须作为类成员重载的运算符是()。A、+和-B、=和<<C、==和<<D、=和[]标准答案:D知识点解析:对于单目运算符,建议选择成员函数;对于运算符一、()、[]、->,只能作为成员函数;对于运算符+=、-=、/=、*=、&=、!=、~=、%=、<<=、>>=,建议重载为成员函数;对于其他运算符,建议重载为友元函数。22、下列说法中错误的是()。A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中仍是private的C、私有继承时基类中的public成员在派生类中是private的D、保护继承时基类中的public成员在派生类中是protected的标准答案:B知识点解析:公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。受保护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员认为基类私有。23、下列关于输入流类成员函数getline()的表述中,错误的是A、该函数只能用来从键盘设备读取一行字符串B、该函数读取的字符串长度是由参数限制的C、该函数读取字符串时,遇到终止符便停止D、该函数读取字符串时,遇到终止符便停止标准答案:A知识点解析:getline(istream&is,string&str)第一个参数is是输入流对象,这个对象可以是键盘输入流对象,也可以是文件输入流等其他输入流的对象,选项A错误,答案为A。24、下列关于默认参数的叙述中,错误的是A、为形参列表中的多个参数指定默认值时,应从右至左进行设置B、若函数的所有形参都指定了默认值,则调用时可不给出实参C、C++中的默认参数可以简化对复杂函数的调用D、若要为参数指定默认值,必须在函数定义及其原型声明中同时指定标准答案:D知识点解析:既可以在函数声明中指定默认参数,也可以在函数定义中指定默认参数,但是,在一个源文件中,只能为形参指定默认参数一次,通常应在函数声明中指定默认参数。A、B、C正确,选项D错误;答案为D。25、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。26、有如下类定义:classTest{public:Test(){a=0;c=0;}//①intf(inta)const{this->a=a;}//②staticintg(){returna;}//③voidh(intb){Test::b=b;};//④private:inta;staticintb;constintc;};intTest::b=0;在标注号码的行中,能被正确编译的是()。A、①B、②C、③D、④标准答案:D知识点解析:只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为c。①通过默认构造函数初始化c,所以不正确。常成员函数只能引用本类中数据成员,而不能修改它,所以②不正确。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员,所以③错误。27、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、差C、交D、并标准答案:B知识点解析:关系T中的元组是R关系中有而S关系中没有的元组的集合,所以进行的是差的运算。28、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。29、有如下程序:#includeusingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<A、Base.fun();B、Base::fun();C、Base->fun();D、fun();标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出Base::fun,则必须调用基类的公用成员函数fun,所以使用Base::fun();来调用基类的成员函数fun。30、下列关于函数的描述中,错误的是A、函数可以没有返回值B、函数可以没有参数C、函数可以是一个类的成员D、函数不能在类体中定义标准答案:D知识点解析:函数可以不需要返回值,即void型的,函数可以没有参数,所以AB选项正确,函数可以作为类的成员函数,所以C正确,D错误。31、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}TV(constTV&r):size(r.size){}~TV(){}private:intsize;};TVfun(TV&u){TVt=u;returnt;}intmain(){TVx,y;x=fun(y);return0;}则TV类的复制构造函数被调用的次数是A、1次B、2次C、3次D、4次标准答案:B知识点解析:拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。拷贝构造函数要调用基类的拷贝构造函数和成员函数。本题中调用fun函数时调用了一次复制构造函数,函数返回执行x=fun(y)时又调用了一次复制构造函数,所以总共2次。B选项正确。32、有如下类定义:classMyClass{public:_____________private:intdata;};若要为MyClass类重载流输出运算符<<,使得程序中可以"cout<<obj;"这样的语句输出MyClass类的对象obj中成员变量data的值,则横线处应填入的语句是A、friendostream&operator<<(ostream&os,MyClassa);B、friendostream&operator<<(MyClassa,ostream&os);C、ostream&operator<<(ostream&os,MyClassa);D、ostream&operator<<(MyClassa,ostream&os);标准答案:A知识点解析:本题考查在类中重载流运算符<<,那么需要将该运算符重载为友元成员函数,且第一个参数为ostream&os,所以A选项正确。33、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。34、若x和y是程序中的两个整型变量,则下列if语句中正确的是A、if(x!=0)y=1;elsey=2;B、if(x!=0)y=1elsey=2;C、if(x!=0)theny=1elsey=2;D、ifx!=0y=1;elsey=2;标准答案:A知识点解析:本题考查if语句,if语句一种形式为:if(表达式1)语句1else语句2只有A选项是正确的35、Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是A、objB、exeC、cppD、out标准答案:A知识点解析:C++程序开发过程包括编辑、编译、链接、运行和调试。编译完成后链接之前会生成后缀为obj的目标文件,所以答案为A。36、在软件开发中,需求分析阶段产生的主要文档是()。A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。37、有如下程序:#include#includeusingnamespacestd;classFather{public:Father(strings):name(s){cout<<’F’;}~Father(){}private:stringname;};classMother{public:Mother(strings):name(s){cout<<’M’;}~Mother(){}private:stringname;};classChild:publicMother,publicFather{public:Child(strings1,strings2,strings3,inta):Father(s1),Mother(s2),name(s3),age(a){cout<<’C’;}~Child(){}private:stringname;intage;};intmain(){Childson("Zhang","Li","Ming",20);return0;}运行时的输出结果是A、CB、FMCC、MFCD、FMC20标准答案:C知识点解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数。所以本题中执行构造函数为先执行基类Mother的构造函数、然后执行基类Father的构造函数,再执行派生类的构造函数函数,所以输出MFC,答案C正确。38、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)标准答案:C知识点解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。39、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。二、基本操作题(本题共1题,每题1.0分,共1分。)40、请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程projl,该工程中包含程序文件main.cpp,其中有类Door(“门”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:打开503号门…门是锁着的,打不开。打开503号门的锁…锁开了。打开503号门…门打开了。打开503号门…门是开着的,无须再开门。锁上503号门…先关门…门锁上了。注意:只修改每个“//ERROR**********found**********”下的那一行,不要改动程序中的其他内容。#includeusingnamespacestd;classDoor{intnum;//门号booldosed;//true表示门关着boollocked;//true表示门锁着public:Door(intnum){//ERROR**********found**********nm=this->Rum;closed=locked=true;}boolisClosed()eonst{returndosed;}//门关着时返回true,否则返回falseboolisOpened()eonst{lreturn!closed;}//门开着时返回true,否则返回falseboolisLoeked()eonst{returnlocked;}//门锁着时返回true,否则返回falseboolislJnlocked()eonst{retllm!locked;}//门未锁时返回true,否则返回falsevoidopen(){//开门eout<标准答案:(1)this一>num=num;(2)if(!closed)(3)voidlock(){知识点解析:(1)主要考查考生对this指针的掌握,在构造函数中this指针指向的是当前类,因此要给num赋值使用语句this一>num=num;完成。(2)主要考查考生对if语句的掌握,先看类的私有成员中关于closed的定义:boolclosed;//true表示门关着。再看下一条语句:cout<<”门是开着的,无须再开门。”;。即满足条件时就会输出:门是开着的,无须再开门。因此if括号内应该是!closed。(3)主要考查考生对const函数的掌握,lock函数体中存在语句locked=true,即有参数发生改变,因此不能用_const。三、简单应用题(本题共1题,每题1.0分,共1分。)41、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(char*des.char*str,charc,char*str2)的功能是:如果s仃中包含字符“!”,则替换成“a;如果str中包含字符“&”,则替换成b;如果str中包含字符“*”则替换成str2。并用函数返回目标转换后的指针。注意:只能补充函数convert(char*des,char*str,char*str2)。#include#include#defineMAXLEN1024voidconvert(char*des,char*str,char*str2){}voidmain(){chardest[MAXLEN];char*str=”!&cefghi*!&”;char*str2=”Jklm”;convert(dest,str,str2);cout<标准答案:des[0]=0;chartemp[2]={0,0};for(inti=0;str[i]!=NULL;i++{if(str[i]==’!’){temp[0]=’a’;//替换成’a’strcat(des,temp);}elseif(str[i]==’&’){temp[0]=‘b’;strcat(des,temp);//替换成‘b’}elseif(str[i]==‘*’){strcat(des,str2);//替换成str2}else{temp[0]=str[i];strcat(des,temp);//其他情况则添加在后面}}知识点解析:(1)由审题分析可知,利用循环中不断检索s仃字符串每一个字符,循环变量i从0开始,直到到了str字符结束,即srt[i]==NULL为循环判断结束条件。(2)在循环体内,用ifelse语句判断是不是“!”、“&”或“*”这些特定的字符,如果是这些特定的字符则进行相应的替换,如果不是则将该字符直接加在des后面。(3)字符串的连接可以使用字符串连接函数strcatO,将新字符连接在des后面,即strcat(des,temp)。四、综合应用题(本题共1题,每题1.0分,共1分。)42、请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程proj3,其中包含了类IntegerSet和主函数main的定义。一个IntegerSet对象就是一个整数的集合,其中包含0个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组elem的前若干单元中。成员函数add的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数remove从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数remove。在main函数中给出了一组测试数据,此时程序的正确输出结果应为:234527283166752345627283166752345619272831667534561927283166753456192728316675要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数WriteToFile已经编译为obj文件,并且在本程序中调用。//IntegorSet.h#ifndefINTEGERSET#defineINEGERsET#includeusingnamespacestd;constintMAXELEMENTS=100;//集合最多可拥有的元素个数classIntegerSet{intelem[MAXELEMENTS];//用于存放集合元素的数组intcounter;//用于记录集合中元素个数的计数器public:IntegerSet():counter(0){}//创建一个空集合IntegerSet(intdata[],intsize);//利用数组提供的数据创建一个整数集合voidadd(intelement);//添加一个元素到集合中voidremove(intelemerit);//删除集合中指定的元素intgetCount()const{retuIllcounter;}//返回集合中元素的个数intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素voidshow()eonst;};voidWriteToFfle(char*);#ndif//main.cpp#include"IntegerSet.h"#includeIntegerSet::IntegerSet(intdata[],intsize):counter(O){for(inti=0;i0;j--)if(element>=elem[j-1])break;//如果找到的是等于element的元素,说明要添加的元素已经存在,直接返回if(j>O)if(element=elem[j-1])return;//如果找到的是小于element的元素,j就是要添加的位置//该元素及其后面的元素依次后移,腾出插入位置for(intk=counter;k>j;k--)elem[k]=elem[k-1];elem[j]=element;//将element插入到该位置counter++;//计数器加1}voidIntegerSet::remove(intelement){//**********333**********//**********666**********}voidIntegerSet::show()const{for(inti=0;i标准答案:for(inti=0;i知识点解析:主要考查考生对有序数组的掌握,题目要求成员函数rem0Ve从集合中删除指定的元素(如果集合中存在该元素)。遍历数组elem中的元素,找出与形参element相等的元素,并将其删除,每删除一个元素,即将该元素之后的每个元素前移一位,如果不存在与形参element相等的元素则没有操作。使用下标i遍历数组,if语句判断是否与element相等。国家二级(C++)机试模拟试卷第3套一、选择题(本题共31题,每题1.0分,共31分。)1、下列程序将X、Y和Z按从小到大的顺序排列,横线处应添加语句()。templatevoidfun(_______){Ta:if(x>y){a=x;x=y;y=a;}if(y>z){a=y;y=z;z=a;}if(x>y){a=x;x=y;y=a;}}A、Tx,Ty,TZB、Tx;y;zC、T&x,T&y,T&zD、T&x,&y,&z标准答案:C知识点解析:函数fun的类型为void没有任何返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的定义为“T&x,T&y,T&z”。2、有如下函数模板:templateTsquare(Tx){returnx*x;)其中T是()。A、函数形参B、函数实参C、模板形参D、模板实参标准答案:C知识点解析:此题考查的是函数模板。声明一个函数模板的格式是:template<模板形参表声明>函数声明,{函数体)其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。3、下列不属于软件工程3个要素的是()。A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。4、下列控制格式输入/输出的操作符中,能够设置浮点数精度的是()。A、setprecisionB、setwC、setiillD、showpoint标准答案:A知识点解析:iomanip中定义的操纵符包括:seffiil(ch)用曲填充空白、setprecision(n)将浮点精度置为n、setw(w)、读写w个字符的值showpoint设置小数点。5、有如下程序段:inti=1:while(1){i++;if(i==10)break:if(i%2==0)cout<<’*’;}执行这个程序段输出字符*的个数是()。A、10B、3C、4D、5标准答案:C知识点解析:本题主要考查while的作用。只有i为偶数时才输出“*”,而本题只有2,4,6,8时才满足条件,而当i为10时程序结束,即只有4个“*”被输出。6、类MyClass的定义如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private:intvalue;};则对下列语句序列正确的描述是()。MyClass*P,my;P=&my;A、语句p=&my;是把对象my赋值给指针变量PB、语句MyClass*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)正确。7、下面是一个模板声明的开始部分:template<typenameT>double…由此可知()。A、这可能是一个函数模板的声明B、这可能是一个类模板的声明C、这既可能是一个函数模板的声明,也可能是一个类模板的声明D、这肯定是一个错误的模板声明标准答案:A知识点解析:本题考查函数模板和类模板的基础知识,从templatedouble这里就可以看出这是一个函数模板的声明。8、有如下头文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是()。A、f1B、f2C、f3D、f4标准答案:C知识点解析:只有类的非静态成员函数才隐含this指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。所以本题答案为C。9、已知函数f的原型为voidf(int&a,double*b);变量x、y的定义是intx;doubley;则下列调用该函数的语句中正确的是A、f(x,&y);B、f(x,y);C、f(&x,&y);D、f(&x,y);标准答案:A知识点解析:本题考查函数的调用,函数原型中第一个参数为引用,第二个参数为指针,所以只有A选项正确。10、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)()。A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。11、下面程序的运行结果为()。#includeclassA{public:A(){cout<<"1";}~A(){cout<<"2";}};classB:publicA{public:B(){cout<<"3";}一B(){cou

温馨提示

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

评论

0/150

提交评论