1、二级 C+笔试-336 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.友元运算符 obj1obj2 被 C+编译器解释为( )。(分数:2.00)A.operator(obj1,obj2)B.(obj1,obj2)C.obj2.operator(obj1)D.obj1.operator(obj2)2.派生类的对象对它的基类成员中( )是可以访问的。(分数:2.00)A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员3.一个( )允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取
2、任意类型。(分数:2.00)A.函数模板B.模板函数C.类模板D.模板类4.C+程序由类和函数组成,模板也可分为( )和( )。(分数:2.00)A.类模板 函数模板B.模板类 模板函数C.类 函数D.对象 函数5.数据库、数据库系统和数据库管理系统之间的关系是( )。(分数:2.00)A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统C.数据库管理系统包括数据库和数据库系统D.3 者没有明显的包含关系6.有如下程序段=执行该程序段后,x 的值为(分数:2.00)A.tureB.falseC.0D.17.下列描述中错误的是( )。(分数:2.00)A.派生类可以作
3、为基类派生其他的子类B.派生类继承基类的所有数据成员C.派生类可以有多个基类D.派生类不能继承一些函数成员8.若有说明:int s34=0 则下面叙述正确的( )。(分数:2.00)A.只有元素 s00可得到初值 0B.此说明语句不正确C.数组 s 中各个元素都可得到初值,但其值不一定为 0D.数组 s 中每个元素均可得到初值 09.下面关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既町以在函数说明时定义,也可以函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型10.已知 p 是一个指向类 Sam
4、ple 数据成员 m 的指针,s 是类 Sample 的一个对象。如果要给 m 赋值为 5,( )是正确的。(分数:2.00)A.p=5B.s-p=5C.*p=5D.*s.p=511.以下哪个特征不是面向对象思想中的主要特征( )。(分数:2.00)A.多态B.继承C.封装D.垃圾回收12.以下不属于运算符重载应注意的问题是( )。(分数:2.00)A.重载的运算号应保持其原有的基本B.重载的运算符应尽可能保持其原有的特性C.运算符的重载尽量不配套D.使用引用参数还是非引用函数13.假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句为 ( )。(分数:2.00)A.MyClass=
5、执行该程序段后,x 的值为(分数:2.00)A.tureB.falseC.0D.1 解析:7.下列描述中错误的是( )。(分数:2.00)A.派生类可以作为基类派生其他的子类B.派生类继承基类的所有数据成员 C.派生类可以有多个基类D.派生类不能继承一些函数成员解析:8.若有说明:int s34=0 则下面叙述正确的( )。(分数:2.00)A.只有元素 s00可得到初值 0B.此说明语句不正确C.数组 s 中各个元素都可得到初值,但其值不一定为 0D.数组 s 中每个元素均可得到初值 0 解析:9.下面关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个静态成员函数B.虚函
6、数是一个非成员函数C.虚函数既町以在函数说明时定义,也可以函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 解析:10.已知 p 是一个指向类 Sample 数据成员 m 的指针,s 是类 Sample 的一个对象。如果要给 m 赋值为 5,( )是正确的。(分数:2.00)A.p=5B.s-p=5C.*p=5 D.*s.p=5解析:11.以下哪个特征不是面向对象思想中的主要特征( )。(分数:2.00)A.多态B.继承C.封装D.垃圾回收 解析:12.以下不属于运算符重载应注意的问题是( )。(分数:2.00)A.重载的运算号应保持其原有的基本B.重载的运算符应尽
7、可能保持其原有的特性C.运算符的重载尽量不配套 D.使用引用参数还是非引用函数解析:13.假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句为 ( )。(分数:2.00)A.MyClass&(MyClass x);B.MyClass(MyClass x)C.MyClass(MyClass& x); D.MyClass(MyClass *x)解析:14.对于常数据成员,下面描述正确的是( )。(分数:2.00)A.常数据成员可以不初始化,并且不能更新B.常数据成员必须被初始化,并且不能更新 C.常数据成员可以不初始化,并且可以被更新D.常数据成员必须被初始化,并且町以被更新解析:15
8、.在 C+中,打开一个文件就是将这个文件与一个( )建立关联;关闭一个文件就取消这种关联。(分数:2.00)A.类B.流 C.对象D.结构解析:16.下面是关于 ios 类的叙述,正确的是( )。(分数:2.00)A.它是 istream 类和 ostream 类的虚基类 B.它只是 istream 类的虚基类C.它只是 ostream 类的虚基类D.它是 iostream 类的虚基类解析:17.编译时的多态性可以通过使用( )获得。(分数:2.00)A.虚函数和指针B.重载函数和析构函数C.虚函数和对象 D.虚函数和引用解析:18.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该
9、运算符是( )(分数:2.00)A.一元运算符B.二元运算符C.选项 A 和选项 B 都可能D.重载错误 解析:19.下面的语句中错误的是( )。(分数:2.00)A.int a=5:int xa; B.const int a=5;int xa;C.int n=5;int*p=new int a;D.const int n=5:int*p=new inta;解析:20.进行文件操作时需要包含( )文件。(分数:2.00)A.lostream.hB.fstream.h C.stdio.hD.stidliB.h解析:21.下列程序执行后的输出结果是( )。void funcl(int i);voi
10、d func2(int i);char st=“hello,friend!”;void funcl(int i)printf(“%c“,sti);if(i3)i+=2;func2(i);void func2(int i)printf(“%c“,sti);if(i3)i+=2;funcl(i);main()int i=0;funcl(i);printf(“/n“);(分数:2.00)A.helloB.helC.hol D.hlm解析:22.关于纯虚函数,下列表述正确的是( )。(分数:2.00)A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0”结束 C.派生
11、类必须实现基类的纯虚函数D.含有纯虚函数的类不可能是派生类解析:23.对于下面定义的类 MyClass,在函数 f()中将对象成员 n 的值修改为 50 的语句应该是 ( )。class MyClasspublic:MyClass(int X)n=x;void SetNum(int nl)n=nl private:int n;int f()MyClass*ptr=new MyClass(45);_(分数:2.00)A.MyClass(50)B.SetNum(50)C.ptr-SetNum(50) Dptr-n=50 解析:24.对于模板定义关键字 class 和 typename 说法不正确的
12、是( )。(分数:2.00)A.程序中的 class 并不能都替换为 typenameB.class 和 typename 都可互相替换 C.程序中的 typename 都能替换为 classD.程序中的部分 class 可以替换为 typename解析:25.( )是给对象取一个别名,它引入了对象的同义词。(分数:2.00)A.指针B.引用 C.故举D.结构解析:26.在派生类中重新定义虚函数时,除了( )方面,其他方面都必须与基类中相应的虚函数保持一致。(分数:2.00)A.参数个数B.参数类型C.函数名称D.函数体 解析:27.下列关于 C+语言类的描述中错误的是( )。(分数:2.00
13、)A.类用于描述事物的属性和对事物的操作B.类与类之间通过封装而具有明确的独立性C.类与类之间必须是平等的关系,而不能组成层次结构 D.类与类之间可以通过一些方法进行通信和联络解析:28.下列说法中错误的是( )。(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍是 private 的 C.私有继承时基类中的 public 成员在派生类中是 private 的D.保护继承时基类中的 public 成员在派生类中是 protected 的解析:29.进行文件操作需包含的头文件是( )。(分数:2.0
14、0)A.fstream.h B.ostream.hC.stdio.hD.stdiB.h解析:30.C+中用 3 个保留字实现异常处理,除了 try 和 catch 外,还有( )。(分数:2.00)A.ifB.classC.throw D.return解析:31.下列函数中,( )是对文件进行写操作的。(分数:2.00)A.getB.readC.seekgD.put 解析:32.有关构造函数的说法不正确的是( )。(分数:2.00)A.构造函数名字和类的名字一样B.构造函数在说明类变量时自动执行C.构造函数无任何函数类型D.构造函数有且只有一个 解析:33.对虚函数的调用( )。(分数:2.0
15、0)A.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编 解析:34.以下程序的结果是( )。#includeiostream.hvoid main()char*p=“abcdefgh“,*r;long*q;q=(1ong*)P;q+; r=(char*)q;coutrendl;=(分数:2.00)A.defgB.cdefC.ghabD.efgh 解析:35.实现输出为八进制的符号是( )。(分数:2.00)A.decB.hexC.oct D.setw (8)解析:二、填空题(总题数:15,分数:30.00)36.C+语言中的友元函数为在类外访问类中的私有成员和保
16、护成员提供了方便,但破坏了类的 1 和 2。(分数:2.00)填空项 1:_ (正确答案:隐藏性)填空项 1:_ (正确答案:封装性)解析:37.利用继承能够实现 1。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。(分数:2.00)填空项 1:_ (正确答案:软件复用)解析:38.软件危机出现于 20 世纪 60 年代末,为了解决软件危机,人们提出用 1 的原理来设计软件,这就是软件工程诞生的基础。(分数:2.00)填空项 1:_ (正确答案:软件工程学)解析:39. 1 是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他
17、内部管理操作。(分数:2.00)填空项 1:_ (正确答案:构造函数)解析:40.派生类对基类的继承有三种方式:_、_,保护继承。(分数:2.00)填空项 1:_ (正确答案:公有继承 私有继承)解析:41.动态联编中直到_时才能确定调用哪个函数;而静态联编则是在_时进行的。(分数:2.00)填空项 1:_ (正确答案:程序运行 程序编译)解析:42.C+语言中关键字运算符有 new,delete 和 1。(分数:2.00)填空项 1:_ (正确答案:sizeof)解析:43.以下程序的执行结果是_。#includeiostream.hint &max(int &x,int &y)return
18、(xy?x:y);void main()int n=2,m=l0;max (n,m)-;cout“n=“n“m=“mendl;(分数:2.00)填空项 1:_ (正确答案:n=2,m=9)解析:44.多态具体体现运行和编译两个方面,在程序运行时的多态性通过继承和 1 来体现,而程序编译时多态性体现函数和运符的重载上。(分数:2.00)填空项 1:_ (正确答案:虚函数)解析:45.从一个函数模板产的模板函数是同名的,因此编译器用 1 的解决方法调用相应函数。(分数:2.00)填空项 1:_ (正确答案:重载)解析:46.常用的黑箱测试有等价分类法、 1、因果图法和错误推测法 4 种。(分数:2
19、.00)填空项 1:_ (正确答案:边值分析法)解析:47.以下程序的执行结果是_。#includeiostream.hvoid main()int a=o,b=1,c=0,d=20; if( a) d=d-10;else if(! b)if(! c) d=15:else d=25;cout“d=“dendl;(分数:2.00)填空项 1:_ (正确答案:d=20)解析:48.使用函数模板的方法是先说明函数模板,然后实例化成相应的 1 进行调用执行。(分数:2.00)填空项 1:_ (正确答案:模板函数)解析:49.流操作子 1 向输出流中插入一个换行符并刷新输出缓冲区。(分数:2.00)填空项 1:_ (正确答案:endl)解析:50.由关系数据库系统支持的完整性约束是指 1 和参照完整性。(分数:2.00)填空项 1:_ (正确答案:实体完整性)解析: