保捱科技网
您的当前位置:首页计算机二级考试C++练习题答案

计算机二级考试C++练习题答案

来源:保捱科技网
计算机二级考试C++练习题答案

单选题

1). 结构化程序设计主要强调的是( )

A.程序的规模

B.程序的效率

C.程序设计语言的先进性

D.程序易读性

正确答案:D

2). 下面关于C++流的叙述中,正确的是( )。

A.cin是一个输入流对象

B.可以用ifstream定义一个输出流对象

C.执行语句序列char* y=″PQMN″;cout<

D.执行语句序列char x[80];cin.getline(x,80);时,若输入Happy new year,则x中的字符串是″Happy″

正确答案:A

答案解析:本题考查C++流的概念和I/()的格式化。cin是istream类的对象,即输入流对象。ifstream是输入文件流,类不能定义个输出流对象。getline函数的功能是允许从输入流中读取多个字符,并且允许指定输入终止,在读取完成后,从读取的内容中删除该终止字符,所以D选项中的语句序列后x中字符串应该是Happy new year。

3). 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。

A.函数调用可以作为的语句存在

B.函数调用可以无返回值

C.函数调用可以出现在表达式中

D.函数调用可以作为、一个函数的形参

正确答案:D

答案解析:本题考查函数的调用方式。函数的形参和实参具有以下特点:①形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放分配的内存单元,因此,形参只有在函数内部有效,函数调用结束返回主调函数后则不能再使用该形参变量;②实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参,因此应通过预先用赋值、输入等办法使实参获得确定值;③实参和形参在数量上、类型上、顺序上应严格一致,否则会发生″类型不匹配″的错误;④函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

4). 设int a=10,b=11,c=12;,表达式(a+b)

A.2

B.0

C.-2

D.1

正确答案:B

答案解析:本题考察的是运算符的优先级,应该先计算a+b的值为21,然后与c比较大小的值为0,根据\"&&\"的运算规则,整个表达式的值为0。

5). 若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。

A.Data+( Data);

B.Data operator+( Data);

C.Data+operator( Data);

D.operator+( Data.Data);

正确答案:B

答案解析:重载运算符的函数一般格式如下:函数类型operator运算符名称(形参列表),

因此选B。

6). 下列叙述中正确的是( )

A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化

B.循环队列中的元素个数随队头指针的变化而动态变化

C.循环队列中的元素个数随队尾指针的变化而动态变化

D.以上说法都不对

正确答案:A

答案解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A正确。

7). 关系模型允许定义3类数据约束,下列不属于数据约束的是( )。

A.实体完整性约束

B.参照完整性约束

C.属性完整性约束

D.用户自定义完整性约束

正确答案:C

答案解析:关系模型允许定义3类数据约束,即实体完整性约束、参照完整性约束和用户自定义完整性约束。其中前两种完整性约束由关系数据库系统支持,用户自定义完整性约束则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。

8). 若有定义″int a[2][3];″,下列选项中对a数组元素正确引用的是( )。

A.a[2][!1]

B.a[2][3]

C.a[0][3]

D.a[1>2][!1]

正确答案:D

答案解析:数组的下标从O开始,数组a[2][3]包括元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],只有选项D正确,1>2为假,所以是O,!为假也是0,即引用元素a[0][0],其他选项的引用均是下标越界。

9). C源程序中不能表示的数制是( )。

A.二进制

B.八进制

C.十进制

D.十六进制

正确答案:A

答案解析:C语言源程序不能表示二进制,在C语言中,所有的数值型常量都带有符号,所以整型数量只区别整型和长整型两种形式,整型常量和长整型常量均可用十进制、八进制、十六进制3种形式表示,故选项A不正确。

10). SQL语言又称为

A.结构化定义语言

B.结构化控制语言

C.结构化查询语言

D.结构化操纵语言

正确答案:C

11). 下列叙述中错误的是( )。

A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

正确答案:B

答案解析:本题考查的是C语言中输入、输出函数的使用,gets和getchar函数用于从标准输入设备键盘读入字符串和字符;fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。

12). 不能重载的运算符是( )

A.new

B.sizeof

C..*

D.++

正确答案:C

单选题

1). 如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是( )。 A.e3、e1、e4、e2 B.e2、e4、e3、el1 C.e3、e4、e1、e2 D.任意顺序 正确答案:B

答案解析:根据栈先进后出的特点可知el肯定是最后出栈的,因此正确答案为选项B。 2). 对于重载的运算符>>,它是一个( ) A.用于输入的友元函数

B.用于输入的成员函数

C.用于输出的友元函数

D.用于输出的成员函数

正确答案:A

3). 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( )。

A.与虚基类下面的派生类个数有关

B.多次

C.两次

D.一次

正确答案:D

答案解析:带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化一次。

4). 最简单的交换排序方法是( )

A.快速排序

B.选择排序

C.堆排序

D.冒泡排序

正确答案:D

5). NULL是指

A.0

B.空格

C.未知的值或无任何值

D.空字符串

正确答案:C

答案解析:此题属于记忆性的题目,NULL是指未知的值或无任何值。

6). 用链表表示线性表的优点是( )

A.便于随机存取

B.花费的存储空间较顺序存储少

C.便于插入和删除操作

D.数据元素的物理顺序与逻辑顺序相同

正确答案:C

7). 计算机能直接执行的程序是( )。

A.源程序

B.目标程序

C.汇编程序

D.可执行程序

正确答案:D

答案解析:由高级语言编写的程序称为″源程序″;由二进制代码表示的程序称为″目标程序″;由汇编语言编写的程序称为″汇编程序″。对于计算机本身来说,它只能接收和处理由O到1的代码构成的二进制指令和数据。所以计算机能识别的程序是″目标程序″。而计算可以直接执行的程序是可执行程序,即后缀为.exe的程序。

8). 下列叙述中正确的是( )。

A.C程序中的注释只能出现在程序的开始位置和语句的后面

B.C程序书写格式严格,要求一行内只能写一个语句

C.C程序书写格式自由,一个语句可以写在多行上

D.用C语言编写的程序只能放在一个程序文件中

正确答案:C

答案解析:在程序中注释部分对程序的运行结果不产生任何影响,增加了程序的易读性,它可以出现在任意位置,并且书写自由,一行内可以写多个语句,语句可以写在多行上;由于C语言编写的程序有很多的移植性,可以被多个程序文件引用。

9). C++语言本身没有定义IO操作,但I/O操作包含在C++实现中。C++标准库iostream提供了基本的I/O类。I/O操作分别由两个类istream和( )提供。

A.fstream

B.iostream

C.ostream

D.cin

正确答案:C

答案解析:本题考查的是C++标准库iostream提供的基本I/O类。istream提供了向流中插入数据的有关操作;ostream提供了从流中提取数据的有关操作。

10). 在E-R图中,用来表示实体联系的图形是( )

A.椭圆形

B.矩形

C.菱形

D.三角形

正确答案:C

答案解析:在E-R图中实体集用矩形,属性用椭圆,联系用菱形。

11). 完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是

A.黑箱测试法

B.白箱测试法

C.错误推测法

D.安装测试法

正确答案:A

答案解析:目的,让考生熟练掌握常用的测试方法及其概念。要点,黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据功能导出测试用例。分析,白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,白箱测试也称为逻辑覆盖测试,故选项B)不正确;错误推测法只是黑箱测试所使用的一种具体的方法,故选项C)不正确;安装测试是测试层次中的一种,它属于高级测试,故选项D)不正确。考点,常用的黑箱测试方法及其定义,白箱测试用例的准则。

12). 以下C++语言中用于单行注释的是

A.//

B./*

C.*/

D.|

正确答案:A

答案解析:目的,考查C++语言中的注释问题。要点,C++语言中的注释与C语言不同,C语言的注释符号只有/* */,而C++在此基础上又加上了//,此注释用于单行注释。考点,注释不影响程序的运行。

1). 下面关于C++流的叙述中,正确的是( )。 A.cin是一个输入流对象

B.可以用ifstream定义一个输出流对象 C.执行语句序列char* y=″PQMN″;cout<

D.执行语句序列char x[80];cin.getline(x,80);时,若输入Happy new year,则x中的字符串是″Happy″

正确答案:A

