全国计算机二级C++考题真题及解析.doc

上传人:豆**** 文档编号:17475266 上传时间:2022-05-24 格式:DOC 页数:140 大小:948KB
返回 下载 相关 举报
全国计算机二级C++考题真题及解析.doc_第1页
第1页 / 共140页
全国计算机二级C++考题真题及解析.doc_第2页
第2页 / 共140页
点击查看更多>>
资源描述

《全国计算机二级C++考题真题及解析.doc》由会员分享,可在线阅读,更多相关《全国计算机二级C++考题真题及解析.doc(140页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流全国计算机二级C+考题真题及解析.精品文档.全国计算机二级C+考试真题及答案【2006年至2011年3月】注:前面真题 后面有答案解析 2010年9月没有答案E-mail:yongchenming20082011年3月考试真题(第33次)一、选择题 (1)下列关于栈叙述正确的是 A)栈顶元素最先能被删除 B)栈顶元素最后才能被删除 C)栈底元素永远不能被删除 D)以上三种说法都不对 (2)下列叙述中正确的是 A)有一个以上根结点的数据结构不一定是非线性结构 B)只有一个根结点的数据结构不一定是线性结构 C)循环链表是非线性结构 D)双向链表是

2、非线性结构 (3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层) A)3 B)4 C)6 D)7 (4)在软件开发中,需求分析阶段产生的主要文档是 A)软件集成测试计划 B)软件详细设计说明书 C)用户手册 D)软件需求规格说明书 (5)结构化程序所要求的基本结构不包括 A)顺序结构 B)GOTO跳转 C)选择(分支)结构 D)重复(循环)结构 (6)下面描述中错误的是 A)系统总体结构图支持软件系统的详细设计 B)软件设计是将软件需求转换为软件表示的过程 C)数据结构与数据库设计是软件设计的任务之一 D)PAD图是软件详细设计的表示工具 (7)负责数据库

3、中查询操作的数据库语言是 A)数据定义语言 B)数据管理语言 C)数据操纵语言 D)数据控制语言 (8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是 A)1:1联系 B)1:m联系 C)m:1联系 D)m:n联系 (9)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是 A)自然连接 B)交 C)除 D)并(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)-369 B)369 C)0.369 D)整数集合1,2,3,4,5(11)为了提高函数调用的实际运行速度,可以将较简单的函数定义为A)内联函数 B)重载函数 C)递归函数 D)

4、函数模板(12)若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为A)a B)AA.a C)a() D)AA:a() (13)当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是 A)任何 B)公有或保护 C)保护或私有 D)私有 (14)若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是 A)Data+(Data); B)Data operator+(Data); C)Data+operator(Data); D)operator+(Data,Data); (15)下列关于函数模板的

5、描述中,正确的是 A)函数模板是一个实例函数 B)使用函数模板定义的函数没有返回类型 C)函数模板的类型参数与函数的参数相同 D)通过使用不同的类型参数,可以从函数模板得到不同的实例函数 (16) C+系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是 A)cout B)cin C)cerr D)cset (17)Windows环境下,由C+源程序文件编译而成的目标文件的扩展名是 A)cpp B)exe C)obj D)lik (18)字符串“a+b=12nt”的长度为 A)12 B)10 C)8 D)6 (19)有如下程序: #include using namespace

6、std; int main() int f,f1=0,f2=1; for(int i=3;i=6;i+) f=f1+f2; f1=f2;f2=f; coutF*p) s1=*p; if(s2*p) s2=*p; coutS1+S2return 0; 运行时的输出结果是 A)23 B)58 C)64 D)79 (21)有如下程序: #include using namespace std; void f1(int& x,int& y) int z=x; x=y; y=z; void f2(int x;int y) int z=x; x=y; y=z; int main() int x=10,y=

