2012 年 9 月全国计算机二级 C++考试真题及答案
一、选择题(每小题 2 分,共 70 分)
(1)下列链表种,其逻辑结构属于非线性结构的是 D
A)循环链表
B)双向链表 C)带链的栈
D)二叉链表
(2)设循环队列的存储空间为 Q(1:35),初始状态为 front=rear=35,现经过一系列入
队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 C
A)16
B)20 C)0 或 35
D)15
(3)下列关于栈的叙述中,正确的是 B
A)栈顶元素一定是最先入栈的元素
B)栈操作遵循先进后出的原则
C)栈底元素一定是最后入栈的元素
D)以上三种说法都不对
(4)在关系数据库中,用来表示实体间联系的是 A
A)二维表
B)树状结构 C)属性
D)网状结构
(5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名
职员,则实体部门和职员间的联系是 B
A)m:1 联系
B)1:m 联系 C)1:1 联系
D)m:n 联系
(6) 有两个关系 R 和 S 如下:
R
S
A
B
C
A
B
C
a
1
2
c
3
1
b
2
1
c
3
1
则由关系 R 得到关系 S 的操作是 B
A)自然连接
B)选择 C)并
D)投影
(7)数据字典(DD)所定义的对象都包含于 B
A)程序流程图
B)数据流图(DFD 图) C)方框图
D)软件结构图
(8)软件需求规格说明书的作用不包括 A
A)软件可行性研究的依据 B)用户与开发人员对软件要做什么的共同理解 s
C)软件验收的依据
D)软件设计的依据
(9)下面属于黑盒测试方法的是 D
1
A)逻辑覆盖
B)语句覆盖 C)路径覆盖
D)边界值分析
(10)下面不属于软件设计阶段任务的是 D
A)数据库设计 B)算法设计 C)软件总体设计 D)制定软件确认测试计划
(11)下列关于函数重载的叙述中,错误的是 C
A)重载函数的参数个数可以不同
B)重载函数的参数类型可以不同
C)重载函数的返回值类型必须不同
D)重载函数的参数个数或参数类型必须有所不同
(12)下列关于类成员对象构造函数调用顺序的叙述中,正确的是 B
A)与它们在初始化列表中顺序相同
B)与它们在类中声明的顺序相同
C)与析构函数的调用顺序相同
D)顺序不确定
(13)下列关于派生类的叙述中,错误的是 D
A)派生类至少要有一个基类
B)派生类中包括了从基类继承的成员
C)一个派生类可以作为另一个派生类的基类
D)基类成员被派生类继承以后访问权限保持不变
(14)下列关于运算符重载的叙述中,正确的是 B
A)通过运算符重载机制可以为 C++语言扩充新的运算符
B)运算符重载的作用是使已有的运算符作用于类的对象
C)重载运算符的操作数类型可以全部为基本类型
D)所有运算符都可以重载
(15)下列关于模板的叙述中,错误的是 C
A)调用模板函数时,有时可以省略模板实参
B)函数模板的每个实例就是一个函数定义
C)类模板的每个实例就是一个类定义
D)类模板的实例是一个类对象
(16)下列关于输入输出流的叙述中,正确的是 A
A)一个文件流可以与一个数据文件相联系
2
B)cin 是专门从键盘输入数据的输入流类
C)流运算符<<用来从输入流中读取数据
D)宽度设置的效果永久有效
(17)下列选项中可以做 C++标识符的是 A
A)_256
B)fat/pig
C)delete
D)5char
(18)关键字 unsigned 不能修饰的类型是 A
A)char
B)int
C)float
D)long int
(19)有如下程序:
#include
using namespace std;
int main(){
char a;
cin>>a;
if(a='*')
else
cout<<"***"<>n;int a[n]; D)const
int size=10;int a[size];
(21)假设函数 fun 已经定义,其原型为”void fun(int a,int b=7,char *p=”**”);”,下
列函数调用中错误的是 C
A)fun(5)
B)fun(5,8)
C)fun(6,”##”)
D)fun(0,0.”==”)
(22)已经函数 print()没有返回值,如果在类中将之声明为常成员函数,正确的是 A
A)void print()const;
const print();
B)const void print();
D)void print(const);
(23)已知基类 Employees 只有一个构造函数,其定义如下:
Employee::Employee(int n):id(n){}
3
C)void
Manager 是 Employees 的派生类,则下列对 Manager 的构造函数的定义中,正确的是
C
A)Manager::Manager(int n):id(n){}
B)Manager::Manager(int n){id=n;}
C)Manager::Manager(int n):Employee(n){}
D)Manager::Manager(int n){Employee(n);}
(24)已知将运算符“+”和“*”作为类 Complete 的成员函数重载,设 c1 和 c2 是类
Complex 的对象,则表达式 c1+c2*c1 等价于 B
A)c1.operator*(c2.operator+(c1))
B)c1.operator+
(c2.operator*(c1))
C)c1.operator*(c1.operator+(c2))
D)c2.operator+
(c1.operator*(c1))
(25)下列类模板的定义中语法格式错误的是 D
A)templateclass Buffer{/*…*/};
B)templateclass Buffer{/*…*/};
C)templateclass Buffer{/*…*/};
D)templateclass Buffer{/*…*/};
(26)在 C++中既可以用于文件输入又可以用于文件输出的流类是 A
A)fstream
B)ifstream
C)ofstream
D)iostream
(27)有如下类定义: B
class MyClass{
int b;char a;double c;
public:
MyClass():c(0.0),b(0),a(','){}
};
创建这个类的对象时,数据成员的初始化顺序是
A)a,b,c
B)c,b,a
C)b,a,c
(28)有如下类定义 A
class MyClass{
int x;
4
D)c,a,b
public:
MyClass():x(0),y(0){}
int GetX(){return x;}
void SetX(int xx){x==xx;}
int y;
};
已知 obj 是类 MyClass 的对象,下列语句中违反类成员访问控制权限的是
A)obj.x;
B)obj.y;
C)obj.GetX();
D)obj.SetX(0);
(29)有如下类定义
class Test{
char a; const char b;
//第 1 行
public:Test(char c){a=c;b=c;}
void f(char a)const{this->a=a;}
//第 2 行
//第 3 行
void g(char b){this->b=b;}
//第 4 行
char h()const{return a;}
};
编译时没有错误的行是 C
A)第 1 行
B)第 2 行
C)第 3 行
(30)有如下程序:
#include
using namespace std;
class A{
public:
A(){cout<,'A';}
~A(){cout<<'C';}
};
class B:public A{
public:
B(){cout<<'G';}
~B(){cout<<'T';}
};
5
D)第 4 行
温馨提示:当前文档最多只能预览 6 页,此文档共12 页,请下载原文档以浏览全部内容。如果当前文档预览出现乱码或未能正常浏览,请先下载原文档进行浏览。
1 / 6 12