答案解析:本题考查C++流的概念和I/()的格式化。cin是istream类的对象,即输入流对象。ifstream是输入文件流,类不能定义个输出流对象。getline函数的功能是允许从输入流中读取多个字符,并且允许指定输入终止,在读取完成后,从读取的内容中删除该终止字符,所以D选项中的语句序列后x中字符串应该是Happy new year。

2). 信息隐蔽的概念与下述哪一种概念直接相关( )。

A.软件结构定义

B.模块性

C.模块类型划分

D.模拟耦合度

正确答案:B

答案解析:信息隐蔽的概念与模块性这一概念直接相关。

3). 若变量已正确定义并赋值,以下符合C++语言语法的表达式是( )。

A.a:=b+1

B.a= b= c+2

C.int 18.5 %3

D.a= a+7=c+b

正确答案:B

答案解析:本题考查C++语言的正确赋值方法。a= b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式b= c+2和a=b。选项A中包含一个不合法的运算符″:=″;选项C应改为(int) 18.5%3;选项D可理解为两个表达式a+7=c+b和a= a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量。

4). 两个或两个以上模块之间联系的紧密程度称为( )。

A.耦合性

B.内聚性

C.复杂性

D.数据传输特性

正确答案:A

答案解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

5). 开发大型软件时,产生困难的根本原因是( )

A.大系统的复杂性

B.人员知识不足

C.客观世界千变万化

D.时间紧、任务重

正确答案:A

6). 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。

A.函数调用可以作为的语句存在

B.函数调用可以无返回值

C.函数调用可以出现在表达式中

D.函数调用可以作为、一个函数的形参

正确答案:D

答案解析:本题考查函数的调用方式。函数的形参和实参具有以下特点:①形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放分配的内存单元,因此,形参只有在函数内部有效,函数调用结束返回主调函数后则不能再使用该形参变量;②实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参,因此应通过预先用赋值、输入等办法使实参获得确定值;③实参和形参在数量上、类型上、顺序上应严格一致,否则会发生″类型不匹配″的错误;④函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参

的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

7). 对于语句″cout< < <1<< < <2;″的输出结果是( )。

A.*********1*2

B.********12

C.*******1*2

D.12********

正确答案:A

答案解析:C++语言中,setfill的意思是在空格的地方填上setfill函数中的参数字符,setw的意思是设置整个输出字符串的字符个数,本题中用*来代替空格。

8). 下列关于运算符重载不正确的是( )

A.运算符重载不能改变运算符的操作数个数

B.运算符重载不能改变运算符的优先级

C.运算符重载不能改变运算符的结合性

D.运算符重载能改变对预定义类型数据的操作方式

正确答案:D

9). 通常拷贝构造函数的参数是

A.某个对象名

B.某个对象的成员名

C.某个对象的引用名

D.某个对象的指针名

正确答案:C

答案解析:拷贝初始化构造函数的作用是用一个已知的对象来初始化一个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。

10). 下面关于模板的描述,错误的是

A.函数模板和类模板的参数可以是任意的数据类型

B.类模板不能直接使用,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使用

C.函数模板不能直接使用,需要实例化为模板函数后才能使用

D.类模板的成员函数都是模板函数

正确答案:A

答案解析:类模板不能被重载,而函数模板可以,它们不能被未知的数据类型替换。

1). 表达式10>5 && 6%3的值是

A.-1

B.非零值

C.0

D.1

正确答案:C

答案解析:目的,考查/和%运算符的意义。要点,逻辑与运算符为真的前提是两边的表达式都为真,本题中6%3的值为0,显然该表达式的值应该为0。考点,/是整除运算符,当两个操作数都为整数时,结果为整型,将小数部分舍去。

2). 若有说明int a[3][4];,则a数组元素的非法引用是( )

A.a[0][2*1]

B.a[1][3]

C.a[4-2][0]

D.a[0][4]

正确答案:D

3). 下列是重载为非成员函数的运算符函数原型,其叶错误的是( )。

A.Fraction operator+( Fraction, Fraction);

B.Fraction operator-( Fraction);

C.Fraction&operator=( Fraction&, Fraction);

D.Fraction&operator+=(Fraction& ,Fraction);

正确答案:C