7、26; f1(x,y); f2(x,y); coutYreturn 0; 运行时的输出结果是 A)10 B)16 C)26 D)36 (22)有如下程序: #include using namespace std; class XA int a; public: static int b; XA(int aa):a(aa) b+; XA() int get()return a; int XA:b=0; int main() XA d1(2),d2(3); cout return 0; 运行时的输出结果是 A)5 B)6 C)7 D)8 (23)有如下程序: #include using nam

8、espace std; class Point int x,y; public: Point(int x1=0,int y1=0):x(x1),y(y1) int get()return x+y; class Circle Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),raaius(r) int get()return center.get()+radius; int main() Circle c(3,4,5); coutC.GET()return 0; 运行时的输出结果是 A)5 B)

9、7 C)9 D)12 (24)若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是 A)operator long() const; B)operator long(BigNumber); C)long operator long() const; D)long operator long(BigNumber); (25)有如下函数模板定义: template T1 FUN(T2 n)return n*5.0; 若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为 A)FUN(9) B)FUN C)FUN(9) D)FUN

10、(double) (26)下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是 A)coutINTERNALB)coutLEFTC)coutRIGHTD)cout(27)下列关于析构函数的描述中,错误的是 A)析构函数可以重载 B)析构函数由系统自动调用 C)每个对象的析构函数只被调用一次 D)每个类都有析构函数 (28)下列关于构造函数的描述中,错误的是 A)构造函数名与类名相同 B)构造函数可以有返回值 C)构造函数可以重载 D)每个类都有构造函数 (29)若PAT是一个类,则程序运行时,语句“PAT(*ad)3;”调用PAT的构造函数的次数是 A)0

11、 B)1 C)2 D)3 (30)下列描述中,错误的是 A)公有继承时基类中的公有成员在派生类中仍是公有成员 B)公有继承时基类中的保护成员在派生类中仍是保护成员 C)保护继承时基类中的公有成员在派生类中仍是公有成员 D)保护继承时基类中的保护成员在派生类中仍是保护成员 (31)生成派生类对象时,派生类构造函数调用基类构造函数的条件是 A)无需任何条件 B)基类中显式定义了构造函数 C)派生类中显式定义了构造函数 D)派生类构造函数明确调用了基类构造函数 (32)下列关于派生类和基类的描述中,正确的是 A)派生类成员函数只能访问基类的公有成员 B)派生类成员函数只能访问基类的公有和保护成员 C

12、)派生类成员函数可以访问基类的所有成员 D)派生类对基类的默认继承方式是公有继承 (33)有如下类模板定义: template class BigNumber long n; public: BigNumber(T i):n(i) BigNumber operator+(BigNumber b) return BigNumber(n+b.n); 己知b1、b2是BigNumber的两个对象,则下列表达式中错误的是 A)bl+b2 B)b1+3 C)3+b1 D)3+3 (34)下列关于文件流的描述中,正确的是 A)文件流只能完成针对磁盘文件的输入输出 B)建立一个文件流对象时,必须同时打开一个

13、文件 C)若输入流要打开的文件不存在,将建立一个新文件 D)若输出流要打开的文件不存在,将建立一个新文件 (35)有如下程序: #include using namespace std; class Pair int m,n; public: Pair(int j,int k):m(j),n(k) int get() return m; int get() const return m+n; int main() Pair a(3,5); const Pair b(3,5); cout+a.get()z&y=z的值为 【6】 。 (7)有如下语句序列: int x=-10;while(+x)

14、运行时while循环体的执行次数为 【7】 。 (8)有如下语句序列: int arr22=9,8,7,6; int *p=arr0+1; cout*p运行时的输出结果是 【8】 。 (9)函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。 int fun(char *str) int num=0; while(*str) num*=10; num+= 【9】 ; str+; return num; (10)若要将函数“void FriFun();”声明为类MyClass的友元函数,则应在类MyClass的定义中加入语句 【10】 。 (11)下列程序的输出结果为012,请根

