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

下载本文档

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

文档简介

国家二级(C++)笔试模拟试卷28(共9套)(共448题)国家二级(C++)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下面概念中,不属于面向对象方法的是A、对象B、继承C、类D、过程调用标准答案:D知识点解析:A,B,C属于面向对象方法,D属于面向过程方法,故答案为D。2、以下关于顺序存储结构的叙述中,()是正确的。A、每个结点中至少包含一个指针域B、逻辑上相邻的结点物理上不必邻接C、可用于栈、队列、树等逻辑结构的存储表示D、插入、删除运算操作不方便标准答案:D知识点解析:选项A)、B)、C)叙述的都是链式存储结构具有的特点,顺序结构每个结点只包含自身的信息域,且逻辑上相邻的结点物理上也是相邻的。因此其插入、删除运算操作木方便,需移动大量的结点。3、A、

B、

C、

D、

标准答案:B知识点解析:暂无解析4、A、

B、

C、

D、

标准答案:C知识点解析:树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为0。5、栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是()。A、ABCEDB、DCBEAC、DBCEAD、CDABE标准答案:2知识点解析:元素A、B、C、D在元素E之前入栈,所以出栈顺序可能为DCBEA,即元素A、B、C、D元素相继入栈后,D出栈、C出栈、B出栈;E入栈,E出栈,最后A出栈。6、数据库系统的核心是______。A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:2知识点解析:数据库系统的相关概念。7、下面不属于软件设计原则的是A、抽象B、模块化C、自底向上D、信息隐蔽标准答案:4知识点解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。8、以下函数调用语句中实参的个数是()。excc((v1,v2),(V3,v4,V5),V6);A、3B、4C、5D、6标准答案:1知识点解析:暂无解析9、下面关于对象概念的描述中,()是错误的。A、对象就是C语言中的结构体变量B、对象代表着正在创建的系统中的一个实体C、对象是一个状态和操作(或方法)的封装体D、对象之间的信息传递是通过消息进行的标准答案:1知识点解析:暂无解析10、“商品”与“顾客”两个实体集之间的联系一般是A、一对一B、一对多C、多对一D、多对多标准答案:D知识点解析:本题考核实体集之间的联系。实体集之间的联系有3种:一对一、一对多和多对多。因为一种商品可以由多个顾客购买,而一个顾客可以购买多种商品,所以,“商品”与“顾客”两个实体集之间的联系一般是“多对多”,选项D正确。二、选择题(本题共25题,每题1.0分,共25分。)11、重载输入流运算符>>必须使用的原型为A、ostream&operator>>(ostream&,<类名>);B、istream&operator>>(istream&,<类名>&);C、ostreamoperator>>(ostream,<类名>&);D、<类名>operator>>(istream&,<类名>&);标准答案:A知识点解析:本题考核运算符的重载。C++中重载输入流运算符>>和输出流运算符<<只能作为非类成员函数重载,且必须使用如下原形:istream&operator>>(istream&,<类名>&);ostream&operator<<(ostream&,<类名>);12、下列运算符中,()运算符在C++中不能重载。A、&&B、[]C、::D、new标准答案:C知识点解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符;除了“.”、“.*”、“->*”、“::”、“?:”这5个运算符之外,其他运算符都可以重载。13、在ios中提供控制格式的标志位中,()是转换为十六进制形式的标志位。A、hexB、octC、decD、left标准答案:A知识点解析:格式控制标志hex格式控制是整数按十六进制输出;oct格式控制是整数按八进制输出:dec格式控制是整数按十进制输出;left输出数据在指定的宽度内左对齐。14、下列关于虚函数的描述中,正确的是()。A、虚函数是一个static类型的成员函数B、虚函数是一个非成员函数C、基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明D、派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型标准答案:C知识点解析:虚函数是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。在基类用virtual声明成员函数为虚函数,在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同。15、解决类继承中产生的二义性的方法不包括A、使用作用域运算符限定访问的成员函数B、在派生类中定义同名函数,且参数表必须和基类的保持一致C、在派生类中定义同名函数,且参数表可以和基类的不同D、采用虚基类解决多重继承中的共同基类产生的二义性标准答案:C知识点解析:继承中的二义性主要表现在多重继承中具有多条继承路径时,派生类中行为的不确定性。如果强制指定了按照某条路径访问,亦即采用域作用符限定访问的成员函数的方法可以解决之,故选项A排除。在选项B和C中,唯一的区别在于参数表是否一致,我们知道:参数表不一致同名函数属于重载,是不存在二义性问题的,故选项C是正确答案。关于选项D,虚基类是C++中解决二义性的一种有效手段。16、在某类的公共部分有声明stringoperator++();和stringoperator++(int);则说明A、stringoperator++();是前置自增运算符声明B、string()perator++();是后置自增运算符声明C、stringoperator++(int);是前置自增运算符声明D、两条语句无区别标准答案:A知识点解析:在重载单操作符的过程中,++既可以是前缀运算符,又可以是后缀运算符,C++规定重载后缀++时必须多一个虚拟参数int,则不带虚拟参数int的为前缀运算符。17、以下叙述中正确的是()。A、构成C++语言程序的基本单位是类B、可以在一个函数中定义另一个函数C、main()函数必须放在其他函数之前D、所有被调用的函数一定要在调用之前进行定义标准答案:A知识点解析:关于C++语言,我们应该了解以下必须要掌握的基础知识:①C++程序是由类构成的。②一个函数由两部分组成:函数的首部和函数体。③一个类由两部分组成:类成员变量和类成员函数。④一个C++程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或写在一些函数之前,在另一些函数之后)。⑤C++程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。⑥可以用/*……*/和//对18、有以下程序段:#include#defineMAX(x,y)(x)>(y)?(x):(y)voidmain(){intij,k;i=10;j=15;k=MAX(i,j)*10;cout<A、15B、100C、150D、10标准答案:C知识点解析:题目程序中的MAX函数是利用条件运算符为?:求最大值。即(x>y)?(x):(y)是当x大于y时取x,否则取y。当i=10,j=15时,“MAX(ij)”的值为15,所以“k=MAX(ij)*10;”答案为:150。19、关于保护继承的有关对象的说法,正确的是()。A、基类成员对于子类的对象都是不可见的,子类成员的公有成员对子类的对象是可见的B、子类成员对子类的对象是可见的,基类成员对子类的对象也都是可见的C、基类成员中的公有成员对子类的对象是可见的D、基类成员对子类是不可见的标准答案:1知识点解析:采用保护继承方式,基类成员对子类的对象都不可见的,子类成员的公有成员对子类的对象是可见的。20、在函数定义前加上关键字“inline”,表示该函数被定义为()。A、重载函数B、内联函数C、成员函数D、普通函数标准答案:2知识点解析:内联函数主要解决的是程序的运行效率问题,但是内联函数在时间上的节省是以最终目标代码规模的增加为代价的。21、以下程序的输出的结果是()。#include<iostream.h>voidmain(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;cout<<k;}A、20B、21C、22D、23标准答案:2知识点解析:暂无解析22、语句ofstreamf("SALARY.DAT",ios∷app|ios∷binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,并且A、若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B、若文件存在,将其置为空文件;若文件不存在,打开失败C、若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D、若文件存在,打开失败;若文件不存在,建立一个新文件标准答案:1知识点解析:本题考查的是文件流的操作,app表示追加方式打开文件(即将指针移至文件尾),bi-naw表示以二进制方式打开文件。23、不合法的main函数命令行参数表示形式是()。A、main(inta,char*c[1]B、main(intarc,char**arv)C、main(intargc,char*argv)D、main(intargy,char*argc[])标准答案:4知识点解析:暂无解析24、下列关于C++语言类的描述中错误的是()。A、类用于描述事物的属性和对事物的操作B、类与类之间通过封装而具有明确的独立性C、类与类之间必须是平等的关系,而不能组成层次结构D、类与类之间可以通过一些方法进行通信和联络标准答案:4知识点解析:暂无解析25、按照标识符的要求,下列选项中,()符号不能组成标识符。A、连接符B、下划线C、大小写字母D、数字字符标准答案:1知识点解析:本题考核C++的标识符定义。C++规定标识符由大小写字母、数字字符(0~9)和下划线组成,并且以字母或下划线开始,后跟0个或多个字母、数字字符或下划线。由此可知A)选项中的连接符不能用于组成标识符。26、若有以下程序:#include<iostream>usingnamespacestd;classA{private:inta;public:voidseta(intx){a=x;}voidshowa(){cout<<a<<",";}};classB{private:intb;public:voidsetb(intx){b=x;}voidshowb(){cout<<b<<",”;}};classC:pUblicA,privateB{private:intc;public:voidsetc(intx,inty,intz){c=z;seta(x);setb(y);}voidshowc(){showa();showb();cout<<c<<end1;}};intmain(){Cc;c.setc(1,2,3);c.showc();retrun0;}程序执行后的输出结果是A、1,2,3B、1,1,1C、2,2,2D、3,3,3标准答案:1知识点解析:本题考核派生类的应用。本题中类A和类B都是基类。而类C从类A公有派生,从类B处私有派生。所以类C中的函数成员可以访问类A和类B中的公有成员。在类C的函数成员setc中,调用基类A的函数成员seta对A的数据成员a赋值,还调用了基类B的函数成员setb对类B的数据成员b赋值,然后对类C自己的数据成员c赋值。在类C的函数成员showc中,调用基类A的函数成员showa显示数据成员a的值,还调用基类B的函数成员showb显示数据成员b的值,然后输出类C自己的数据成员c的值。在主函数main中,先定义派生类的对象c,然后调用setc对c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。27、C++中用3个保留字实现异常处理,除了try和catch外,还有()。A、ifB、classC、throwD、return标准答案:4知识点解析:暂无解析28、下列程序的输出结果是#include<iostream.h>voidmain(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;cout<<y*d<<end1;}A、3B、3,2C、0D、3.07标准答案:4知识点解析:本题中,先将x转换为浮点型再与3.8相加,得到结果与5.0相除。最后将得到的结果去掉小数位化成整型数据赋给y。另外,值得注意的是,整型、实型、字符型数据间可以混合运算。在进行运算时,不同类型的数据先转换成同一类型,然后再进行运算。注意:如果认为执行y=(x+3.8)/5.0后y的值为1是错误的,此时y的值为0。注意:x为int型,将1.2赋值给x时,x的值为1。29、下列程序的运行结果为#include<iostream.h>classLocation{protected:intX,Y;publiC:voidSeX(intmyx){X=myx;}voidSetY(intmyy){Y=myy;}voidshowxy(){cout<<"X="<<X<<""<<"Y"=<<Y<<endl;}};ClassRectangle:publicLocation{A、X=3Y=5X=3Y=5H=4W=6B、X=3Y=5X=3Y=5H=3W=6C、X=3Y=5X=3Y=4H=4W=6D、X=3Y=5X=3Y=3H=4W=6标准答案:1知识点解析:本题是一道简单的成员函数应用题,考生只要按着主函数中生成的类Rectangle的对象r1进行成员函数的调用即可得到答案。30、以下叙述中正确的是A、在类中,不作特别说明的数据成员均为私有类型B、在类中,不作特别说明的成员函数均为公有类型C、类成员的定义必须是成员变量在前、成员函数在后D、类成员的定义必须放在类定义体内部标准答案:A知识点解析:类中默认的类型是私有类型,除非特别指定为公有或保护类型。同时,并没有强制要求成员函数和数据成员的排列顺序,如果类的成员函数在类定义体内部定义,则为内联函数,一般类的成员函数都在类定义体的外部实现。31、下面程序的运行结果为()。#include<iostream>usingnamespacestd;classA{public:A(){cout<<"";}~A(){cout<<"";}}classB:publicA{public:B(){cout<<"";}~B(){cout<<"";}}voidmain(){Bb;}A、1234B、1324C、1342D、3142标准答案:C知识点解析:构造函数和析构函数系统可以自动调用。先执行其基类构造函数,输出1;执行派生类的构造函数,输出3;执行派生类析构函数,输出4;执行基类析构函数,输出2。32、有如下函数模板声明:template<typenameT>TMax(Ta,Tb){return(a>=b)?a:b;)下列对函数模扳Max的调用中错误是A、Max(3.5,4,5)B、Max(3.5,4)C、Max<double>(3.5,4.5)D、Max<double>(3.5,4)标准答案:B知识点解析:暂无解析33、下列关于C++流的说明中,正确的是A、与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C、cin是一个预定义的输入流类D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象标准答案:A知识点解析:本题考查的是C++流的一些概念。从输入流中提取数据赋给一个变量的操作称为提取操作;而把表达式的值插入到输出流中的操作称为插入操作。故选项B的说法不正确。cin是一个预定义的输入流对象而不是流类,故选项C不正确。只有文件流中有一个open成员函数,用来打开一个文件,而输入、输出流中没有open成员函数,选项D的说法不正确。所以,只有选项A是正确的,应该选择A。34、对于一个类定义,下列叙述中错误的是A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。B、如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数。C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数。D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。标准答案:B知识点解析:本题考查的知识点是:构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。故本题应该选择B。35、有如下程序段:inti=5;while(inti=0){cout<<‘*’;i--;}运行时输出“*”的个数是A、0B、1C、5D、无穷标准答案:A知识点解析:语句while(inti=O)是重新定义了一个变量i,并赋值为O,因此while循环条件为假,不执行循环体,所以不会输出“*”。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员函数show用于输出两个数据成员的数值。#include<iostream>usingnamespaeestd;______T1i:T2j;public:dataClass(T1a,T2B){i=a;j=b;}voidshow(){tout<<i<<","<<j<<’\n’;}};intmain(){dataClass<int,double>obl(10,0.23);dataClass<char,char*>ob2(’X’,"mydata");obl.show();ob2.show();return0;请将程序补充完整,使程序在运行时输出:10,0.23X,mydata标准答案:template<classT1,classT2>classdataClass{知识点解析:类模板声明的一般格式为:template<typename类型参数>Class类名{类成员声明};其中类型参数可以为多个。题中出现了两个类型参数T1、T2,故应该在类模板的头部声明中声明两个类型参数T1、T2。37、执行语句序列intx=10.&r=x:cout<<x<<’-’<<r<<endl;输出结果为______。标准答案:10-10知识点解析:引用声明相当于是为变量声明一个别名,所以r=x=10。38、若要访问指针变量p所指向的数据,应使用表达式______。标准答案:*P知识点解析:C++语法规定。39、有如下程序:#include<iostream>usingnamespacestd;classCA{public:CA(){cout<<’A’;}};classCB:privateCA{public:CB(){cout<<’B’;}};intmain(){CAa;CBb;return0;{运行时的输出结果是______。标准答案:AAB知识点解析:CAa生成一个cA类对象a,调用CA的构造函数一次,打印’A’。CBb中的b是派生类,在构造时先调用基类的构造函数,然后调用派生类的构造函数,故先打印’A’后打印’B’。40、软件生命周期包括8个阶段。为了使各时期的任务更明确,又可分为3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】期。标准答案:软件开发知识点解析:暂无解析四、填空题(本题共10题,每题1.0分,共10分。)41、下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当语句,完成栈类模板的定义。template<classT>ClassTstack{enum{size=1000};Tstack[size];inttop;public:Tstack():top(0){}voidpush(constT&i){if(top<size)stack[top++]=i;}Tpop(){if(top==0)exit(1);//栈空时终止运行return______;}};标准答案:stack[--top]或stack[top-=1]或stack[top=top-1]知识点解析:本题考核类模板.函数pop的的功能栈顶元素,所以在函数体内应该完成的动作是弹出元素stack(top-1],然后将top做减1一操作,由于只有一处空格,所以这两操作要在一条语句中完成。42、下列程序的输出结果为______。#include<iostream.h>voidFunc(charch){switch(ch){case’A’:case’a’:cout<<"优秀"<<endl;case’B’:case’b’:cout<<"良好"<<endl;break;case’C’:case’c’:cout<<"及格"<<endl;break;default:cout<<"不及格"<<endl;}}voidmain(){charch1=’b’Func(ch1);Func(’A’);}标准答案:良好优秀良好知识点解析:本题主要考察switch语句中break语句的使用。由于caseA和caseB之间没有break语句,导致在输出“优秀”之后顺序执行并输出了“良好”,这与原来的设计思路是不符的。43、在C++语言的面向对象程序设计框架中,______是程序的基本组成单元。标准答案:类知识点解析:C++语言面向对象程序设计的基本组成单元是class,面向过程的程序设计的基本组成单元是函数。44、下面程序的输出结果是【】。#include<iostream.h>intadd(inta,intb);voidmain(){externintx,y;cout<<add(x,y)<<end1;}intx(20),y(5);intadd(inta,intb){ints=a+b;returns;}标准答案:25知识点解析:暂无解析45、下列程序的输出结果是【】。#include<iostream>usingnamespacestd;voidfun(int&rf){rf*=2;}intmain(){intnum=500;fun(num);cout<<num<<endl;returnO;}标准答案:1000知识点解析:暂无解析46、分析以下程序的执行结果【】。#include<iostream.h>classS{intA[10];public:int&operator()(int);};int&S::operator()(intx){returnA[x];}voidmain(){Sa;inti,j;for(i=0;i<10;i++)a(i)=i*2;for(i=0;i<10;i++)cout<<a(i)<<"";cout<<end1;}标准答案:024681012141618知识点解析:暂无解析47、设a,b和c都是整型,且值都是5,执行a+=b+c++;则a,b和c的结果分别是【】。标准答案:1556知识点解析:暂无解析48、如果表达式--x中的“--”是重载的类运算符,采用运算符函数调用格式,该表达式还可以表示为【】。标准答案:x.operator--()知识点解析:本题考核运算符函数的两种调用方式。假定已经作为某个类的成员函数重载了二元运算符+,且c1、c2都是该类的对象,则c1.operator+(c2)与c1+c2函数相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与c1+c2相同。49、下列程序的输出结果为【】。#inelude<iostream.h>int&max(int&x,int&y){return(x>y?x:y);}voidmain(){intn=3,m=12;max(m,n)++cout<<"m="<<m<<",n="<<n<<end1;}标准答案:m=13,n=3知识点解析:本题考察引用作为形参进行参数传递的知识。max函数的功能是返回较大的那个数,而max(m,n)++的作用是将较大值再进行增一运算。50、“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。classShape{public:virtualintCalArea()=0;};classTriangle:publicShape{public:Triangle(ints,inth):side(S),height(h){}【】{returnside*height/2;}private:intside;intheight;};标准答案:intCalArea()知识点解析:在基类中不能对虚函数给出有意义的实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做,这就是纯虚函数的作用。所以本题应该填写intcalArea()。国家二级(C++)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列叙述中正确的是A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:A知识点解析:非空的数据结构如果满足下列两个条件则称为线性结构:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件。线性表是线性结构。选项A的说法正确;栈与队列是特殊的线性表,因此,它们也是线性结构,选项B的说法错误:线性链表是线性表的链式存储结构,因此,其对应的逻辑结构也是线性结构,而不是非线性结构,选项C的说法错误;二叉树是非线性结构,而不是线性结构,选项D的说法错误。2、最简单的交换排序方法是()。A、快速排序B、选择排序C、堆排序D、冒泡排序标准答案:D知识点解析:所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。3、下列对于线性链表的描述中,正确的是()。A、存储空间必须连续,且各元素的存储顺序是任意的B、存储空间不一定是连续,且各元素的存储顺序是任意的C、存储空间必须连续,且前件元素一定存储在后件元素的前面D、存储空间不一定是连续,且前件元素一定存储在后件元素的前面标准答案:B知识点解析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。4、在软件开发中,下面不属于设计阶段的任务的是()。A、数据结构设计B、定义模块算法C、给出系统模块结构D、定义需求并建立系统模型标准答案:D知识点解析:软件设计一般分为总体设计和详细设计两个阶段,总体设计的任务是确定软件的总体结构,子系统和模块的划分,并确定模块间的接口和评价模块划分质量,以及进行数据分析。详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。定义需求并建立系统模型是需求阶段的任务。5、有如下程序:#include<iostream>usingnamespacestd;longfun(intn){if(n>2)return(fun(n-1)+fun(n-2));return2;}intmain(){cout<<fun(3)<<end1;return0;}则该程序的输出结果应该是()。A、2B、3C、4D、5标准答案:C知识点解析:暂无解析6、对虚函数的调用()。A、一定使用动态联编B、必须使用动态联编C、一定使用静态联编D、不一定使用动态联编标准答案:D知识点解析:虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函数声明只能出现在类声明中虚函数原型中,而不能在成员的函数体实现的时候。必须由成员函数来调用或者通过指针、引用来访问虚函数。如果通过对象名来访问虚函数,则联编在编译过程中认为足静态联编。7、下列关于this指针的描述中,正确的是()。A)类的成员函数都有this指针B)类的友元函数都有this指针C)任何与类相关的函数都有this指针D)类的非静态成员函数都有this指针A、