答案解析:由于取负运算符″一″是一元运算符,当作为成员函数重载时参数表中没有参数,那个唯一的操作数以this指针的形式隐藏在参数表中。

4). 下列关于虚基类的描述中,错误的是( )。

A.使用虚基类可以消除由多继承产生的二义性

B.构造派生类对象时,虚基类的构造函数只被调用一次

C.声明″class B: virtual public A″说明类B为虚基类

D.建立派生类对象时,首先凋用虚基类的构造函数

正确答案:C

答案解析:本题针对虚基类的定义及特点考查。虚基类的声明为″class:virt ual″,即选项C中的类A为虚基类。

5). 静态成员函数没有( )。

A.返回值

B.this指针

C.指针参数

D.返回类型

正确答案:B

答案解析:this指针是系统隐含的用于指向当前对象的指针。由于静态函数是同类中所有对象都共享的函数,在内存中只存在一份,不属于某个对象所有,所以静态函数没有this指针。

6). 在32位的计算机中,一个char型数据所占的内存长度的字节是( )

A.4

B.1

C.2

D.8

正确答案:B

7). 要想使23.765421的输出为23.7887应用的语句是( )

A.cout<<23.765421;

B.cout<

C.cout<<23.765421 -0.001;

D.cout<

正确答案:C

8). 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )

A.派生类的对象可以赋给基类的对象

B.派生类的对象可以初始化基类的引用

C.派生类的对象可以直接访问基类中的成员

D.派生类的对象的地址可以赋给指向基类的指针

正确答案:C

9). C++语言中用于定义类的关键字是( ) A.class B.struct C.default D.sizeof 正确答案:A

1). SQL语言又称为( )。

A.结构化定义语言

B.结构化控制语言

C.结构化查询语言

D.结构化操纵语言

正确答案:C

答案解析:soL语言的全称为Structured QueryLanguage,它是一种介于关系代数与关系演算之间的结构化查询语言,是一种面向数据库的通用数据处理语言规范。它包含数据查询语言、数据操纵语言、数据定义语言和数据控制语言四个部分。

2). NULL是指

A.0

B.空格

C.未知的值或无任何值

D.空字符串

正确答案:C

答案解析:此题属于记忆性的题目,NULL是指未知的值或无任何值。

3). C++语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言

A.ASP

B.C

C.VB

D.Java

正确答案:B

答案解析:C++语言是对C语言进行了扩充,继承了它的语法,并增加了面向对象的设计方法。

4). 继承机制的作用是

A.信息隐藏

B.数据封装

C.定义新类

D.数据抽象

正确答案:C

5). 以下定义数组中错误的是( )

A.int a[10];

B.int a[2][20];

C.int a[20][];

D.int a[];

正确答案:C

6). 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件的是( )。

A.编译程序

B.操作系统

C.教务管理系统

D.汇编程序

正确答案:C

答案解析:编译程序和汇编程序属于开发工具;操作系统属于系统软件;教务管理系统属于应用软件。

7). 在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用( )。

A.内联函数

B.重载函数

C.递归调用

D.嵌套调用

正确答案:A

答案解析:本题考查的是内联函数的相关知识点。C++引入内联函数是用它来代替C语言中的预处理宏函数,内联函数在调用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。

8). 下述关于数据库系统的叙述中,正确的是( )。

A.数据库系统减少了数据冗余

B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型一致

D.数据库系统比文件系统能管理更多的数据

正确答案:A

答案解析:数据库系统会减少数据冗余,但不可能避免一切冗余。

9). 线性表的顺序存储结构和线性表的链式存储结构分别是

A.顺序存取的存储结构、顺序存取的存储结构

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结构

D.任意存取的存储结构、任意存取的存储结构

正确答案:B

答案解析:目的,考查有关线性表存储结构的基本知识。要点,顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。考点,顺序存储结构和链式存储结构的定义和性质,两种存储结构的操作方法。

10). 若有定义语句″int i=2,j=3;″,则表达式i/j的结果是( )。

A.0

B.0.7

C.0.66667

D.0.66666667

正确答案:A

答案解析:整数相除为整数,所以结果为0。

因篇幅问题不能全部显示,请点此查看更多更全内容