logo资料库

2012年9月全国计算机二级C++考试真题及答案.doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
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 B 1 2 3 C 2 1 1 A a b c S B 3 A c C 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='*') 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; B)const void print(); C)void const print(); D)void print(const); (23)已知基类 Employees 只有一个构造函数,其定义如下: Employee::Employee(int n):id(n){} Manager 是 Employees 的派生类,则下列对 Manager 的构造函数的定义中,正确的是 C 3
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 D)c,a,b (28)有如下类定义 A class MyClass{ int x; public: MyClass():x(0),y(0){} int GetX(){return x;} void SetX(int xx){x==xx;} 4
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; public:Test(char c){a=c;b=c;} //第 1 行 void f(char a)const{this->a=a;} //第 2 行 void g(char b){this->b=b;} //第 3 行 char h()const{return a;} //第 4 行 }; 编译时没有错误的行是 C A)第 1 行 B)第 2 行 C)第 3 行 D)第 4 行 (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';} }; int main(){ B obj; return 0; 5
} 运行这个程序的输出结果是 B A)GATC B)AGTC C)GACT D)AGCT (31)有如下程序: #include using namespace std; class Base{ public; void fun(){cout<<'B';} }; class Derived:public Base{ public; void fun(){ cout<<'D';} }; int main(){ Derived d; d.fun(); return 0; } 若程序的输出结果是 BD,则划线处缺失的部分是 C A)fun() B)Base.fun() C)Base::fun() D)Base->fun() (32)有如下程序: #include using namespace std; class B{ public; virtual void f() {cout<<"B";} void g(){cout<<"B";} } class D;public B { 6
public; void f(){cout<<"D";} void g(){coun<<"D";} } void h(B*p){p->f();p->g();} int main(){ D obj; h(&obj); return 0; } 运行这个程序的输出结果是: D A)DD B)BB C)BD D)DB (33)有如下程序: #include #include using namespace std; class MyString{ public; char str[80]; MyString(const char*s) {strcpy(str,s);} MyString&operator+=(MyString a){ strcat(str,a.str); return*this; } }; ostream&operator<<(ostream&s,const MyString&z){return s << z.str} int main(){ MyString x("abc"),y("cde"); cout<<(x+=y)<
} 运行这个程序的输出结果是 D A) abc B) cde C) abcde D) abccde (34)有如下程序: A #include #include using namespace std; int main(){ cout<
分享到:
收藏