15、据注释将横线处的缺失部分补充完整。 #include using namespace std; class Test public: Test(int a) data=a; Test() void print()coutprivate: int data; int main() Test t3= 【11】 ;/对有3个元素的Test类对象数组t初始化ti.print(); for(int i=0;i3;i+) return 0; (12)请在横线处填写派生类Derived的继承方式,使得程序的输出结果为Base。 #include using namespace std; class Base

16、 public: void print()coutBase; class Derived: 【12】 Base; int main() Derived d; d.print(); return 0; (13)下列程序的输出结果为1 2.3 2 4.6,请将横线处的缺失部分补充完整。 #include using namespace std; class Base public: Base(int a):idata(a) void print()coutIDATA; private: int idata; class Derived:public Base public: Derived(int

17、 a;double b): 【13】 ,ddata(b) void print()Base:print();coutDDATA; private: double ddata; int main() Derived dl(1,2.3),d2(2,4.6); d1.print(); d2.print(); return 0; (14)下列程序的输出结果为-5/8 -3/4,请将横线处的缺失部分补充完整。 #include using namespace std; class Fraction /“分数”类 public: Fraction(double a,double b):num(a),den

18、(b) Fraction() /重载取负运算符“-”,返回一个分数对象,其分子是原来分子的相反数。 Fraction operator-() 【14】 return f; void print() coutNUM private: double num; /分子 double den; /分母 int main() Fraction f1(5;8),f2(3,4); (-f1).print();(-f2).print(); return 0; (15)函数Min的功能是返回具有n个元素的数组array中的最小值。请将横线处的缺失部分补充完整,使得程序的输出结果为1.24。 #include u

19、sing namespace std; template T Min(T* array,int n) T min=array0; for(int i=1;iif(arrayireturn min; int main() double arr8=5.2,48.45,41.01,42,51.2,1.24,14.12,42; cout B、+ - + - C、 = 以及所有的类型转换运算符只能作为成员函数重载,不能重载为友元函数。 故本题答案为A。12. 语句ofstream f(SALARY.DAT,ios_base:app);的功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且

20、_。A、若文件存在,将其置为空文件;若文件不存在,打开失败B、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D、若文件存在,打开失败;若文件不存在,建立一个新文件本题考查的是文件流的输出。 ofstream f(SALARY.DAT,ios_base:app);是以ios_base:app方式打开文件,若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。 故本题答案为B。 13. 有如下程序#include using namespace std;class A public: virtual voi

21、d func1()coutAl; void func2()coutA2;class B:public A public: void func1()coutB1; void func2()coutfunc1(); p-func2(); return 0;运行此程序,屏幕上将显示输出_。A、B1B2 B、A1A2 C、B1A2 D、A1B2本题考查的是派生类。 派生类B由基类A公有继承而来。调用p-func1();后,执行派生类B的函数void func1();调用p-func2();后,执行基类的函数void func2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类型调用。故

22、通过指针p调用func2时将直接调用基类中的void func2()。 故本题答案为C。14. if语句的语法格式可描述为: 格式1:if()或 格式2:if()else关于上面的语法格式,下列表述中错误的是_。A、部分可以是一个if语句,例如if(if(a=0) ) B、部分可以是一个if语句,例如if() if() C、如果在前加上逻辑非运算符!并交换和的位置,语句功能不变D、部分可以是一个循环语句,例如if()while() 本题考查的是if语句。 if为关键字,通常是一个表达式;if子句和else子句可以是任何类型的语句,当然也可以是ifelse语句本身和while语句。 ifelse

23、语句的基本执行过程是:首先计算的值,如果此值不为0(真),则执行,然后忽略,而去执行if语句之后的下一条语句;如果此值为0(假),则执行,然后忽略,然后继续执行if语句之后的下一条语句。 故本题答案为A。15. 下列语句中,错误的是_。A、const int buffer=256; B、const double *point;C、int const buffer=256;D、double *const point;本题考查的是符号常量定义。 const int buffer=256; /声明常量buffer const double *point; /声明常量指针*point,*point不可

24、变,但point的值可以改变 int const buffer=256; /声明常量buffer double *const point; /声明的point是常量,*point可变,但point的值不可以改变,point不是外部的,必须在声明初始化常量对象。可改为: double aa = 123.45; double *const point = &aa; 故本题答案为D。16. 关于运算符重载,下列表述中正确的是_。A、C+已有的任何运算符都可以重载 B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C+中原来没有的运

25、算符本题考查的是运算符重载。 运算符重载是针对C+中原有的运算符进行的,不可能通过重载创造出新的运算符,故选项D错误。除了.、.*、-*、:、?:这5个运算符外,其它运算符都可以重载,故选项A错误。运算符函数的返回类型可以声明为基本数据类型,故选项B错误。在重载类型转换符时,由于运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。 故本题答案为C。17. 关于在调用模板函数时模板实参的使用,下列叙述正确的是_。A、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B、对于虚拟类型参数所对应的模板实参,如果他们是参数表中的最后的若干参数,则都可以省略C

26、、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D、对于常规参数所对应的模板实参,任何情况下都不能省略本题考查的是函数模板中模板实参的省略。 对于虚拟类型参数所对应的模板实参,如果从模板函数的实参表中获得的信息已经能够判定其中部分或全部虚拟类型参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。反之,对于某个模板实参,如果从模板函数的实参表中无法获得相同的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有不能省略的实参,则其自身还是不能省略,故选项A和B错误。对于虚拟类型参数所对应的模板实参,若能够省略可以省略,也可以不省略,故选项C错误。常规参

27、数的信息无法从模板函数的实参表中获得,因此在调用时必须显式的说明。 故本题答案为D。18. 若有下面的函数调用: fun(a+b,3,max(n-1,b)则fun的实参个数是_。 A、3 B、4 C、5 D、6本题考查的是函数的调用。 在C+中,是由逗号分开的,分别说明函数的各个参数。在fun()函数中它包括3个形参,a+b,3和max(n-1,b);当调用一个函数时,实参与形参一对一地匹配,所以实参个数也是3个。 故本题答案为A。19. 下列有关内联函数的叙述中,正确的是_。A、内联函数在调用时发生控制转移 B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的 D、内

28、联函数函数体的最后一条语句必须是return语句本题考查的是内联函数。 在C+中使用inline关键字来定义内联函数。inline关键字放在函数定义中函数类型之前。不过编译器会将在类的说明部分定义的任何函数都认定为内联函数,即使它们没有inline说明。一个内联函数可以有,也可以没有return语句。内联函数在程序执行时并不产生实际函数调用,而是在函数调用处将函数代码展开执行。内联函数是通过编译器来实现的。 故本题答案为C。20. 在公有继承的情况下,允许派生类直接访问的基类成员包括_。A、公有成员 B、公有成员和保护成员 C、公有成员、保护成员和私有成员 D、保护成员本题考查的是派生类。 派

29、生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。此时派生类对基类中各成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性。 故本题答案为B。21. 有如下程序:#include using namespace std;class Obj static int i;public: Obj()i+; Obj()i-; static int getVal()return i;int Obj:i=0;void f()Obj ob2;coutob2.getVal();int main() Obj obl; f(); Obj*ob3=new Obj;co

30、utgetVal(); delete ob3;coutObj:getVal(); return 0;程序的输出结果是_。 A、232 B、231 C、222 D、221本题主要考查了C+中类的静态成员。 由于i是类Obj的静态成员,该成员被类的所有实例共享。当定义ob1时,系统自动调用构造函数Obj(),i的值将加1;调用函数f()时,在定义ob2时系统会自动调用构造函数Obj(),i的值将再加1;调用ob2.getVal();后,将i的值输出,输出值为2;当调用函数f()即将结束时,系统自动调用析构函数Obj(),i的值将减1;当定义ob3时,系统自动调用构造函数Obj(),i的值将加1,调用coutgetVal();后,将i的值输出,输出值为2;调用delete ob3后将执行Obj的析构函数Obj(),执行后,i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