B、

C、

D、

标准答案:D知识点解析:暂无解析8、有如下程序:#include<iostream>usingnamespaeestd;classDemo{public:Demo(){cout<<"defaultconstructor\n";}Demo(constDemo&x){cout<<"copyconstructor\n";}};DernouserCore(DemoB){Democ(B);returnc;}intmain(){Demoa,d;cout<<"callinguserCode()\n";d=userCode(A);return0;}执行上面程序的过程中,构造函数Demo()和Demo(constDemo&x)被调用的次数分别为A、1和1B、1和2C、2和3D、2和4标准答案:C知识点解析:无参构造函数调用和复制构造函数调用的Demoa,d;调用2次无参构造函数Demo(),在DemouserCore(DemoB){Democ(B);returnc;}函数中,Demob调用一次复制构造函数,Democ(B)调用一次复制构造函数,在函数返回值时还要调用一次复制构造函数,故Demo(constDemo&x)的调用次数为3次。9、有以下程序:#include<iostream.h>#include<iomanip.h>voidmain(){cout.fill(’*’);cout.width(10);cout,<setiosflags(ios::left)<<123.45<<endl;}程序执行后的输出结果是()A、****123.45B、**123.45**C、123.45****D、***123.45*标准答案:4知识点解析:暂无解析10、软件调试的目的是A、发现错误B、改正错误C、改善软件的性能D、挖掘软件的潜能标准答案:B知识点解析:软件调试的目的是改正程序中的错误。二、选择题(本题共25题,每题1.0分,共25分。)11、有以下程序:#include<iostream>usingnamespacestd;classsample{private:intn;public:sample(){}sample(intm){n=m;}sampleadd(samples1,samples2){this->n-s1.n+s2.n;return(*this);voiddisp(){cout<<"n="<<n<<end1;}};intmain(}{samples1(10),s2(5),s3;s3.add(s1,s2);s3.disp();return0;}程序运行后,输出的结果是A、n=10B、n=5C、n=20D、n=15标准答案:D知识点解析:本题考核this指针的应用。上述程序中,sample类的add成员函数中使用了this指针,this指针指向当前对象自身,该成员函数中的语句:this->n=s1.n+s2.n;,用于修改当前对象的数据成员n的值,语句:return(*this);用于返回当前对象自身,即对当前对象进行了修改。对于main()函数调用add成员函数语句“s3.add(s1,s2);”。此时,this指针指向的是对象s3,执行该语句前,s3的数据成员n未赋值,执行完该语句后,就修改了s3的私有成员n的值,使其为15。12、下列关于getline()函数的描述中,错误的是()。A、该函数可以用来从键盘上读取字符串B、该函数读取的字符串长度是受限制的C、该函数读取字符串时,遇到终止符时便停止D、该函数中所使用的终止符只熊是换行符,标准答案:D知识点解析:本题考查的是无格式输入输出流对象中的getline()函数。该函数的功能是允许从输入洗中读取多个字符,并且允许指定输入终止字符(默认是换行符),在读取完成后,从读取的内容中删除该终止字符。13、定义如下枚举类型:enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};,则下列语句正确的是A、表达式Wednesday=Friday的值是trueB、Dayday;day=3C、Dayday;day=Monday+3D、Dayday;day=Tuesday+10标准答案:A知识点解析:enum<枚举类型名>{<枚举元素表>};其中:关键词enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。其中enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2}的值由0开始,即0,1,2,3。D中的本题中的枚举类型中的数据值Wednesday为2,而.Friday的值赋值为2,所以判断Wednesday等于Friday的表达式值为真,即true。即选择A。14、已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10}:则下列叙述中错误的是()。A、枚举常量NAME的值为1B、枚举常量NUMBER的值为1C、枚举常量MINUS的值为6D、枚举常量PRINT的值为10标准答案:A知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum类型名{枚举值表)。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右分别与整数0、1、2、3…n-1对应;若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1、m+2…对应,直到下一个赋了值的枚举值或结束。枚举常量NAME的值为0。15、下列语句段输出字符’*’的个数为()。inti=100;while(1){i--;if(i==0)break;cout<<’*’;}A、101个B、100个C、99个D、98个标准答案:4知识点解析:本题中while中的条件表达式永远为真,进入循环后先执行语句“i--;”,然后再执行后面的语句。由于当i的值变为0时,执行跳转语句break,即跳出while循环体。所以i的取值为1~99,即循环99次,输出99个“*”。16、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员.B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:8知识点解析:暂无解析17、在一个派生类对象结束其生命周期时()。A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果基类没有定义析构函数,则只调用派生类的析构函数D、如果派生类没有定义析构函数,则只调用基类的析构函数标准答案:1知识点解析:暂无解析18、下列关于break语句的叙述不正确的是()。A、break语句可用在循环体中,它将使执行流程跳出本层循环体B、break语句可用在switch语句中,它将使执行流程跳出当前switch语句C、break语句可用在if语句中,它将使执行流程跳出当前订语句D、break语句在一层循环体中可以出现多次标准答案:4知识点解析:暂无解析19、下面程序的结果是______。#include<iostream.h>classA{public:virtualvoidfun()=0{};};classB:publicA{public:voidfun(){cout<<"newfile";}};classC:publicA{public:voidfun(){cout<<"openfile"<<""}};classD:publicA{public:voidfun(){cout<<"savefile\n";}};voidmain(){Aa,*p;Bb;Cc;Dd;p=&c;p->fun();p=&b;p->fun();p=&d;p->fun();}A、newfileopenfilesavefileB、newfilenewfilenewfileC、编译出错D、openfilenewfilesavefile标准答案:4知识点解析:暂无解析20、下列程序中说明的私有成员是______。classLocation{intx;public:voidinit(intinitX,intinitY);private:inty;public:intSetX();IntSetY();A、xB、yC、SetX(),SetY()D、ABC都是标准答案:8知识点解析:暂无解析21、有如下程序:#include<iostream>usingnamespacestd;classDemopublic:{Demo(){cout<<"defaultconstructor\n";}Demo(constDemo&x){cout<<"copyconstructor\";}};DemouserCode(Demob){Democ(b);returnc;}intmain(){Demoa,d;cout<<"callinguserCode()\n";d=aserCode(a);return0;}执行上面程序的过程中,构造函数Demo()和Demo(constDemo&x)被调用的次数分别是______。A、1和1B、1和2C、2和3D、2和4标准答案:4知识点解析:类拷贝的相关内容。22、关于read()函数的下列描述中,()是对的。A、该函数是用来从键盘输入中获取字符串B、该函数所获取的字符的多少是不受限制的C、该函数只能用于文本文件的操作中D、该函数只能按规定读取所指定的字符数标准答案:8知识点解析:暂无解析23、定义如下枚举类型:enumNumber{one=l,tow=2,four=4,eight=8},则下列语句正确的是()。A、Numbernum=1;B、Numbernum=Number(20);C、Numbernum=Number(eight|0xFF);D、枚举类型Number的取值范围是0~15标准答案:8知识点解析:暂无解析24、在32位的计算机中,一个char型数据所占的内存长度的字节是A、4B、1C、2D、8标准答案:2知识点解析:char型数据所占内存的大小为1个字节。注意:int型数据占内存的大小为4个,congdouble,double占内存的大小为8个字节。注意:求字节数用sizeof运算符。25、下面这个程序的结果是#include<iostream.h>classA{private:inta;public:voidseta();intgeta();};voidA::seta(){a=1;}intA::geta(){returna;}classB{private:inta;public:voidseta();intgeta();};voidB::seta(){a=2;}intB::geta(){returna;}classC:publicA,publicB{private:intb;public:voiddisplay();};voidC::display(){intb=geta();cout<<b;}voidmain(){Cc;c.seta();c.display();}A、1B、2C、随机输出1或2D、程序有错标准答案:8知识点解析:在类A中有geta()函数,在类B中也有geta()函数,类C继承了类A和类B,这样就产生了二义性,所以程序会出错。26、类的析构函数是在什么时候调用的?A、类创建时B、创建对象时C、删除对象时D、不自动调用标准答案:4知识点解析:析构函数可以被函数调用,也可以系统调用:函数体内的对象在函数结束时调用析构函数和使用delete释放对象所占有用的资源。27、有如下函数模板的定义:template<classT>Tfunc(Tx,Ty){returnx*x+y*y;}A、func(3,5);B、func<>(3,5);C、func(3,5.5);D、func<int>(3,5.5);标准答案:4知识点解析:本题考核函数模板的使用。对于C选项,编译系统从3获得的信息是“T对应于int”,从5.5处获得的信息是“T对应于double”,二者相互矛盾,在编译时会产生错误。对于D选项中紧跟在函数名后的<int>就是模板实参表,通过它通知编译系统在调用过程中,double型的参数5.5将被自动换成int型。28、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为A、MyClass&(MyClassx);B、MyClass(MyClassx);C、MyClass(MyClass&x);D、MyClass(MyClass*x);标准答案:4知识点解析:本题考核拷贝构造函数的概念。声明拷贝构造函数的格式为:<类名>::<拷贝构造函数>(const<类名>&<引用名>);,其中const是修饰符可,以省略。29、不能作为函数重载的判断依据的是A、constB、返回类型C、参数个数D、参数类型标准答案:2知识点解析:本题考核函数重载。所谓函数重载,是指同一个函数名可以对应多个函数的实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。即重载函数不许具有相同的形参列表。函数的返回类型不能作为函数重载的判断依据。const是函数的一部分参与函数的重载30、C++语言的跳转语句中,对于break和continue说法正确的是()。A、break语句只应用于循环体中B、continue语句只应用于循环体中C、break是无条件跳转语句,continue不是D、break和continue的跳转范围不够明确,容易产生问题标准答案:2知识点解析:break语句和continue语句都是C++的跳转语句。break语句又称为跳出语句,它可以用在循环语句和switch语句中。在switch语句中,break用来使执行流程跳出switch语句。在循环语句中,break语句用来使执行流无条件跳出本层循环体。continue语句又称为继续语句,它仅用在循环语句中。它的功能是:结束本次循环,接着进行下一次是否执行循环的条件判定。31、考虑函数原型voidtest(inta,intb=7,charz=’*’),下面的函数调用中,属于不合法调用的是()。A、test(5);B、test(5,8);C、test(6,’#’):D、test(0,0,’*’);标准答案:4知识点解析:在选项C的调用中,将会把字符型实参#赋值给整型形参b,这不符合参数传递规则。32、要想使23.78965421的输出为23.7887应用的语句是A、cout<<23.78965421;B、cout<<fixed<<23.78965421;C、cout<<23.78965421-0.001;D、cout<<fixed<<23.78965421-0.001;标准答案:4知识点解析:C++语言中默认小数的输出位一共是6位,fixed的意义是在小数点后保留6位。33、若有以下定义和语句:ints[4][5],(*p)[5];p=s;则指针对s数组中第三个元素的正确引用形式是()。A、p[0][3]B、p[1][2]C、p[0][2]D、p[1][3]标准答案:C知识点解析:“p=s;”语句将指针p指向数组s。而数组为二维数组,下标标识由0开始,所以第二个元素是下标为0行的2列元素,即p[0][2]。34、下面描述正确的是()。A、类的普通成员函数可以操作常对象B、类的成员函数可以修改常对象C、只有常成员函数才可以操作常对象D、常对象可以被常函数更新标准答案:C知识点解析:只有常成员函数才可以操作常对象,常对象不可更新。35、执行语句序列ofstreamoutfile(”DATA.DAT");if(…)cout<<"OK";elsecout<<"FAIL";后,如果文件打开成功显示“OK”,否则就显示“FAIL”。由此可知,上面if语句的…处的表达式应是A、outfile.fail()或outfileB、outfile.good()或!outfileC、outfile.good()或outfileD、outfile.fail()或!outfile标准答案:C知识点解析:本题考核C++的文件I/O操作。函数good()表示刚进行的操作成功时返回true,否则返回false,所以可以通过类ofstream的对象outfile调用good()函数来检测刚才文件打开是否成功。题中在建立文件流对象的同时打开文件,若打开失败则返回fail。所以“outfile”也可以用作判断打开文件成功与否的条件。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、数据库保护分为安全性控制、______、并发性控制和数据的恢复。标准答案:完整性控制。知识点解析:安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏,完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发性控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生,数据的恢复:当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态。37、以下程序的输出结果是______。#include<iostream.h>intadd(intx,inty){returnx+y;}doubleadd(doublex,doubley){returnx+y;}voidmain(){inta=3,b=3;doublec=6.5,d=1.5;cout<<add(a,b)<<","<<add(c,d)<<end1;}标准答案:6,8知识点解析:暂无解析38、标准答案:switch知识点解析:break语句主要用于结束循环语句和switch语句的执行,使程序向下执行。39、按数据流的类型,结构化设计方法有两种设计策略,它们是【】和事务分析设计。标准答案:变换分析设计知识点解析:暂无解析40、在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【】。标准答案:log2n知识点解析:暂无解析四、填空题(本题共10题,每题1.0分,共10分。)41、以下程序的执行结果为______。#include<iostream>usingnamespacestd;classbase{public:virtualvoidwho(){cout<<"baseclass"<<endl;}};classderivel:publicbase{public:voidwho(){cout<<"d标准答案:baseclassderivelclassderive2class知识点解析:暂无解析42、若已知a=10,b=20,则表达式!a<b的值为______。标准答案:1知识点解析:计算表达式!a<b,先计算!a,因a的值为10,!a的值为0。关系表达式0<20为真,所以表达式!a<b的值为1。43、运算符“+”允许重载为类成员函数,或者非成员函数。若用operator+(c1,c2)这样的表达式来使用运算符“+”,应将“+”重载为【】函数。标准答案:非成员知识点解析:“+”是一个二元运算符,当它作为成员函数重载时形参表中只有一个参数,对应于第二操作数,而第一操作数就是对象本身,以this指针的形式隐藏在形参表中。而当“+”作为非成员函数重载时,两个操作数都出现在形参表中。44、类是一个支持集成的抽象数据类型,而对象是类的【】。标准答案:实例知识点解析:暂无解析45、有如下程序:#include<iostream>usingnamespacestd;classCon{charID;public:Con():ID(’A’){cout<<1;)Con(charID):ID(ID){cout<<2;}Con(Con&c):ID(c.getlD()){cout<<3;)chargetID()const{returnID;)};voidshow(Conc){cout<<c.getID();}intmain(){Conc1;show(c1);Conc2(’B’);show(c2);return0;}执行上面程序的输出是【】。标准答案:13A23B知识点解析:暂无解析46、以下程序的输出结果是【】。include<iostream.h>include<string.h>voidmain0{chars[50];strcpy(&s[O],"No");strcpy(&s[1],"123");strcpy(&s[2],"23456");cout<<s;}标准答案:N123456知识点解析:暂无解析47、可以把具有相同属性的一些不同对象归类,称为______。标准答案:对象类知识点解析:暂无解析48、数组元素a[i]是该数组中的第______个元素。标准答案:i+1知识点解析:暂无解析49、若已知a=10,b=20,则表达式!a<b的值为【】。标准答案:1知识点解析:计算表达式!a<b,先计算!a,因a的值为10,!a的值为0。关系表达式0<20为真,所以表达式!a<b的值为1。50、若要在C盘根目录下作为二进制文件打开文件test.dat,则应该用的语句是【】。标准答案:ifstreamfin("C:\test.dat",ios_binary);或ifstreamfin;fin.open(c:\test.dat",ios_binary);知识点解析:C++中打开文件有两种方式①ifstreamfin("test.dat");②ifstreamfin;fin.open("test.dat");,ios_binary的意义是以二进制文件打开。fin.open("test.dat");,ios_binary的意义是以二进制文件打开。国家二级(C++)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列关于栈的叙述正确的是()。A、在栈中只能插入数据B、在栈中只能删除数据C、栈是先进先出的线性表D、栈是先进后出的线性表标准答案:8知识点解析:暂无解析2、数据库、数据库系统和数据库管理系统之间的关系是()。A、数据库包括数据库系统和数据库管理系统B、数据库系统包括数据库和数据库管理系统C、数据库管理系统包括数据库和数据库系统D、三者没有明显的包含关系标准答案:2知识点解析:暂无解析3、开发软件所需的高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。A、软件投机B、软件危机C、软件工程D、软件产生标准答案:2知识点解析:暂无解析4、数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A、数据的存储结构B、计算方法C、数据映象D、逻辑存储标准答案:1知识点解析:暂无解析5、以下不属于对象的基本特点的是()。A、分类性B、多态性C、继承性D、封装性标准答案:4知识点解析:暂无解析6、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。A、冒泡排序为n/2B、冒泡排序为nC、快速排序为nD、快速排序为n(n-1)/2标准答案:8知识点解析:暂无解析7、下列对于线性链表的描述中正确的是()。A、存储空间不一定是连续,且各元素的存储顺序是任意的B、存储空间不一定是连续,且前件与元素一定存储在后件元素的前面C、存储空间必须连续,且前件元素一定存储在后件元素的前面D、存储空间必须连续,且各元素的存储顺序是任意的标准答案:1知识点解析:暂无解析8、设有关键码序列(16,9,4,25,15,2,13,18,17,5,8,24),要按关键码值递增的次序排序,采用初始增量为4的希尔排序法,一趟扫描后的结果为()。A、(15,2,4,18,16,5,8,24,17,9,13,25)B、(2,9,4,25,15,16,13,18,17,5,8,14)C、(9,4,16,15,2,13,18,17,5,8,24,15)D、(9,16,4,25,2,15,13,18,5,17,8,24)标准答案:1知识点解析:暂无解析9、数据库模型提供了两个映像,它们的作用是()。A、控制数据的冗余B、实现数据的共享C、使数据结构化D、实现数据独立性标准答案:8知识点解析:暂无解析10、软件工程的理论和技术性研究的内容主要包括软件开发技术和()。A、消除软件危机B、软件工程管理C、程序设计自动化D、实现软件可重用标准答案:2知识点解析:暂无解析二、选择题(本题共25题,每题1.0分,共25分。)11、已知下列语句中的x和y都是int型变量,其中错误的语句是()。A、x=y++;B、x=++y;C、(x+y)++D、++x=y;标准答案:4知识点解析:暂无解析12、下列有关内联函数的叙述中,正确的是()。A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句标准答案:4知识点解析:暂无解析13、若有说明:ints[3][4]={0);,则下面叙述正确的是()。A、只有元素s[0][0]可得到初值0B、此说明语句不正确C、数组s中各个元素都可得到初值,但其值不一定为0D、数组s中每个元素均可得到初值0标准答案:8知识点解析:暂无解析14、与以下程序段等价的是()。while(a){if(b)continue;c;}A、while(a){if(!b)c;}B、while(c){if(!b)break;c;}C、while(c){if(b)c;}D、while(a){if(b)break;c;}标准答案:1知识点解析:暂无解析15、下列程序段循环()次。intx=-10;while(++x){}A、9B、10C、11D、无限标准答案:1知识点解析:暂无解析16、C++语言中,编译过程后生成的文件类型为()。A、*.cppB、*.objC、*.hD、*.exe标准答案:2知识点解析:暂无解析17、已知:intm=10;,在下列定义引用的语句中,正确的是()。A、int&x=m;B、inty=&m;C、int&z;D、int&t=&m;标准答案:1知识点解析:暂无解析18、下列符号中,正确的C++标识符是()。A、enurnB、2bC、foo-9D、_32标准答案:8知识点解析:暂无解析19、编译时的多态性可以通过使用()获得。A、虚函数和指针B、重载函数和析构函数C、虚函数和对象D、虚函数和引用标准答案:4知识点解析:暂无解析20、以下都是C++语言标识符的是()。A、dsfa,df4,f$B、huhj,a^,k2C、3k,h,j_9D、_ok,jk,k8标准答案:8知识点解析:暂无解析21、设n=10,i=4,则赋值运算n%=i+1执行后,n的值是()。A、0B、3C、2D、1标准答案:1知识点解析:暂无解析22、考虑下面的函数原型:voidtestDefaulParam(inta,intb=7,charz=’*’);下面的函数调用中,不合法的是()。A、testDefaulParam(5);B、testDefaulParam(5,8);C、testDefaulParam(6,’#’);D、testDefaulParam(0,0,’*’);标准答案:4知识点解析:暂无解析23、有以下类定义classMyClass{public:MyClass(){cout<<1;}};则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是()。A、11B、111C、1111D、11111标准答案:2知识点解析:暂无解析24、若有下面的函数调用:fun(a+b,3,max(n-1,b))则fun的实参个数是()。A、3B、4C、5D、6标准答案:1知识点解析:暂无解析25、关于纯虚函数,下列表述正确的是()。A、纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B、纯虚函数的声明总是以“=0”结束C、派生类必须实现基类的纯虚函数D、含有纯虚函数的类不可能是派生类标准答案:2知识点解析:暂无解析26、已知一程序运行后执行的第一个输出操作是cout<<setw(10)<<setfill(’*’)<<1234;则此操作的输出结构是()。A、1234B、******1234C、**********1234D、1234******标准答案:2知识点解析:暂无解析27、关于new运算符的下列描述中,错误的是()。A、用来动态创建对象和对象数组B、用它创建的对象和对象数组可以使用运算符delete删除C、创建对象时要调用构造函数D、它创建对象数组时必须制定初始值标准答案:8知识点解析:暂无解析28、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()。A、ABoperator+(AB&a,AB&)B、ABperator+(AB&)C、opetator+(ABa)D、AB&operator+()标准答案:2知识点解析:暂无解析29、关于友元,下列说法错误的是()。A、如果类A是类B的友元,那么类B也是类A的友元B、如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C、友元关系不能被继承D、如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数标准答案:1知识点解析:暂无解析30、有如下程序:#include<iostream>usingnamespacestd;classObj{staticinti;public:Obj(){i++;}-Obj(){i--;}staticintgetVal(){returni;}};intObj::i=0;voidf(){Objob2;cout<<ob2.getVal();}hatmain(){Objob1;f();Obj*ob3=newObj;cout<<ob3->getVal();deleteob3;cout<<Obj::getVal();return();}程序的输出结果是()。A、232B、231C、222D、221标准答案:8知识点解析:暂无解析31、已知p是一个指向类Sample数据成员m的指针,s是类Sample的一个对象。如果要给m赋值为5,()是正确的。A、s.p=5B、s->p=5C、s.*p=5D、*s.p=5标准答案:4知识点解析:暂无解析32、有如下类的定义,下划线处的语句是()。classMyClass{_______________intx,y;Public:MyClass(inta=0,intb=0){x=a;y=b;}staticvoidchange(){y-=10;y-=10;}};A、staticB、constC、mutableD、不需要填入内容标准答案:1知识点解析:暂无解析33、下列是重载乘法运算符的函数原型声明,其中错误的是()。A、MyClassoperator*(double,double);B、MyClassoperator*(double,MyClass);C、MyClassoperator*(MyClass,double);D、MyClassoperator*(MyClass,MyClass);标准答案:1知识点解析:暂无解析34、有如下程序:#include<iostream>usingnamespacestd;classBase{private:charc;public:Base(charn):c(n){}~Base(){cout<<c;}};classDerived:publicBase{private:charc;public:Derived(charn):Base(n+1),c(n){}~Derived(){cout<<c;}};intmain(){Derivedobj(’x’);return0;}执行上面的程序将输出()。A、xyB、yxC、xD、y标准答案:1知识点解析:暂无解析35、有以下程序#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):re(r),im(i){doublereal()const{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;};intmain(){

温馨提示

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

评论

0/150

提交评论