2015年计算机二级考试《C++》高分突破试卷
参考解析:x数组共有10个元素,在花括号内只提供3个初值,这表示只给前面的3个成员赋值,后7个元素的值为0,所以,一共有20个字节。
2有两个关系R,S如下:
由关系R通过运算得到关系s,则所使用的运算为( )。
A.选择B.投影C.插入D.连接
参考答案:B
参考解析:投影运算是指对于关系内的域指定可引入新的运算。本题中s是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择B。
3对于循环队列,下列叙述中正确的是( )。
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
参考解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以队头指针有时可能大于队尾指针有时也可能小于队尾指针。
4下列有关函数重载的叙述中,错误的是( )。
A.函数重载就是用相同的函数名定义多个函数
B.重载函数的参数列表必须不同
C.重载函数的返回值类型必须不同
D.重载函数的参数可以带有默认值
参考答案:C
参考解析:所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不 同,但不能只有函数的返回值类型不同而参数的个数和类型相同的重载。所以本题答案为c。
5有三个关系R S和T如下.
则由关系R和S得到关系T的操作是( )。
A.自然连接B.并C.交D.差
参考解析:关系T中的元组是关系R中有而关系s中没有的元组的集合,即从关系R中除去与关系s中相同元组后得到的关系T。所以做的是差的运算。
6下面关于类和对象的描述中,错误的是( )。
A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B.类和对象之间的关系是抽象和具体的关系
C.对象是类的实例,一个对象必须属于一个已知的类
D.类是具有共同行为的若干对象的统一描述体
参考答案:A
参考解析:在c++语言中,类和结构体有本质区别,类中包含数据及操作函数,而结构体只包含有数据。
7有如下程序:
#inClude
using namespaCe std;
Class test{
private:
int a;
publiC:
test( ){Cout<<”ConstruCtor”<
test(int A.{Cout<
test(Const test&_test){ a=test.a:
Cout<<”Copy ConstruCtor”<
test( ){Cout<<”destruCtor”<
};
int main( ){ test A(3); return 0;
}
执行这个程序的输出结果是( )。
A.3B.ConstruCtor
destruCtorC.Copy ConstruCtor
destruCtorD.3
destruCtor
参考解析:本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象A(3),对象带着参数,所以执行带参数的构造函数.输出3,然后执行析构溺数,输出destructor。所以本题答案为D。
8有如下函数模板:
template
T east(U u)i return u;}
其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是( )。
A.cast(i);B.cast<>(i);C.east(i);D.east(i);
参考解析:本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省实参,函数模板的实例就是一个函数的定义。所以本题答案为D。
9下面程序的运行结果是( )。
#include
void fun(int *a,int *B. {
int x=*a:
*a=*b;*b=X;
cout<<*a<<*b<<””:
void main() {
int X=1,Y=2; fun(&x,&y);
cout<
}
A.12 12B.12 21C.21 12D.21 21
参考解析:本题考查的是指针和引用,函数fun完成把x和Y互换的操作。
10在C++语言中,打开一个文件就是将这个文件与一个( )建立关联。
A.流B.类C.结构D.对象
参考答案:A
参考解析:c++的V0系统是通过一一种称为流的机制来实现文件和控制台的I/0操作的。简单地说,在C++中,输入/输出操作是通过流来完成的。而文件流以磁盘文件及其他可按文件方式进行管理的外部设备为输入/输出对象。每个文件流都应当与一个打开的文件相联系;关闭卟文件就是取消这种联系。
11下列语句中,错误的是( )。
A.const int buffer:256;
B.const int temp;
C.const double*point;
D.const double*rt=new double(5.5);
参考答案:B
参考解析:eonst是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化:,B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*double point形式,则为常指针,必须在定义时进行初始化,A、c、D都正确。
12下列程序的输出结果为( )。
#include
void main()
{
char*a[]={”hell0”,”the”,”world”};
char** pa = a:
pa++;
cout<<*pa<
}
A.helloB.theC.worldD.hellotheworld
参考答案:B
参考解析:本题主要考查的是指针数组和指向指针的指针之间的关系,其中a是指针数组,pa是指向指针数组行的指针,所以pa自加l相当于指向下一行。
13关于运算符重载,下列表述中正确的是( )。
A.C++已有的任何运算符都可以重载
B.运算符函数的返回类型不能声明为基本数据类型
C.在类型转换符函数的定义中不需要声明返回类型
D.可以通过运算符重载来创建C++中原来没有的运算符
参考答案:C
参考解析:重载运算符的规则如下:①c++不允许用户自已定义新的运算符,只能对已有的c++运算符进行重载;②c++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用.至少应有一个是类对象,即不允许参数全部是c++的标准类型。故本题答案为c。
14可以用P.a的形式访问派生类对象P的基类成员a,其中a是( )。
A.私有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.公有继承的公有成员
参考解析:只有公有继承的公有成员才能被派生类的对象直接访问,其他的情况都会因为访问权限问题产生错误。
15在下列原型所示的C++函数中,按“传值”方式传递参数的是( )。
A.void fl(int X);
B.void t2(int*X);
C.void f3(Const int*X);
D.void f4(int&x);
参考答案:A
参考解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。其中B、C选项都是传递变量指针,D选项为引用形参,所以本题答案为A。
16以下关键字不能用来声明类的访问权限的是( )。
A.publicB.staticC.protectedD.private
参考答案:B
参考解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。
17下面程序的运行结果为( )。
#include class A
{
int hum;
public:
A(int i){nuln=i;}
A(A&A.{num=a.num十+;} void print(){eout(
void main()
A a(1),b(A.; a.print();
A print();
A.11B.12C.21D.22
参考答案:C
参考解析:本题考查考生对拷贝构造函数的掌握。因为++运算是右结合的,所以在使用a对b赋值时,b的nnm变为1,而a的nnm变为2(先赋值再自加)。
18下面是重载为非成员函数的运算符的函数原型,其中错误的是( )。
A.Fraction operator+(Fraction,Fraction);
B.Fraction operator一(Fraction);
C.Fraction&operator=(Fraction&,Fraction);
D.Fraction&operator+=(Fraction&,Fraction);
参考答案:C
参考解析:本题考查四种运算符作为非成员函数的重载的使用方法,根据重载规则,本题答案为c,c项正确原型为:Fraction operator=(Fraction&)。
19下列语句中错误的是( )。
A.Const int a;
B.Const int a=10;
C.Const int * point=0;
D.Const int * point=new int(10);
参考答案:A
参考解析:const是一个c++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量照能被读,必须初始化。A选项没有初始化,B、C、D选项都正确。
20下列关于函数的描述中,错误的是( )。
A.函数可以没有返回值
B.函数可以没有参数
C.函数可以是一个类的成员
D.函数不能被定义为模板
参考解析:本题考查函数的基础知识,函数可以没有返回值,没有参数,也可以是一个类的成员,函数可以定义为模板,即模板函数。
22有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A.自然连接B.差C.交D.并
参考答案:B
参考解析:关系T中的元组是R关系中有而S关系中没有的元组的集合,所以进行的是差的运算。
23有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout<
return 0;
}
执行这个程序的输出结果是( )。
A.53B.35C.55D.33
参考答案:A
参考解析:本题考查常对象及常成员函数及构造函数,常埘象只能凋用常成员函数,所以本题中,对象v1为普通对象,执行v1.f()后,会执行默认构造函数,输出5,对象v2为常列象,执行v2.f()后,会执行常构造函数,输出3。