2012年9月全国计算机等级考试二级C++笔试试卷与答案

更新时间:2024-01-24 11:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2012年9月全国计算机等级考试二级笔试试卷

C++语言程序设计

(考试时间90分钟,满分100分)

一、选择题(每小题2分,共70分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列链表种,其逻辑结构属于非线性结构的是

A)循环链表 B)双向链表 C)带链的栈 D)二叉链表

(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为

A)16 B)20 C)0或35 D)15 (3)下列关于栈的叙述中,正确的是

A)栈顶元素一定是最先入栈的元素 B)栈操作遵循先进后出的原则 C)栈底元素一定是最后入栈的元素 D)以上三种说法都不对 (4)在关系数据库中,用来表示实体间联系的是

A)二维表 B)树状结构 C)属性 D)网状结构

(5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是

A)m:1联系 B)1:m联系 C)1:1联系 D)m:n联系 (6) 有两个关系R和S 如下: R A a b c B 1 2 3 C 2 1 1 A c S B 3 C 1 则由关系R得到关系S的操作是 A)自然连接 B)选择 C)并 D)投影 (7)数据字典(DD)所定义的对象都包含于

A)程序流程图 B)数据流图(DFD图) C)方框图 D)软件结构图

(8)软件需求规格说明书的作用不包括

A)软件可行性研究的依据 B)用户与开发人员对软件要做什么的共同理解s

C)软件验收的依据 D)软件设计的依据 (9)下面属于黑盒测试方法的是

A)逻辑覆盖 B)语句覆盖 C)路径覆盖 D)边界值分析 (10)下面不属于软件设计阶段任务的是

A)数据库设计 B)算法设计

C)软件总体设计 D)制定软件确认测试计划

(11)下列关于函数重载的叙述中,错误的是

A)重载函数的参数个数可以不同 B)重载函数的参数类型可以不同 C)重载函数的返回值类型必须不同

D)重载函数的参数个数或参数类型必须有所不同

(12)下列关于类成员对象构造函数调用顺序的叙述中,正确的是

A)与它们在初始化列表中顺序相同 B)与它们在类中声明的顺序相同 C)与析构函数的调用顺序相同 D)顺序不确定

(13)下列关于派生类的叙述中,错误的是

A)派生类至少要有一个基类

B)派生类中包括了从基类继承的成员

C)一个派生类可以作为另一个派生类的基类

D)基类成员被派生类继承以后访问权限保持不变 (14)下列关于运算符重载的叙述中,正确的是

A)通过运算符重载机制可以为C++语言扩充新的运算符 B)运算符重载的作用是使已有的运算符作用于类的对象 C)重载运算符的操作数类型可以全部为基本类型 D)所有运算符都可以重载

(15)下列关于模板的叙述中,错误的是

A)调用模板函数时,有时可以省略模板实参 B)函数模板的每个实例就是一个函数定义 C)类模板的每个实例就是一个类定义 D)类模板的实例是一个类对象

(16)下列关于输入输出流的叙述中,正确的是

A)一个文件流可以与一个数据文件相联系 B)cin是专门从键盘输入数据的输入流类 C)流运算符<<用来从输入流中读取数据 D)宽度设置的效果永久有效

(17)下列选项中可以做C++标识符的是

A)_256 B)fat/pig C)delete D)5char (18)关键字unsigned不能修饰的类型是

A)char B)int C)float D)long int (19)有如下程序:

#include using namespace std; int main(){ char a; cin>>a;

if(a='*') cout<<\ else cout<<\ return 0; }

A)*** B)### C)***### D)无输出 (20)下列对一维数组a的定义中,语法正确的是

A)int a(10) B)int n=7,a[n]; C)int n;cin>>n;int a[n]; D)const int size=10;int a[size];

(21)假设函数fun已经定义,其原型为”void fun(int a,int b=7,char *p=”**”);”,下列函数调用中错误的是

A)fun(5) B)fun(5,8) C)fun(6,”##”) D)fun(0,0.”==”) (22)已经函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是

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的构造函数的定义中,正确的是

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等价于

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)下列类模板的定义中语法格式错误的是

A)templateclass Buffer{/*…*/}; B)templateclass Buffer{/*…*/};

C)templateclass Buffer{/*…*/}; D)templateclass Buffer{/*…*/};

(26)在C++中既可以用于文件输入又可以用于文件输出的流类是

A)fstream B)ifstream C)ofstream D)iostream (27)有如下类定义:

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)有如下类定义

class MyClass{ int x; 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;

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行 };

编译时没有错误的行是

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; }

运行这个程序的输出结果是

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,则划线处缺失的部分是

A)fun() B)Base.fun() C)Base::fun() D)Base->fun() (32)有如下程序:

#include using namespace std; class B{ public;

virtual void f() {cout<<\ void g(){cout<<\ }

class D;public B { public;

void f(){cout<<\ void g(){coun<<\ }

void h(B*p){p->f();p->g();} int main(){ D obj; h(&obj); return 0; }

运行这个程序的输出结果是:

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(\,y(\; cout<<(x+=y)<

运行这个程序的输出结果是

A) abc B) cde C) abcde D) abccde

(34)有如下程序:

#include #include using namespace std; int main(){ cout<

A) ##OK123 B) ##OK#123 C) OK##123 D) OK##123#

(35)有如下语句序列:

ifstream infile(\ if(infile.good())cout<<\ else{

cout<<\

ofstream outfile(\

if(outfile.fail())cout<<\ }

若执行这个语句序列显示的是BD,则说明文件DATA.DAT A)以读方式打开成功

B)以读方式打开失败,但以写方式打开成功 C)以读方式打开失败,以写方式打开也失败 D)以读方式打开成功,以写方式打开也成功

二、填空题(每空2分,共30分)

请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

注意:以命令关键字填空的必须拼写完整

(1)一棵二叉树共有47个结点,其中有23个度为2的结点,假设根结点在底1层,则该二叉树的深度为【1】 。

(2)设栈的存储空间为S(1:40),初始状态为bottom=0,top=0,现经过一系列入栈与出栈运算后,top=20,则当前栈中有【2】个元素。

(3)数据独立性分为逻辑独立性和物理独立性。当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序不必修改,称为【3】 。

(4)关系数据库中能实现的专门关系运算包括【4】、连接和投影。

(5)软件按功能通常可以分为应用软件、系统软件和支撑软件(或工具软件),

Unix操作系统属于【5】软件。

(6)若有定义语句“int x=10;”,则表达式“x<=10?20:30”的值为【6】。 (7)下列语句的作用是计算正整数n的各位数字之和,例如:n=123,sum=1+2+3,请将下列语句补充完整。

do{

sum+=; n=n/10; }while(n1=0) (8)有如下程序:

#include using namespace std; void fun(int&x,int y){ y=y+x; x=y/4; x++; }

int main(){

int x=4,y=5; fun(x,y); cout<

运行这个程序的输出结果是【8】。 (9)有如下程序:

#include using namespace std; class A{ pubic;

A(){cout<<1;}

A(const A&){cout<<2;} -A(){cout<<3;} };

int main(){ A obj1;

A obj2(obj1); return 0; }

运行这个程序的输出结果是【9】。

(10)若下列程序的输出结果是20,请将横线处缺失部分补充完整。

#include using namespace std; class MyClass{ pubic;

MyClass(int x=)10:value(x){}

void SetValue(int x){value=x;cout<

int value; };

int main(){ MyClass*ptr=new MyClass; 【10】 //通过对象指针ptr调用SetValue函数 delete ptr; return 0; }

(11)有下列程序的输出结果是2334,请将横线处缺失部分补充完整。

#include using namespace std; class Base{ int m; pubic;

Base(int k):m(k){}

int getM()const{return m;} }

class Derived:public Base{ int n; public;

Derived(int k):【11】,n(k){} int getN()const{return n;} }

int main(){ Derived d1(3),d2(4); cout<

(12)在C++中,编译时的多态性是通过模板或函数【12】实现的。

(13)有些运算符既可以作为成员函数重载,也可以作为非成员函数重载。若在一个重载的运算符函数的定义中成功地使用了this指针,说明它是作为【13】重载的。

(14)有如下程序:

#include using namespace std; template

T Add(Tv1,Tv2){return v1+v2;} int main(){ cout<

运行这个程序的输出结果是【14】。

(15)有如下程序:

#include using namespace std; class Point{ double x,y; public;

Point(double xx=0.0,double yy=0.0):x(xx),y(yy){} double getX()const{return x;} double getY()const{return y;}

void show()const{cout<<'('<

class Line{ Point p1,p2; public;

Line(Point pp1,Point pp2):p1(pp1),p2(pp2){} Point LeftMost()const{

if(p1.getX()<=P2.getX())return p1; return p2; } }

int main(){ Line line(Point(3.1,5.2),Point(8.2,4.4)); line.LeftMost().show(); return 0; }

运行这个程序的输出结果是【15】。

2012年9月全国计算机等级考试二级笔试答案

一、选择题答案 1-5)DCBAB 6-10)BBADD

11-15)CBDBC 16-20) AAABD 21-25) CACBD 26-30 )ABACB 31-35 )CDDAC 二、填空题答案 1、6 2、21

3、物理独立性 4、选择 5、系统 6、 20

7、 n 8、 8

9、1233

10、 ptr->setvalue(20); 11、base(k-1) 12、重载

13、成员函数 14、5,5.8 15、(3.1,5.2)

本文来源:https://www.bwwdw.com/article/r2uo.html

Top