1、二级 C+笔试 53 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列字符串常量表示中,( )是错误的。(分数:2.00)A.“/“yes/“or/“NO/“B.“/OK!“C.“abcd/n“D.“ABC/0“2.以下都是 C+语言标识符的是( )(分数:2.00)A.dsfa,df4,fB.huhj,a,k2C.3k,h,j_9D._ok,jk,k83.下列对派生类的描述中,( )是错误的(分数:2.00)A.一个派生类可以作另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D
2、.派生类中继承的基类成员的访问权限到派生类保持不变4.模板是实现类属机制的一种工具,其功能非常强大,它既允许用户构造类属函数,即 ( )。(分数:2.00)A.模板函数B.函数模板C.模板类D.类模板5.与以下程序段等价的是( ) while (a) if (b) continue; C; (分数:2.00)A.while(B.while( if(! c;) if(!break: c:)C.while(D.while( if( c:) if( break: c;6.可以采用( )种方法控制格式输出。(分数:2.00)A.1B.2C.3D.47.在 int b3=1,3,2;4,5,6,0;中
3、b22的值是( )。(分数:2.00)A.0B.5C.6D.28.设有定义 nit a:float f; double int i,则表达式 10+a+i+f 值的数据类型是( )(分数:2.00)A.intB.floatC.doubleD.不确定9.C+类体系中,不能被派生类继承的有( )。(分数:2.00)A.构造函数B.虚函数C.静态成员函数D.赋值操作函数10.有以下程序: #includeiostresm.h void main() int n; cinn; if (n+10) coutnendl; else coutn-endl; 若执行上述程序时,从键盘上输入 9,则输出结果是(
4、 )。(分数:2.00)A.11B.10C.9D.811.若有以下程序: #inclcudeiostream.h void main() int i; int a33=1,2,3,4,5,6,7,8,9); for(i=0;i3;i+) coutaii“ “; coutendl; 执行后的输出结果是( )(分数:2.00)A.50 53 56B.49 52 55C.25 8D.1 4 712.下列说法中,不属于数据模型所描述的内容的是( )(分数:2.00)A.数据结构B.数据操作C.数据查询D.数据约束13.在下列几种排序方法中,要求内存量最大的是( )(分数:2.00)A.插入排序B.选择
5、排序C.快速排序D.归并排序14.与 C 语言 prinft(“Hello word/n“);语句功能相同的 C+语句是( )。(分数:2.00)A.cout“Hello world/n“;B.cin“Hello wofld/n;C.cout“Hello world/n“;D.cin“Hello wofld/n;15.对于 int*pa5;的描述,( )是正确的。(分数:2.00)A.pa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素B.pa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量C.pa5表示某个数组的第 5 个元素的值D.pa 是一个具有 5 个元
6、素的指针数组,每个元素是一个 int 型指针16.下列叙述中,不属于测试的特征的是( )(分数:2.00)A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性17.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示( )(分数:2.00)A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向18.实现运行时的多态性要使用( )。(分数:2.00)A.重载函数B.构造函数C.析构函数D.虚函数19.C+中的类有两种用法:一种是类的实例比,即生成类的对象,并参与系统的运行;另一种是通过( )派生出新的类。(分数:2.00)A.复用B.继承C.封装
7、D.引用20.当执以下程序段时,循环体将执行( ), main() int y=1; doy- -;while(-y): (分数:2.00)A.一次B.两次C.无限次D.系统将提示有语法错误21.栈通常采用的两种存储结构是( )(分数:2.00)A.线性存储结构和链表存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构22.关于多继承二义性的描述中,错误的是( )。(分数:2.00)A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B.解决二义性的最常用的方法是对成员名的限定法C.基类和派生类中同时出现的同名函数,也存在二义性问
8、题D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性23.以下定义数组中错误的是( )(分数:2.00)A.int a10 ;B.int a 2 20;C.int a20 ;D.int a ;24.不能实现函数之间数据传递的是( )(分数:2.00)A.全局变量B.局部变量C.函数接D.函数返回值25.下面程序的输出结果是( ) #includeiostream using namespace std; int main() int s: for(int k=2;k6;k+=2) s=1; for(int j=k, j6;j+)s+=j
9、; coutsend1: (分数:2.00)A.9B.1C.11D.1026.表达式 18/4*sqrt(4.0)/5 值的数据类型是( )(分数:2.00)A.intB.floatC.doubleD.不确定27.以下四种说法中,正确的一项是( )(分数:2.00)A.C+允许在字符串上进行整体操作B.语句: char vn=“Brown“: 将 vn 定义成一个有 5 个元素的数组,因为“Brown“中含有 5 个字符C.对指针只要赋给一个地址值就可以了D.一维的指针数组实际上是一个二维数组28.有以下程序: #includeiostream.h #includeiomanip.h void
10、 main() coutfill(*);coutwidth(10); cout,setiosflags(ios:left)123.45endl; 程序执行后的输出结果是( )(分数:2.00)A.*123.45B.*123.45*C.123.45*D.*123.45*29.关于构造函数 A()的拷贝构造函数正确的是( )(分数:2.00)A.A(A*;B.A(A ;C.A(A cout!(y=x/2)“,“; couty!=x%3)“,“; cout(x0) if(!break: c:)C.while(D.while( if( c:) if( break: c;解析:6.可以采用( )种方法控
11、制格式输出。(分数:2.00)A.1B.2 C.3D.4解析:7.在 int b3=1,3,2;4,5,6,0;中 b22的值是( )。(分数:2.00)A.0B.5C.6 D.2解析:8.设有定义 nit a:float f; double int i,则表达式 10+a+i+f 值的数据类型是( )(分数:2.00)A.intB.floatC.double D.不确定解析:9.C+类体系中,不能被派生类继承的有( )。(分数:2.00)A.构造函数 B.虚函数C.静态成员函数D.赋值操作函数解析:10.有以下程序: #includeiostresm.h void main() int n;
12、 cinn; if (n+10) coutnendl; else coutn-endl; 若执行上述程序时,从键盘上输入 9,则输出结果是( )。(分数:2.00)A.11B.10 C.9D.8解析:11.若有以下程序: #inclcudeiostream.h void main() int i; int a33=1,2,3,4,5,6,7,8,9); for(i=0;i3;i+) coutaii“ “; coutendl; 执行后的输出结果是( )(分数:2.00)A.50 53 56 B.49 52 55C.25 8D.1 4 7解析:12.下列说法中,不属于数据模型所描述的内容的是( )
13、(分数:2.00)A.数据结构B.数据操作C.数据查询 D.数据约束解析:13.在下列几种排序方法中,要求内存量最大的是( )(分数:2.00)A.插入排序B.选择排序C.快速排序D.归并排序 解析:14.与 C 语言 prinft(“Hello word/n“);语句功能相同的 C+语句是( )。(分数:2.00)A.cout“Hello world/n“;B.cin“Hello wofld/n;C.cout“Hello world/n“; D.cin“Hello wofld/n;解析:15.对于 int*pa5;的描述,( )是正确的。(分数:2.00)A.pa 是一个指向数组的指针,所指
14、向的数组是 5 个 int 型元素B.pa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量C.pa5表示某个数组的第 5 个元素的值D.pa 是一个具有 5 个元素的指针数组,每个元素是一个 int 型指针 解析:16.下列叙述中,不属于测试的特征的是( )(分数:2.00)A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性 D.测试的经济性解析:17.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示( )(分数:2.00)A.模块之间的调用关系 B.程序的组成成分C.控制程序的执行顺序D.数据的流向解析:18.实现运行时的多态性要使用( )。(分数:2.0
15、0)A.重载函数B.构造函数C.析构函数D.虚函数 解析:19.C+中的类有两种用法:一种是类的实例比,即生成类的对象,并参与系统的运行;另一种是通过( )派生出新的类。(分数:2.00)A.复用B.继承 C.封装D.引用解析:20.当执以下程序段时,循环体将执行( ), main() int y=1; doy- -;while(-y): (分数:2.00)A.一次B.两次C.无限次 D.系统将提示有语法错误解析:21.栈通常采用的两种存储结构是( )(分数:2.00)A.线性存储结构和链表存储结构 B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构解析:22.关于多
16、继承二义性的描述中,错误的是( )。(分数:2.00)A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B.解决二义性的最常用的方法是对成员名的限定法C.基类和派生类中同时出现的同名函数,也存在二义性问题 D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性解析:23.以下定义数组中错误的是( )(分数:2.00)A.int a10 ;B.int a 2 20;C.int a20 ; D.int a ;解析:24.不能实现函数之间数据传递的是( )(分数:2.00)A.全局变量B.局部变量 C.函数接D.
17、函数返回值解析:25.下面程序的输出结果是( ) #includeiostream using namespace std; int main() int s: for(int k=2;k6;k+=2) s=1; for(int j=k, j6;j+)s+=j; coutsend1: (分数:2.00)A.9B.1C.11D.10 解析:26.表达式 18/4*sqrt(4.0)/5 值的数据类型是( )(分数:2.00)A.intB.floatC.double D.不确定解析:27.以下四种说法中,正确的一项是( )(分数:2.00)A.C+允许在字符串上进行整体操作 B.语句: char
18、vn=“Brown“: 将 vn 定义成一个有 5 个元素的数组,因为“Brown“中含有 5 个字符C.对指针只要赋给一个地址值就可以了D.一维的指针数组实际上是一个二维数组解析:28.有以下程序: #includeiostream.h #includeiomanip.h void main() coutfill(*);coutwidth(10); cout,setiosflags(ios:left)123.45endl; 程序执行后的输出结果是( )(分数:2.00)A.*123.45B.*123.45*C.123.45* D.*123.45*解析:29.关于构造函数 A()的拷贝构造函数
19、正确的是( )(分数:2.00)A.A(A*;B.A(A ;C.A(A cout!(y=x/2)“,“; couty!=x%3)“,“; cout(x0&y0)“,“; cout(x!=yx=y)endl: 程序执行后的输出结果是( )(分数:2.00)A.0,0,0,1 B.1,1,1 1C.0,0, 1,1D.1,1,0,0解析:32.关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 解析:33.下面程序输出的结果
20、是( ) #includeiostreas.h void main() inti: int a3 3=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+= couta i i“ “;(分数:2.00)A.1 59 B.7 5 3C.3 5 7D.5 9 1解析:34.下列关于运算符重载的描述中,正确的是( )。(分数:2.00)A.运算符重载可以改变运算符的操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构 解析:35.下面对静态数据成员的描述中,正确的是( )(分数:2.00)A.静态数据成员是类的所有对象共享的数据 B.类的每
21、个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用解析:二、B填空题/B(总题数:15,分数:30.00)36.以下程序的执行结果是_。 #includeiostream.h class Sample int n; public: Sample() Sample(int m)n+m;) int&operator-(int) n- return n; void disp () cout“n= “nend1; void main () Sample s (10); (s-) +; s.disp(); (分数:2.00)填空项 1:_ (正确答案:
22、程序的执行结果为:n10)解析:37.重载的流运算符函数经常定义为类的 1 函数。(分数:2.00)填空项 1:_ (正确答案:友元)解析:38.设有以下变量定义,并已赋确定的值,char w;int x;float y;double z;则表达式:w*x+z-y 所求得的数据类型为 1。(分数:2.00)填空项 1:_ (正确答案:双精度类型)解析:39.转义字符序列中的首字符是 1 字符。(分数:2.00)填空项 1:_ (正确答案:/)解析:40.以下程序的执行结果是_。 #includeiostream.h class Sample int n; public: Sample() Sa
23、mple (int i (n=i;) void add (Sample &s1,Sample s2) this-n=sl.n+=s2.n; void disp() cout“ n=“ n end1: void main () Sample sl(2), s2(5),s3: s3add(s1,s2); s1disp() s2disp(): s3disp();(分数:2.00)填空项 1:_ (正确答案:n=7)解析:n=5 n=741.若要想进行标准输入输出则头文件必须包含 1 件。(分数:2.00)填空项 1:_ (正确答案:iostream.h)解析:42.在长度为 n 的有序线性表中进行二
24、分查找。最坏的情况下,需要的比较次数为 1。(分数:2.00)填空项 1:_ (正确答案:log 2n)解析:43.假定一个一维数组的定义为“char a8,b;“若把该数组最后一个元素赋值给 b,应该采取的表达式为: 1。(分数:2.00)填空项 1:_ (正确答案:b=a7)解析:44.程序文件的编译错误分为_和_两类。(分数:2.00)填空项 1:_ (正确答案:语法错误 连接错误)解析:45. 1 成员函数中不能直接引用类中说明的非静态成员。(分数:2.00)填空项 1:_ (正确答案:静态)解析:46.数据库管理系统常见的数据模型有层次模型、网状模型和 13 种。(分数:2.00)填
25、空项 1:_ (正确答案:关系模型)解析:47.实现比较两个字符串大小的函数是 1。(分数:2.00)填空项 1:_ (正确答案:strcmp)解析:48.空字符串的长度是 1。(分数:2.00)填空项 1:_ (正确答案:0)解析:49.耦会和内聚是评价模块独立性的两个主要标准,其中 1 反映了模块内各成分之间的联系。(分数:2.00)填空项 1:_ (正确答案:内聚)解析:50.已知 double var;是文件 F1.CPP 中的一个全局变量定义,若文件 F2CPP 中的某个函数也需要访问,则在文件 F2.CPP 中 var 应说明为 1。(分数:2.00)填空项 1:_ (正确答案:外部变量)解析: