历届计算机二级C++真题及答案全 下载本文

历年计算机C++二级真题及答案

(12)判断字符型变量ch是否为大写英文字母,应使用表达式____ A ) ch>='A' & ch<='Z' B ) ch<='A' ||ch>='Z' C ) 'A'<=ch<='Z' D ) ch>='A' && ch<='Z' (13)已知下列语句中的x和y都是int型变量,其中错误的语句 A ) x=y++; B ) x=++y; C ) (x+y)++; D ) ++x=y; (14)执行语句序列 int n; cin >> n; switch(n) { case 1:

case 2: cout << '1'; case 3:

case 4: cout << '2'; break; default: cout << '3'; }

时,若键盘输入1,则屏幕显示______ A)1 B)2 C)3 D)12 (15)下列程序的输出结果是______ #include using namespace std; int main() {

char a[] = \ char *ptr = a; while (*ptr) {

if (*ptr >= 'a' && *ptr <= 'z') cout << char(*ptr + 'A' -'a'); else cout << *ptr; ptr++; } return 0; }

A ) HELLO, WORLD B ) Hello, World C ) hELLO, wORLD D ) hello, world

(16)已知:int m=10;在下列定义引用的语句中,正确的是______ A ) int &x=m; B )int y=&m; C )int &z; D ) int &t=&m; (17)下列函数原型声明中错误的是______ A ) void Fun(int x=0, int y=0); B ) void Fun(int x, int y); C ) void Fun(int x, int y=0); D ) void Fun(int x=0, int y);

(18)已知程序中已经定义了函数test,其原型是int test(int, int, int);,则下列重载形式中正确的是______ A ) char test(int,int,int); B ) double test(int,int,double); C ) int test(int,int,int=0); D ) float test(int,int,float=3.5F); 1

全国计算机等级考试二级笔试试卷(2004年9月)

公共基础知识及C++语言程序设计

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

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

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 下面叙述正确的是______

A)算法的执行效率与数据的存储结构无关

B)算法的空间复杂度是指算法程序中指令(或语句)的条数 C)算法的有穷性是指算法必须能在执行有限个步骤之后终止 D)以上三种描述都不对

(2)以下数据结构中不属于线性数据结构的是______ A)队列 B)线性表 C)二叉树 D)栈 (3)在一棵二叉树上第5层的结点数最多是______ A)8 B)16 C)32 D)15 (4)下面描述中,符合结构化程序设计风格的是______

A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B)模块只有一个入口,可以有多个出口 C)注重提高程序的执行效率 D)不使用goto语句 (5)下面概念中,不属于面向对象方法的是______

A)对象 B)继承 C)类 D)过程调用 (6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______

A)可行性分析 B)需求分析 C)详细设计 D)程序编码 (7)在软件开发中,下面任务不属于设计阶段的是______ A)数据结构设计 B)给出系统模块结构 C)定义模块算法 D)定义需求并建立系统模型 (8)数据库系统的核心是______

A)数据模型 C)软件工具 B)数据库管理系统 D)数据库 (9)下列叙述中正确的是______

A)数据库系统是一个独立的系统,不需要操作系统的支持 B)数据库设计是指设计数据库管理系统

C)数据库技术的根本目标是要解决数据共享的问题 D)数据库系统中,数据的物理结构必须与逻辑结构一致 (10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是______

A)内模式 B)外模式 C)概念模式 D)逻辑模式 (11)关于面向对象的程序设计方法,下列说法正确的是 A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理

B)“多态性”指的是对象的状态会根据运行时要求自动变化 C)基类的私有成员在派生类的对象中不可访问,也不占内存空间 D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用

历年计算机C++二级真题及答案

(19)有以下程序 #include int i = 0; void fun() {

{

static int i = 1; std::cout<

}

std::cout<

int main() {

fun(); fun(); return 0; }

程序执行后的输出结果是______

A)1,2,1,2, B)1,2,2,3, C)2,0,3,0, D)1,0,2,0,

(20)已知函数f的原型是:void f(int *a, long &b); 变量v1、v2的定义是:int v1;long v2;,正确的调用语句是______

A) f(v1, &v2);

C) f(&v1, v2); (21)有以下类定义 class MyClass { public:

MyClass(){cout<<1;} };

则执行语句MyClass a, b[2], *p[2];后,程序的输出结果是_____ A)11 B)111 C)1111 D)11111 (22)关于友元,下列说法错误的是______

A)如果类A是类B的友元,那么类B也是类A的友元 B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C)友元关系不能被继承 D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元

(23)关于动态存储分配,下列说法正确的是______

A)new和delete是C++语言中专门用于动态内存分配和释放的函数 B)动态分配的内存空间也可以被初始化 C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间

D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new

(24)有以下程序 #include using namespace std; class MyClass {

2

B) f(v1, v2); D) f(&v1, &v2);

}

程序执行时,MyClass类的拷贝构造函数被调用的次数是______ A)5 B)4 C)3 D)2

(25)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的______

A)公有成员和私有成员 B)私有成员和保护成员 C)公有成员和保护成员 D)私有成员、保护成员和公有成员

(26)在C++中用来实现运行时多态性的是______

A)重载函数 B)析构函 C)构造函数 D)虚函数 (27)一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是______

A)每个派生类的构造函数都要为虚基类构造函数提供实参 B)多继承时有可能出现对基类成员访问的二义性问题 C)使用虚基类可以解决二义性问题并实现运行时的多态性 D)建立最派生类对象时,虚基类的构造函数会首先被调用 (28)在一个类体的下列声明中,正确的纯虚函数声明是______ A) virtual void vf()=0; B) void vf(int)=0; C) virtual int vf(int); D) virtual void vf(int) { } (29)在下面的运算符重载函数的原型中,错误的是______ A) Volume operator - (double, double); B) double Volume::operator- (double); C) Volume Volume: :operator - (Volume); D) Volume operator - (Volume, Volume);

(30)下列是模板声明的开始部分,其中正确的是______ A) template

B) template C) template D) template }

int main() {

MyClass obj1(10), obj2(0); MyClass obj3(obj1); obj2=fun(obj3); return 0; public:

MyClass(int n){number = n;} //拷贝构造函数

MyClass(MyClass &other){ number=other.number;} ~MyClass(){} private:

int number; };

MyClass fun(MyClass p) {

MyClass temp(p); return temp;

历年计算机C++二级真题及答案

(31)执行语句序列

ofstream outfile(\TA.DAT\

if(...) cout << \

后,如果文件打开成功显示“OK”,否则就显示“F厶n。”。由此可知,上面if语句的... 处的表达式应是______

A )outfile.fail() 或 outfile B )outfile.good() 或 !outfile C )outfile.good() 或 outfile D )outfile.fail() 或 !outfile (32)C++流中重载的运算符>>是一个( )

A)用于输出操作的非成员函数 B)用于输入操作的非成员函数 C)用于输出操作的成员函数 D)用于输入操作的成员函数 { public:

Complex(double r =0, double i =0):re(r), im(i) { } double real() const { return re; } double imag() const { return im;} Complex operator +(Complex c) const { return Complex(re+c.re, im+c.im); } private:

double re, im; };

int main() (33)有以下类定义 class Point { public:

Point(int x = 0, int y = 0) { _.x = x; _.y = y; } void Move(int xOff, int yOff) { _x += xOff; _.y += yOff; } void Print() const

{ cout << '(' << _x << ',' << _y << ')' << endl; } private: int _x, _y; };

下列语句中会发生编译错误的是______ A) Point pt; pt.Print(); B) const Point pt; pt.Print(); C) Point pt; pt.Move(l, 2); D) const Point pt; pt.Move(l, 2); (34)有以下类定义 class MyClass { private: int id; char gender, char *phone; public:

MyClass():id(0),gender('#'),phone(NULL) { } MyClass(int no, char ge='#', char *ph= NULl.) { id=no;gende=ge;phone=ph; } };

下列类对象定义语句中错误的是______ A) MyClass myObj;

B) MyClass myObj(11, \C) MyClass myObj(12, 'm'); D) MyClass myObj(12); (35)有以下程序 #include using namespace std; class Complex

{

Complex a = Complex(l, 1) + Complex(5); cout << a.real() << '+' << a.imag() <<'i' << endl; return 0; }

程序执行后的输出结果是______

A) 6+6i B) 6+1i C) 1+6i D) 1+1i 二、填空题(每空2分,共30分)

请将每一个空的正确答案写在答题卡[1]-[15]序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。

(1)算法的复杂度主要包括[1] 复杂度和空间复杂度。 (2)数据的逻辑结构在计算机存储空间中的存放形式称为数据的 [2] 。

(3)若按功能划分,软件测试的方法通常分为白盒测试方法[3]___

_________测试方法。

(4)如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在[4] 的联系。 (5)关系数据库管理系统能实现的专门关系运算包括选择、连接和 [5] 。

(6)设有定义语句:int a=12;,则表达式a*=2+3的运算结果是 [6] 。

(7)从实现的角度划分,C++所支持的两种多态性分别是[7] -______时的多态性和运行时的多态性。

(8)将—个函数声明为一个类的友元函数必须使用关键字 [8] 。

(9)请按下面注释的提示,将类B的构造函数定义补充完整。 class A {

int a; public:

A(int aa=0) { a=aa; } };

class B: public A { int b; A c; public:

3 历年计算机C++二级真题及答案

//用aa初始化基类A,用aa+1初始化类对象成员c B(int aa): [ 9 ] { b=aa+2; } };

(10)下列程序的输出结果是 [10] 。 #include using namespace std; int main() {

int i = 5; int &r = i; r = 7; cout << i << endl; return 0; }

(11)下列程序的输出结果是 [11] 。 #include using namespace std; class Test { public:

Test() { cnt++; } ~Test() {cnt--; }

static int Count() { return cnt;} private:

static int cnt; };

int Test::cnt = 0; int main() {

cout << Test::Count0 <<' '; Test tl, t2;

Test* pT3 = new Test; Test* pT4 = new Test; cout << Test::Count0 <<' '; delete pT4; delete pT3;

cout << Test::Count() << endl; return 0; }

(12)下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1) unsigned fact(unsigned n) {

if ( n<= 1)

return 1;

}

(13)下列程序的输出结果是 [13] 。 #include using namespace std;

4

return [ 12 ] ;

template

T fun(T a, T b) { return (a<=b)?:b;} int main() {

cout << fun(3, 6) << ',' << fun (3.14F, 6.28F) << endl; return 0; }

(14)与成员访问表达式p->name等价的表达式是[14] 。 (15)下列程序的输出结果是 [15] 。 #include using namespace std; class base { public: int n;

base(int x) { n = x;}

virtual void set(int m) { n = m; cout << n <<' ';} };

class deriveA:public base { public:

deriveA(int x):base(x) { }

void set(mt m) { n += m; cout << n <<' ';} };

class deriveB:public base [ public:

deriveB(int x):base(x) { }

void set(int m) { n +=m; cout <

int main() {

deriveA dl(1); base *pbase; pbase->aet(1); pbase->set(2); }

deriveB d2(3); pbase = &dl; pbase = &d2; return 0;

计算机等级考试二级C++笔试试题(2010年3月)

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

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是______

A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B)对长度为n的有序链表进行对分查找,最坏情况下需要的

历年计算机C++二级真题及答案

比较次数为(n/2)

C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)

D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n log2n)

(2)算法的时间复杂度是指______ A)算法的执行时间

B)算法所处理的数据量

MyClass c1,*c2;

MyClass *c3=new MyClass; MyClass &c4=c1;

上面的语句序列所定义的类对象的个数是______ A)1 B)2 C)3 D)4

(13)下列关于继承方式的描述中,错误的是______

A)如果不显式地指定继承方式,缺省的继承方式是私有(private)

B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员

C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员

D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员

(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是______ A)Decr& operator --(int); B)Decr operator --( Decr&,int); C)friend Decr& operator --(Decr&); D)frlend Decr operator --(Decr&,int);

(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列 MyTempp2; MyTempp3[2];

编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是______

A)1 B)2 C)3 D)0 (16)在C++中,cin是个______ A)类 B)对象 C)模板 D)函数

(17)在下列字符中,不允许作为C++标识符的是______ A)b B)B C)_ D)2 (18)下列叙述中,错误的是______

A)false是一个逻辑型常量 B)\是一个字符型常量 C)365是一个int常量 D)3.1415926是一个double常量 (19)若x和y是程序中的两个整型变量,则下列if语句中正确的是______

A)if(x==0) y=1; else y=2; B)if(x==0) then y=1 else y=2; C)if(x==0) y=1 else y=2;

则由关系R得到关系T的操作是______

A)选择 B)投影 C)交 D)并 (11)下列关于函数的描述中,错误的是______ A)函数可以没有返回值 B)函数可以没有参数 C)函数可以是一个类的成员 D)函数不能被定义为模板

(12)若MyClass是一个类名,且有如下语句序列

5

D)if x==0 y=1; else y=2;

(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是______ A)int x[3]={0,0,0};

B)int x[]={0};

C)static int x[3]={0}; D)int x[]={0,0,0}; (21)关于函数中的<返回类型>,下列表述中错误的是 A)<返回类型>中有可能包含关键字int B)<返回类型>中有可能包含自定义标识符 C)<返回类型>中有可能包含字符*

C)算法程序中的语句或指令条数

D)算法在执行过程中所需要的基本运算次数

(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是______ A)编辑软件

B)操作系统 C)教务管理系统 D)浏览器

(4)软件(程序)调试的任务是______

A)诊断和改正程序中的错 B)尽可能多地发现程序中的错误 C)发现并改正程序中的所有错误 D)确定程序中错误的性质 (5)数据流程图(DFD图)是______

A)软件概要设计的工具 B)软件详细设计的工具

C)结构化方法的需求分析工具 D)面向对象方法的需求分析工具

(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于______

A)定义阶段 B)开发阶段 C)维护阶段 D)上述三个阶段 (7)数据库管理系统中负责数据模式定义的语言是______

A)数据定义语言 B)数据管理语言 C)数据操纵语言 位是______

A)文件 B)数据库 C)字段 D)记录

(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的______

A)需求分析阶段 B)逻辑设计阶段 C)概念设计阶段 D)物理设计阶段 (10)有两个关系R和T如下:

D)数据控制语言

(8)在学生管理的关系数据库中,存取一个学生信息的数据单

历年计算机C++二级真题及答案

D)<返回类型>中可能包含[]

(22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是______

A)MyClass p=MyClass; B)MyClass p=new MyClass; C)MyClass &p=new MyClass; D) MyClass a,&p=a; (23)有如下两个类定义

class XX{ private:

double x1; protected:

double x2;

public: };

class YY:protected XX{ private:

double y1; double y2; double x3;

using namespace std; class Test{ public: };

Test fun(Test &u) { Test t=u; return t; } int main(){

Test x,y; x=fun(y); return 0;

}

运行这个程序的输出结果是______ A)无输出 B)1 C)11 D)111 (29)有如下程序 #include

using namespace std; class A{ public:

A(int i=0):r1(i) { }

void print() {cout<<'E’<

Test(const Test &t) {cout<<1;}

protected: public: };

在类YY中保护成员变量的个数是______ A)1 B)2 C)3 D)4

(24)下列关于运算符重载的描述中,错误的是______ A)可以通过运算符重载在C++中创建新的运算符 B)赋值运算符只能重载为成员函数

C)运算符函数重载为类的成员函数时,第一操作数是该类对象 D)重载类型转换运算符时不需要声明返回类型 (25)下列关于类模板的描述中,错误的是______ A)类模板的成员函数都是模板函数

B)可以为类模板参数设置默认值 C)类模板描述了一组类 D)类模板中只允许有一个类型参数

(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是______

A)setprecision B)setw C)setfill D)showpoint (27)下列程序段中包含4个函数,其中具有隐含this指针的是______ int fun1(); class Test{ public: };

A)fun1 B)fun2 C)fun3 D)fun4 (28)有如下程序 #include

6

int fun2(); friend int fun3(); static int fun4(); double y3;

void print() const {cout<<'C'<

void print(int x) {cout<<'P'<

int main() { }

运行时的输出结果是______

A)P8-E4 B)P8-C16- C)P0-E4- D)P0-C16- (30)下列代码声明了3个类 class Person{};

class Student:public Person{}; class Undergraduate:Student{};

下列关于这些类之间关系的描述中,错误的是______ A)类Person是类Undergraduate的基类 B)类Undergraduate从类Student公有继承 C)类Student是类Person的派生类 D)类Undergraduate是类Person的派生类

(31)有如下程序 #include

using namespace std; Class Base{ public:

Base(int x=0):valB(x) {cout<

const A a2(4); a1.print(2); a1.print(); return 0; int r1;

历年计算机C++二级真题及答案

private: };

class Derived:public Base{ public:

Derived(int x=0,int y=0):Base(x),valD(y)

{cout<

};

int main(){ }

运行时的输出结果是______

A)2332 B)2323 C)3232 D)3223 (32)下面是类Shape的定义: class Shape{ public: };

下列关于Shape类的描述中,正确的是 A)类Shape是虚基类

B)类Shape是抽象类

C)类Shape中的Draw函数声明有误

D)语句“Shape s;”能够建立Shape的一个对象s (33)将运算符“+”重载为非成员函数,下列原型声明中,错误的是______

A)MyClock operator + (MyClock,long); B)MyClock operator + (MyClock,MyClock); C)MyClock operator + (long,long); D)MyClock operator + (long,MyClock);

(34)打开文件时可单独或组合使用下列文件打开模式 ①ios_base::app ②ios_base::binary ③ios_base::in ④ios_base::out

若要以二进制读方式打开一个文件,需使用的文件打开模式为______

A)①③ B)①④ C)②③ D)②④ (35)有如下程序: #include

using namespace std; Class B{ public:

B(int xx):x(xx) {++cout; x+=10;} virtual void show() const

{cout<

protected:

static int count;

7

对该二叉树进行后序遍历的结果为 【3】 。 (4)软件是 【4】 、数据和文档的集合。 (5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号, 【5】 ,成绩)。 (6)若x和y是两个整形变量,在执行了语句序列

virtual void Draw()=0; Derived obj12(2,3); return 0;

~Derived() {cout<

private:

int valB;

private: };

class D:public B{ public: }; }

运行时的输出结果是______

A)1_120 B)2_120 C)1_20 D)2_20 二、填空题(每空2分,共30分)

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

(1)一个队列的初始状态为空。现将元素

A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为 【1】 。

(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有 【2】 个元素。 (3)设二叉树如下:

int B::count=0; int main(){

B *ptr=new D(10,20); ptr->show(); delete ptr; return 0;

D(int xx,int yy):B(xx),y(yy) {++count; y+=100;} virtual void show() const

{cout< int x;

private:

int y;

历年计算机C++二级真题及答案

x=5; y=6; y+=x--;

后,x+y的值为 【6】 。 (7)在执行语句序列

int i=0; do i++; while(i*i<10);

时,do后面的循环体语句i++被执行的次数为 【7】 。 (8)有如下的函数定义: int Xfun(int *a, int n){ int x=*a;

for(int *pa=a+1; pa<> if(*pa>x) x=*pa; return x; }

若执行了语句

int x[5]={23,46,78,55,16};

后,通过表达式Xfun(x,5)调用该函数,则得到的返回值为 【8】 。 (9)有如下的函数定义: int Xfun(int x){ int y=x;

{int x=10; y+=x;} return x+y; }

通过表达式Xfun(5)调用该函数,则得到的返回值为 【9】 。

(10)假定Xcs是一个类,该类中一个成员函数的原型为“Xcs *abc();”,则在类外定义时对应的函数头为 【10】 。 (11)请将下面的类Date的定义补充完整,使得由语句 Date FirstDay;

定义的对象FirstDay的值为2010年1月1日。 class Date{ public: };

(12)请将下面的程序补充完整,使得程序输出“飘是张娜的书”。 #include

using namespace std; class Book{ public:

Book(char *str) {strcpy(title,str);}

【12】 void PrintInfo() {cout<

class MyBook:public Book{ public:

8

Date( 【11】 ):year(y),month(m),day(d){ } int year,month,day; //依次表示年、月、日

private:

int a,q;

MyBook(char *s1,char *s2=\张娜\【13】 {strcpy(owner,s2);} virtual void PrintInfo()

{cout<

private: };

int main(){ }

(13)在有理数类Rational中重载插入运算符<<,以便按a/q形式输出。请将<<运算符函数的定义补充完整。 class Rational{ public:

Rational(int aa, int qq):a(aa),q(qq){ }

friend 【14】 operator<<(ostream &out,

{

return (out<

Book *prt=new MyBook(\飘\prt->PrintInfo(); return 0; char owner[10];

Rational &x)

};

(14)下面的函数定义是某函数模板能够生成的函数实例 int square(int n) {return n*n;}

double square(double n) {return n*n;}

由此可知,该函数模板的定义是 【15】 。

private:

计算机等级考试C++考试及答案(2007年4月)

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

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是______

A)算法的效率只与问题的规模有关,而与数据的存储结构无关. B)算法的时间复杂度是指执行算法所需要的计算工作量 C)数据的逻辑结构与存储结构是一一对应的. D)算法的时间复杂度与空间复杂度一定相关. (2)在结构化程序设计中,模块划分的原则是______ A)各模块应包括尽量多的功能 C)各模块之间的联系应尽量紧密

D) 模块内具有高内聚度,模块间具有低耦合度

B)各模块的规模应尽量大

历年计算机C++二级真题及答案

(3)下列叙述中正确的是______

A)软件测试的主要目的是发现程序中的错误. B)软件测试的主要目的是确定程序中错误的位置.

C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作

D)软件测试是证明软件没有错误

(4) 下面选项中不属于面向对象程序设计特征的是______ A)继承性 B)多态性 C)类比性 D)封装性 (5) 下列对列的叙述正确的是______ A) 队列属于非线性表

B) 队列按”先进后出”的原则组织数据 C)队列在队尾删除数据

D) 队列按“先进先出”原则组织数据 (6)对下列二叉树

A)DYBEAFCZX B)YDEBFZXCA C)ABDYECFXZ D)ABCDEFXYZ

(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为

A)n+1 B )n-1 C)2n D)n/2

(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。

A)井 B)交 C)投影 D)笛卡儿乘积

(9)在E-R图中,用来表示实体之间是联系的图形是 。 A) 矩形 B)椭圆形 C)菱形 D)平行四边形 (10)下列叙述中错误的是 。

A) 在数据库系统中,数据的物理结构必须与逻辑结构一致. B)数据库技术的根本目标是要解决数据的共享问题

C)数据库设计是指在已有数据库管理系统的基础上建立数据库 D)数据库系统需要操作系统的支持

(11)为了取代C中带参数的宏,在C++中使用 A)重载函数 B)内联函数 C)递归函数 D)友元函数 (12)下列关于类定义的说法中,正确的是 A)类定义中包括数据成员和函数成员的声明 B)类成员的缺省访问权限是保护的 C) 数据成员必须被声明为私有的 D)成员函数只能在类体外进行定义

(13)下列关于派生类构造函数和析构函数的说法中,错误的是 A)派生类的构造函数会隐含调用基类的构造函数

B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数

C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

(14)通过运算符重载,可以改变运算符原有的 A)操作数类型 B)操作数个数 C)优先级 D)结合性 (15)有如下函数模板:

template T souare(T x) (retumx * x ;) 基中T是

9

A)函数形参 B)函数实参 C)模板形参 D)模板实参 (16)使用输入输出操作符setw,可以控制

A)输出精度 B)输出宽度 C)对齐方式 D)填充字符 (17)下列字符串中,不可以用作C++标识符的是 A)y_2006 B)____TEST__H C)Retum D)switch (18)字面常量42、4.2、42L的数据类型分别是 A)long、double int B)long、float、int C)int、double、long D)int、float、long (19)执行下列语句段后,输出字符“*”的个数是 for(int i =50;I>1;— i )cout<<”*” A)48 B)49 C)50 D)51 (20)有如下程序段 inti =0, j=1; int&r=i ; // ① r =j; //② int*p=&i ; //③ *p=&r ; //④

基中会产生编译错误的语句是 A)④ B)③ C)② D) ① (21)有如下函数定义:

void func (int a,int&b) {a++; b++;} 若执行代码段: intx=0 ,y=1 func(x,y);

则变量x和y值分别是

A)0和1 B)1和1 C)0和2 D)1和2 (22)有如下程序: #include using namespace std; class A{ public static int a; void init(){a=1;}

A(int a=2) {init();a++;} };

int A:;a=0 A obj; Int main() {

cout<

运行时输出的结果是 A)0 B)1 C)2 D)3

(23)下列有关继承和派生的叙述中,正确的是 A) 派生类不能访问基类的保护成员 B)作为虚基类的类不能被实例化

C)派生类应当向基类的构造函数传递参数

历年计算机C++二级真题及答案

D)虚函数必须在派生类中重新实现 (24)下列运算符中,不能被重载的是 A)&& B)!= C). D)++

(25)下列函数模板的定义中,合法的是

A) template Tabs(T x) {return x <0 – x: x;} #include using namespace std; class point { public:

static int number; B)template class Tabs(Tx){retumx<0 -x;x;} C)template Tabs(T x){retum x<0 -x;x;} D)template T abs(T x){returm x<0 -x;x;} (26)在语句cin>>data;中,cin是 A)C++的关键字 B)类名 C)对象名 D)函数名 (27)有如下程序: #include using namespace std; class test { private: int a; public:

test(){cout<<”constructor”<

a=_testa;

cout<<”copy constructor”<

test(){cout<<”destructor”<

int main() }

test A(3) return0;

运行时输出的结果是 A)3

B)constructor destruclor

C)copy constructor D)3

dstructor destruclor (28)若有如下类声明 class My Class { public:

MyClass() {cout<<1;} };

执行下列语句 MyClass a,b[2],*P[2]; 以后,程序的输出结果是 A)11 B)111 C)1111 D11111 (29)有如下程序:

public:

point(){number++; ~point(){number-;} };

imt point::number=0; void main(){ point*ptr; printA,B; {

point*ptr_point=new point{3}; ptr=ptr_point; } pointC;

cout<

运行时输出的结果是 A)3 B)4 C)6 D)7

(30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。 #include using namespace std; class Base{ int a,b; public:

Bace(int x ,int y) { a=x; b=y;}

Void show(){ cout<

clsaa Derived:public Base { int c ,d; public:

Derived(int x,int y,int z,int m):Base(x,y){c=z; d=m;} Void show(){ cout<

int main() {

Base B1(50,50),*pb; Derived DI(10,20,30,40); Pb=&D1; Pb->show(); Return 0; }

10

历年计算机C++二级真题及答案

运行时输出的结果是

A)10,20 B)30,40 C)20,30 D)50,50 (31)有如下程序: #include using namespace std; class A { public;

A(int i ){x= i ;}

Void sispa(){cout<

class B;publicA { public;

B(int i):A(i +10) {x =i ;}

voud dispb() {dispa();cout<

int main() {

B b(2); b.dispb() retum 0: }

运行时输出的结果是

A)10,2 B)12,10 C)12,2 D)2,2

(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:

#include using namespace std; class Base { public:

virtual void f(){cout<<”f0+”;} void g() {cout<<”g0+”;} };

class Derived:public Base { public:

void f() {cout<<”f+”;} void g() {cout<<”g+”;} };

int main()

11

{

Derived d; Base*p=&d; p->f(); p->g(); return 0: }

运行时输出的结果是

A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+

(33)下面程序中对一维坐标点类Point进行运算符重载 #include using namespace std; class point { public:

point (int vaI) {x=val;}

point& operator++(){x++;retum*this;}

print operator++(int) {point old=*this,++(*this);retum old;}

int GetX() const {retum x;} private: int x; };

int main() {

point a(10);

cout<<(++a).GetX(); cout<

编译和运行情况是 A)运行时输出1011 B)运行时输出1111 C)运行时输出1112 D)编译有错 (34)有如下程序: #include using namespace std; int main() {

char str[100],*p;

cout<<”please input a string:”; cin>>str; p=str;

for(int i =0;*p!=”\\0”;p++, i ++); cout<< i <

运行这个程序时,若输入字符串为 abcdefg abcd

历年计算机C++二级真题及答案

则输出结果是

A)7 B)12 C)13 D)100 (35)有如下程序:: #include using namespace std: class Sample {

friend long fun (Sample s); public:

Sample (long a ){x=a;} Private: long x; };

long fun (Sample s) {

if(s.x<2)retum 1;

retum s.x*fun(Sample(s.x-a)); }

int main() {

int sum=0

for(int i =0; i <6; i ++) { sum+=fun(Sample( i );) } cout<

运行时输出的结果是

A)120 B)16 C)154 D)34 二、填空题(每空2分,共30分)

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

(1)在深度为7的满二叉树中,度为2的结点个数为 【1】 。 (2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 【2】 测试。

(3)在数据库系统中,实现各种数据管理体制功能的核心软件称为 【3】 。

(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于 【4】 阶段。

(5)在结构化分析使用的数据流图(DFD)中,利用 【5】 对其中的图形元素进行确切解释。

(6)C++中只有两个逻辑常量:true和 【6】 。

(7)若要访问指针变量p所指向的数据,应使用表达式 【7】 。 (8)已知一个函数的原型是: int fn(double x);

若要以5.27为实参调用该函数,应使用表达式 【8】 。 (9)有如下定义: class MA{ int value; public:

12

MA(int n=0):valut(n){} }; MA*ta,tb;

其中MA类的对象名标识符是 【9】 。

(10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。 Class my Class{ Private: Int data: Public:

MyClass(int value); //构造函数

MyClass(const 【10】 another Object); //拷贝构造函数 }

(11)用来派生新类的称为 【11】 ,而派生出的新类称为它的子类或派生类。 (12)有如下程序: #include using namespace std; clsaa CA{ public:

CAD{cout<

class CB ;private CA{ public;

CB(){cout<

int main(){cout<

int main(){ CA a; CB b; retum0; }

这个程序的输出结果是 【12】 。

(13)若将一个二元运算符重载为类的成员函数,其形参个数应该是 【13】 个。 (14)有如下程序: #include using namespace std; class DA{ int k; public:

DA(int x=1): k (x){} ~DA(){cout<

int main(){

DA d[]={DA(3),DA(3),DA(3)}; DA* p=new DA[2];

历年计算机C++二级真题及答案

delete[]p; return0; }

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

(15)C++语言中的多态性分为编译时的多态性和 【15】 时的多态性。

2007年4月计算机等级考试C++考试答案 选择题: 1-5BDACD 6-10CABCA 11-15BADAC 16-20BCDBA 21-25CCCCA 26-30CDBDA 30-35CBBBC 填空: 1、63 2、黑盒 3、DBMS 4、开发 5、数据字典 6、false 7、 *P 8、fn(5.27) 9、tb

10、myclass& 11、基类 12、AAB 13、1个 14、11333 15、运行

2007年9全国计算机等级考试二级笔试试卷C++语言程序设计

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

13

(8)一棵二叉树中共有70个叶子结点于80个度为1的结点,则该二叉树重的总结点数为

A 219 B 221 C 229 D 221

(9)下列叙述重正确的是

A 数据库系统是一个独立的系统,它需要操作系统的支持

B 数据库技术的根本目标是要解决数据的共享问题 C 数据库管理系统是数据库系统 D 以上说法都不正确 (10)下列叙述中正确的是

A 为了建立一个关系,首先是要构造数据的逻辑关系 B 表示关系的二维表中各各组的每一个分量还可以分成一、选择题(每小题2分,共70分)

下列个体A、B、C、D四个选项重,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 软件是指

A 程序 B 程序和文档

C 算法加数据结构 D 程序、数据与相关文档的完整集合

(2)软件调试的目的是

A 发现错误 B 改正错误 C 改善软件的性能 D 验证软件的正确性

(3)在面对对象方法中,实现信息隐蔽是依靠

A 对象的继承 B 对象的多态 C 对象的封装 D 对象的分类 (4)下列叙述重,不符合良好程序设计风格要求是

A 程序的效率第一,清晰第二 B 程序的可读性好

C 程序中要有必要的注释 D 输入数据前要有提示信息

(5)下列叙述中正确的是

A 程序执行的效率与数据的存储结构密切相关 B 程序执行的效率只取决于程序的控制结构 C 程序执行的效率之取决于所处理的数据量 D 以上三种说法都不对 (6)下列叙述中正确的是

A 数据的输入结构与存储结构必定是——对应的 B 计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C 程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 D 以上三种说法都不对

历年计算机C++二级真题及答案

若干数据项

C 一个关系的属性名称为关系模式 D 一个关系可以包括多个二维表

(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是 D static

(12)对于一个类定义,下列叙述中错误的是

A 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数

B 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数

C 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数

D 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数

(13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是 A public和 public B public和protected

C protected 和 public D protected 和 protected

(14)下列运算符函数中肯定不属于类FunNumber的成员函数的是

A int operator-(FunNumber) B FunNumber operator-() C FunNumber operator-(int) D int operator – (FunNumber)

(15)C++中的模板包括

A 对象模板和函数模板 B 对象模板和类模板

C 函数模板和类模板 D 变量模板和对象模板

(16)如果调用C++流进行输入输出,下面的叙述中正确的是 A 只能借助于流对象进行输入输出 B 只能进行格式化输入输出

C 只能借助于cin和cout进行输入输出 D 只能使用运算符 》和《 进行输入输出 (17)下列富豪中不属于C++关键字的是 D byte

(18)下列各组的量申明中,含义相同的一组是

A unsigned long int 和 long B signed short int 和 short

B unsigned short 和 short D short int

14

和int

(19) 必须用一对打括号括起来的程序段是 A switch 语句中的case标号语句 B if 语句的分支 C 循环语句的循环体 D 函数的函数体 序列是

A int*p;p=&k B int*p;p=k C int*p;*p=&k D int*p;*p=k (21)关于函数重载,下列叙述中错误的是 A 重载函数的函数名必须相同

B 重载函数必须在函数个数或类型上有所不同 C 重载函数的返回值类型必须相同 D 重载函数的函数体可以有所不同 (22)有如下头文件 Int f1(); Static int f2(); Class MA{ Public Int f3(); Static int f4(); };

在所描述的函数中,具有隐含的this指针的是

A f1 B f2 C f3 D f4 (23)派生类的成员函数不能访问基类的 A 共有成员和保护成员 B 共有成员 C 私有成员 D 保护成员 (24)下列关于运算符重载的描述中,正确的是

A 运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符

B 一元运算符只能作为成员函数重载

C 二元运算符重载为非成员函数时,参数表中有一个参数 D C++中可以重载所有的运算符

(25)下列关于类模板的模板参数的叙述中,错误的是 A 模板参数可以作为数据成员的类型 B 模板参数可以作为成员函数的返回类型 C 模板参数可以作为成员函数的参数类型 D 模板函数不能作为成员函数的局部变量的类型 (26)已知一程序运行后执行的第一个输出操作是 Cout<

C **********1234 D 1234****** (27)有如下程序

#include Using namespace std; Class myclass{

A auto B extem C register ( 20 )语句的int*p=&k定义于指针P,于这个语句等效的语句

A friend B namespace C continue A 1234 B ******1234

历年计算机C++二级真题及答案

Public:

MyClass(){++count;} ~MyClass(){--count;}

Static int getcount(){return count;} Private

Static int count; };

Int MyClass::count=0; Int main(){ Myclass obj;

Cout<

Cout<

程序的输出结果是

A 121 B 232 C 221 D 122

};

Class whole{ Public; Whole(int

Whole(){count,,val;} Private; Part p1,p2; Int val; };

Int maint{

Whole obj(1,2,3); Resturn(); }

程序输出的结果是

A 123321 B 213312 C 213 (30) 有如下程序: #include Using namespace std; Class base{ Public:

Base(int x=0){cout<

Class derived : public base{ Public:

Derivedrin(x=y){cout<

Int main(){ Derived d(!); Return(); }

程序的输出结果是

程序的输出结果是

A val=10 const:val=20 B const:val=10 const:val=20 C const:val=10 val=20 D val=10 val=20 (29)有如下程序

#include Using namespace std; Class part{ Public;

Part(int x=(\\):val(x){cout,,val;} -part(){cout<

15

A 0 B 1 C 01 D 001 (31)若有如下类定义: Classs B { Void fun(){} Protected; Double varl; Public:

Void fun2(){} };

Class D:public B{ Protected; Void fun3(){} };

已知obj是类D的对象,下列语句中不违反成员访问控制的权限

x,int

y,int

z=0):p2(x),p1(y),val(z){cout<

历年计算机C++二级真题及答案

的是 D obj.fun3(); (32)有如下程序:

#include Using namespace sid; Class base{ Public;

Void output(){cout<<1;} Virtual void print() {cout<

Class derived:public base{ Public:

Void output(){cout<<2;} Void print(){cout<<’D’;} };

Int main()

Base * passnew derived; Ptr->output(); Ptr->print(); Delete ptr; Return(); }

程序的输出结果是

A 1B B 1D C 2B D 2D 下列是重载乘法运算的函数原型声明,其中错误的是 A myclass operator*(double,double); B myclass operator*(double,myclass); C myclass operator*(myclass,double); D myclass operator*( myclass , myclass);

};

Void fun2(B &ref){ref.show();} Void fun3(B b){b.show();} Int main(){ B b,*p=new D; D d; Fun1(p); Fun2(b); Fun3(d); Return(); }

程序的输出结果是

A DBD B BBD C DBB D DBD 二、填空题(每空2分,共三十分)

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

(2).软件需求规格说明书应具有完整性、无歧视性、正确性、可验证性、可修改性等特征,最重要的是_______.

(3).在两种基本测试方法中_______测试的原则之一是保证所测模板中每一个独立路径至少要执行一次。

(4).线性表的存储结构主要分为顺序存储结构和链式储存结构。队列中是一种特殊的线性表。循环队列是队列的_____存储结构。 (5).对下列二叉树进行中序遍历的结果为______. (6).在E-R图中,矩形属于______

在有定义语句:int a=3,b=2,c=1;则表达式a

For (int j=I;j<=I;j++) For (int j=I;j<=I;j++) Sum++;

(8).已知有函数f的定义如下: Int f(){

Static int -6; s-2; return s }

则在某程序中第二次执行函数用语句f();时,函数f的返回值是

(35) 有如下程序:

#include Using namespace std: Class B{ Public:

Virtual void show(){cout<<”b”;} };

Class D:public B { Public:

Void show(){cout<

16

_____.

(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。

#include Using namespace std; Class myclass{ Public:

Void print() cout{cout<<23;} }

Int main(){

A obj.fun1(); B obj.var1; C obj.fun2(); Void fun1(B*ptr){ptr->show();}

历年计算机C++二级真题及答案

Myclass*p=new myclass(); ______print(); Return(); Class sample{ Public:

Sample(){} _________ }

程序结束

Exit(1);

Top++; //栈顶指针增1 ___【15】____; }

Int stack::pop(){

If (top<0) //如果栈空,程序结束 Exit(1);

Return plish[top--]; }

参考答案

1-10:DBCAACCABB 11-20:ABDDCADBDA 21-30:CCCADBACDC 31-35:CDAAD 1.无歧性

(14)请将如下程序补充完整,使得输出结果为bbaa #include Using namespace std; Class A { Public:

_____{cout<<”aa”;} };

Class B :public A{ Public:

~B(){cout<<”bb”;} };

Int main (){ B*p=new B; Delete p; Return(); } (15)请将下列栈类stack补充完整 Class stack{ Private;

Int plist[100]; //int 数组,用于存放栈的元素 Int top; //栈顶元素(数组下标) Public:

Stack():top(0){}

Void push(sons int &item); //新元素item压入栈

Int pop(void); //将栈顶元素弹出栈 };

Void stack::pbsh(const int &item){

If (top ==99) //如果栈满,

17

2.逻辑覆盖 3.链式 4.ACBDFHGPE 5.实体 6.2 7.6 8.4 9.(*p) 10.ABBA

11.void Base::fun() 12.virtual display()==0; 14.-A()

15.pList[top]=item

2008年9月计算机等级考试 二级C++笔试试题

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

(1)一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是(B)。 A)123456ABCDE C)ABCDE12345

B)EDCBA54321

D)54321EDCBA

(2)下列叙述中正确的是(D)。

A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

D)循环队列中元素的个数是由队头指针和队尾指针共同决定

历年计算机C++二级真题及答案

(3)在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是(C)。 A)O(n)

B)O(n2)

C)O(log2n)

D)O(nlog2n)

A)f()是基类的私有成员 C)派生类的继承方式为私有 B)f()是基类的保护成员 D)派生类的继承方式为保护

(14)下列关于运算符重载的叙述中,错误的是(B)。 A)有的运算符可以作为非成员函数重载

B)所有的运算符都可以通过重载而被赋予新的含义 C)不得为重载的运算符函数的参数设置默认值 D)有的运算符只能作为成员函数重载

(15)下列关于模板的叙述中,错误的是(C)。 A)调用模版函数时,在一定条件下可以省略模板实参 B)可以用 int、double 这样的类型修饰符来声明模版参数 C)模板声明中的关键字 class 都可以用关键字 typename 替代

D)模板的形参表中可以有多个参数

(16)要利用 C++流进行文件操作,必须在程序中包含的头文件是(B)。 A)iostream C)strstream

B)fstream D)iomanip

(4)下列叙述中正确的是(A)。

A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 D)链式存储结构比顺序存储结构节省存储空间 (5)数据流图中带有箭头的线段表示的是(D)。 A)控制流 B)事件驱动 A)N-S 图 C)PAD 图 A)一致性 C)多态性 (B)。 A)一对一 C)多对一

B)一对多 D)多对多

C)模块调用 D)数据流

B)DFD 图(数据流图) D)程序流程图 B)分类性 D)标识唯一性

(6)在软件开发中,需求分析阶段可以使用的工具是(B)。

(7)在面向对象方法中,不属于“对象”基本特点的是(A)。

(17)下列字符串中不能作为 C++标识符使用的是(D)。 A)WHILE B)user C)_lvar D)9stars (18)下列语句中错误的是(A)。 A)const int a; B)const int a=10; C)const int*point=0;

D)const int*point=new int(10); (19)有如下程序: #include using namespace std;

B 1

C 3

int main(){ int sum;

for(int i=0; i<6; i+=3){ sum=i;

for(int j = i; j<6; j++)sum+=j; }

cout<

运行时的输出结果是(D)。 A)3

B)10

C)12

D)15

(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是

(9)在数据管理技术发展的三个阶段中,数据共享最好的是(C)。 A)人工管理阶段

B) 文件系统阶段

C)数据库系统阶段 D) 二个阶段相同 (10)有三个关系 R、S 和 T 如下: R S T A m n

由关系 R 和 S 通过运算得到关系 T,则所使用的运算为(D)。 A)笛卡尔积 C)并

B)交

D)自然连接

B 1 2

B 1 3

C 3 5

A m

(11)在下列原型所示的 C++函数中,按“传值”方式传递参数的是(A)。 A)void f1(int x);

B)void f2(int*x);

C)void f3(const int*x); D)void f4(int&x);

(12)在 C++中,编译系统自动为一个类生成缺省构造函数的条件是(C)。

A)该类没有定义任何有参构造函数 B)该类没有定义任何无参构造函数 C)该类没有定义任何构造函数 D)该类没有定义任何成员函数

(13)在一个派生类的成员函数中,试图调用其基类的成员函数“void f();”,但无法通过编译。这说明(A)。

18

(20)下列语句中,正确的是(A)。 A)char*myString=\B)char myString=\C)char myString[11]=\ D)char myString[12]=\

(21)若已经声明了函数原型“void fun(int a, double b=0.0);”,则下列重载函数声明中正确的是(C)。 A)void fun(int a=90, double b=0.0);

历年计算机C++二级真题及答案

B)int fun(int a, double B); C)void fun(double a, int B); D)bool fun(int a, double b = 0.0); (22)有如下程序: #include using namespace std; class Sample{ public: Sample(){}

~Sample(){cout<<'*';} };

int main(){

Sample temp[2], *pTemp[2]; return 0; }

执行这个程序输出星号(*)的个数为(B)。 A)1

B)2

C)3

D)4

}

运行时的输出结果是(A)。 A)112444 C)121444

B)11114444

D)11314444

(28)有如下程序: #include using namespace std; class MyClass{ public:

MyClass(int x):val(x){} void Set(int x){val=x;}

void Print()const{cout<<\private: int val; };

int main(){

const MyClass obj1(10); MyClass obj2(20); obj1.Print(); //语句 1 obj2.Print(); //语句 2 obj1.Set(20); //语句 3 obj2.Set(30); //语句 4 return 0; }

其主函数中错误的语句是(C)。 A)语句 1 C)语句 3 是(B)。 A)私有

B)公有

C)保护

D)默认

B)语句 2 D)语句 4

(23)下列选项中,与实现运行时多态性无关的是(A)。 A)重载函数 C)指针 是(B)。

A)Value operator+(Value); B)Value operator-(Value, Value); C)Value operator*(int); D)Value operator/(Value);

(25)下列模板声明中,有语法错误的是(D)。 A)templateT fun(T x){return x;} B)templateT fun(T x, int n){return x*n;} C)templateT fun(T *p){return *p;} D)templateT classA{T n;};

(26)在语句“cout<<'A';”中,cout 是(B)。 A)类名 C)函数名

B)对象名 D)C++的关键字

B)虚函数

D)引用

(24)下列运算符函数中,肯定不属于类 Value 的成员函数的

(29)在类声明中,紧跟在“public:”后声明的成员的访问权限

(30)对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是(D)。 A)公有或私有 C)保护或私有

B)私有 D)公有或保护

(27)有如下程序: #include using namespace std; class MyClass{ public:

MyClass(int i=0){cout<<1;}

MyClass(const MyClass&x){cout<<2;} MyClass& operator=(const MyClass&x) {cout<<3; return*this;} ~MyClass(){cout<<4;} };

int main(){

MyClass obj1(1),obj2(2),obj3(obj1); return 0:

19

(31)定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为(A)。 A)私有继承 C)保护继承 行次序为(C)。

A)派生类、成员对象类、基类 B)成员对象类、基类、派生类 C)基类、成员对象类、派生类 D)基类、派生类、成员对象类

(33)如果表达式 a>=b 中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为(C)。 A)a.operator>=(b) C)operator>=(a,b)

B)b.operatotr>=(a) D)operator>=(b,a)

B)非私有继承 D)公有继承

(32)建立一个有成员对象的派生类对象时,各构造函数体的执

历年计算机C++二级真题及答案

(34)当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(D)。 A)ios base::in B)ios_base::binary

C)ios_base::in|ios_base::out D)ios_base::out

(35)在一个抽象类中,一定包含有(B)。 A)虚函数

B)纯虚函数

C)模板函数

D)重载函数

}

程序的输出结果是_2,3_。 (9)有如下程序: #include using namespace std; class pumpkin{ public:

pumpkin(){++count;} ~pumpkin(){--count;} static void total_count(){

cout<

int pumpkin::count=0; int main(){ pumpkin pl[10]; pumpkin::total_count(); return 0; }

这个程序的输出结果是__10pumpkin(s)__。 (10)有如下递归函数: int Fun(int n){ if(n<=1) return 1;

__else return n*Fun(n-1);__ }

请补充完整,使得函数 Fun 能够正确计算形参 n 的阶乘。 (11)请在下列程序中的空格处填写正确的语句: class Sample{ public: Sample(){} ~Sample(){}

void SetData(int data)

{ //将 Sample 类成员变量 data 设置成形参的值 __Sample::data=data__ //注意形参与成员同名 }

private: int data; };

(12)有如下类定义,请将Sample类的拷贝构造函数补充完整。 class Sample{ public: Sample(){)

~Sample() {if(p) delete p;) Sample (const Sample& s){ __p=new int;*p=s.*p__ }

void SetData(int data) {p=new int(data);} 20

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

(1)对下列二叉树进行中序遍历的结果_DBXEAYFZC_。 进行。

(3)软件工程三要素包括方法、工具和过程,其中,__过程__支持软件开发的各个环节的控制和管理。

(4)数据库设计包括概念设计、_逻辑设计_和物理设计。 (5)在二维表中,元组的__分量__不能再分成更小的数据项。 (6)当使用关键字__void__作为函数返回类型时,该函数不返回任何值。

(7)已知数组 a 中有 n 个元素,下列语句将数组 a 中从下标 x1 开始的 k 个元素移动到从下标 x2 开始的 k 个元素中,其中 0<=x1=x1; i--) a[_x2+k-1_]=a[i]; (8)有如下程序: #include using namespace std; int fun1(int x) {return++x;} int fun2(int &x) {return++x;} int main(){ int x=1,y=2; y=fun 1(fun2(x)); cout<

A B C D E F X Y Z (2)按照软件测试的一般步骤,集成测试应在__单元__测试之后

历年计算机C++二级真题及答案

private: int*p; };

(13)重载加法运算符“+”,其函数名是__operator +_。 (14)有如下程序: #include using namespace std; class Wages{ //“工资”类 double base; //基本工资 double bonus; //奖金 double tax; //税金 public:

Wages(double CBase, double CBonus, double CTax)

:base(CBase), bonus(CBonus), tax(CTax){}

double getPay()const; //返回应付工资额 Wages operator+(Wages w)const; //重载加法 };

double Wages::getPay()const {return base+bonus-tax;}

Wages Wages::operator+(Wages w)const { return Wages(base+w.base, bonus+w.bonus, tax+w.tax); }

int main(){

Wages wl(2000,500,100),w2(5000,1000,300); cout<<(wl+w2).getPay()<

程序的输出结果是__8100__ (15)有如下程序: #include using namespace std; class Pet{ char name[10]; public:

Pet(char*name){strcpy(this->name, name);} const char*getName()const {return name;} virtual void call()const=0; };

class Dog: public Pet{ public:

Dog(char*name):Pet(name){} void call()const{cout<<\汪汪叫\};

class Cat:public Pet{ public:

Cat(char*name):Pet(name){} void call()const{cout<<\喵喵叫\};

int main(){

Pet *pet1=new Dog(\哈克\ *pet2=new Cat(\吉米\cout<getName(); pet1->call(); cout<

cout<getName(); pet2->call(); cout<

程序的输出结果是__哈克汪汪叫__ __吉米喵喵叫__

2008年9月二级 C++笔试试卷参考答案 一、选择题

(1)B)(2)D)(3)C)(4)A)(5)D)(6)B)(7)A)(8)B)(9)C)(10)D(11)A) (12)A)(13)C)(14)B)(15)D(16)B) (17)B)(18)D)(19)A)(20)D(21)C) (22)C)(23)A)(24)D)(25)C)(26)B) (27)C)(28)B)(29)A)(30)D(31)A) (32)C)(33)A)(34)B)(35)C) 二、填空题 (1)DBXEAYFZC (2)单元 (3)过程 (4)逻辑设计 (5)分量 (6)void (7)X2+k-1 (8)2,3

(9)10pumpkin(s)

(10)else return n*Fun(n-1); (11)Sample::data (12)p=new int; *p=s.*p; (13)operator + (14)8100

2009年9月全国计算机二级笔试C++

一、选择题(1-10,21-40每题2分,11-20每题1分) (1)下列数据结构中,属于非线性结构的是 A)循环队列 B)带链队列 C)二叉树

21

历年计算机C++二级真题及答案

D)带链栈

(2)下列数据结构中,能够按照“先进后出”原则存取数据的是 A)循环队列 B)栈 C)队列 D)二叉树

(3)对于循环队列,下列叙述中正确的是 A)队头指针是固定不变的 B)队头指针一定大于队尾指针 C)队头指针一定小于队尾指针

D)队头指针可以大于队尾指针,也可以小于队尾指针

(4)算法的空间复杂度是指

A)算法在执行过程中所需要的计算机存储空间 B)算法所处理的数据量

C)算法程序中的语句或指令条数

D)算法在执行过程中所需要的临时工作单元数

(5)软件设计中划分模块的一个准则是 A)低内聚低耦合 B)高内聚低耦合 C)低内聚高耦合 D)高内聚高耦合

(6)下列选项中不属于结构化程序设计原则的是 A)可封装 B)自顶向下 C)模块化 D)逐步求精

(7)软件详细设计产生的图如下:

该图是 A)N-S图 B)PAD图

C)程序流程图 D)E-R图

(8)数据库管理系统是 A)操作系统的一部分

B)在操作系统支持下的系统软件 C)一种编译系统 D)一种操作系统

(9)在E-R图中,用来表示实体联系的图形是 A)椭圆形 B)矩形 C)菱形 D)三角形

(10)有三个关系R,S,和T如下: R A B C a 1 2 A B C b 2 1 d 3 2 c 3 1 S T A B C A 1 2 B 2 1 C 3 1 D 3 2 其中关系T由关系R和S通过某种操作得到,该操作为 A)选择 B)投影 C)交 D)并

(11)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则

A)FA必须定义在FB之前 B)FB必须定义在FA之前

C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

D)若FB定义在FA之后,则FB的原型必须出现在FA的

定义之前

(12)有如下两个类定义 class AA{};

22

历年计算机C++二级真题及答案

class BB{ AA v1,*v2; BB v3; int *v4; };

其中有一个成员变量的定义是错误的,这个变量是 A)v1 B)v2 C)v3 D)v4

(13)有如下类定义: class XX{ int xdata; public:

XX(int n=0) : xdata (n) { } };

class YY : public XX{ int ydata; public:

YY(int m=0, int n=0) : XX(m), ydata(n) { } };

YY类的对象包含的数据成员的个数是 A)1 B)2 C)3 D)4

(14)下列有关运算符函数的描述中,错误的是 A)运算符函数的名称总是以operator为前缀 B)运算符函数的参数可以是对象 C)运算符函数只能定义为类的成员函数

D)在表达式中使用重载的运算符相当于调用运算符重载函数

(15)下列关于模板形参的描述中,错误的是 A)模板形参表必须在关键字template之后 B)模板形参表必须用括弧( )括起来 C)可以用class修饰模板形参 D)可以用typename修饰模板形参

(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是

A)ios_base::cur B)ios_base::beg C)ios_base::out D)ios_base::end

23

(17)下列字符串可以用作C++标识符的是 A)2009var B)goto C)test - 2009 D)_123

(18)下列枚举类型的定义中,包含枚举值3的是 A)enum test {RED, YELLOW, BLUE, BLACK}; B)enum test {RED, YELLOW=4, BLUE, BLACK}; C)enum test {RED=-1, YELLOW,BLUE, BLACK}; D)enum test {RED, YELLOW=6, BLUE, BLACK}; (19)有如下程序段: int i=1; while (1) { i++;

if(i == 10) break; if(i%2 == 0) cout << '*'; }

执行这个程序段输出字符*的个数是 A)10 B)3 C)4 D)5

(20)已知数组arr的定义如下: int arr[5] = {1,2,3,4,5}; 下列语句中输出结果不是2的是 A)cout << *arr+1 <

(21)计算斐波那契数列第n项的函数定义如下: Int fib(int n){

if (n == 0) return 1; else if (n == 1) return 2; else return fib(n-1)+fib(n-2); }

若执行函数调用表达式fib(2),函数fib被调用的次数是 A)1 B)2 C)3 D)4

(22)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是

Sample a[2], *p = new Sample; A)0

历年计算机C++二级真题及答案

B)1 C)2 D)3

(23)下列关于虚基类的描述中,错误的是 A)使用虚基类可以消除由多继承产生的二义性 B)构造派生类对象时,虚基类的构造函数只被调用一次 C)声明“class B : virtual public A”说明类B为虚基类 D)建立派生类对象时,首先调用虚基类的构造函数

(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是

A)不合法的运算符 B)一元运算符 C)无操作数的运算符 D)二元运算符

(25)有如下模板声明:

template class A; 下列声明中,与上述声明不等价的是 A)template class A; B)template class A; C)template class A; D)template class A;

(26)下列关于C++流的描述中,错误的是 A)cout>>'A'表达式可输出字符A B)eof()函数可以检测是否到达文件尾

C)对磁盘文件进行流操作时,必须包含头文件fstream D)以ios_base::out模式打开的文件不存在时,将自动建立一个新文件 27)有如下程序: #include using namespace std; class Toy{ public:

Toy(char* _n) { strcpy (name,_n); count++;} ~Toy(){ count--; }

char* GetName(){ return name; } static int getCount(){ return count; } private:

char name[10]; static int count; };

int Toy::count=0; int mail(){

Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”); cout<

24

return 0; }

运行时的输出结果是 A)1 B)2 C)3

D)运行时出错

(28)有如下程序 #include using namespace std; class A { public:

A(int i):rl(i) { }

void print( ) {cout<<'e'<

void print( ) const {cout<<'C'<

int main(){

A al(2); const A a2(4); al.print(); a2.print(); return 0; }

运行时的输出结果是 A)运行时出错 B)E2-C16- C)C4-C16- D)E2-E4-

29)有如下程序: #include using namespace std; class Name{ char name[20]; public: Name(){

strcpy(name,\cout<<'?'; }

Name(char *fname)){

strcpy(name,fname); cout<'?'; } };

int main(){

Name names[3]={Name(“张三”),Name(“李四”)}; Return 0; }

运行此程序输出符号?的个数是

历年计算机C++二级真题及答案

A)0 B)1 C)2 D)3

(30)有如下程序: #include using namespace std; public:

AA(){ cout<<'1'; } };

class BB: public AA{ int k; public:

BB():k(0){ cout<<'2'; } BB(int n):k(n){ cout<<'3';} }

int main(){ BB b(4), c; return 0; }

运行时的输出结果是

A)1312 D)132

(31)有如下程序: #include using namespace std; class C1{ public:

~C1(){ cout<<1; } };

Class C2: public c1{ public:

~c2(){ cout<<2; } };

int main(){ C2 cb2; C1 *cb1; return 0; }

运行时的输出结果是

A)121 B)21

(32)有如下程序 #include using namespace std; class Publication{ //出版物类char name[30]; public:

Publication(char *name=\未知名称\strcpy(this->name,name); }

const char * getName()const{ return name; }

virtual const char * getType()const{ return \未知类型\};

class Book: public Publication{ //书类 public:

Book(char *name): Publication(name){}

virtual const char * getType()const{ return \书\};

void showPublication( Publication &p){

cout<

int main(){

Book book(\精彩人生\showPublication(book); return 0; }

运行时的输出结果是

A)未知类型:未知名称 B)未知类型:精彩人生 C)32 D)1412 C)书:未知名称 D)书:精彩人生

(33)下列关于运算符重载的描述中,错误的是 A)::运算符不能重载

B)类型转换运算符只能作为成员函数重载

C)将运算符作为非成员函数重载时必须定义为友元 D)重载[]运算符应完成“下标访问”操作

(34)有如下程序: #include #include Using namespace std; int main(){ int s[]={123, 234};

cout<

运行时的输出结果是

C)211 D)12 A)123 B)***123 C)***123 D)***123 234 234 ***234 234***

(35)有如下类定义 class A { char *a; public: A():a(0){}

25

历年计算机C++二级真题及答案

A(char *aa){ //把aa所指字符串拷贝到a所指向的存储空间 a= ; strcpy(a,aa); strcpy(a,aa); }

~A() {delete []a;} };

横线处应填写的表达式是

A)nes char[strlen(aa)+1] B)char[strlen(aa)+1] C)char[strlen(aa)] D)new char[sizeof(aa)-1] 二、填空题(每空2分,共30分)

(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有 【1】 个结点。

(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有 【1】 个结点。

(2)程序流程图中的菱形框表示的是 【2】 。

(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中 【3】 阶段产生“软件需求规格说明书”。 (4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为 【4】 。 (5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是 【5】 。

(6)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 【6】 。 (7)有如下循环语句:

For(int i=50; i>20; i-=2) cout<

(8)利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句int *p=a;后,利用指针p也可访问该元素,相应的表达式是 【8】 。

(9)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。

void reverse(int *a, int size){ if(size<2) return; int k=a[0]; a[0]=a[size-1]; a[size-1]=k;

reverse(a+1, 【9】 ); }

(10)类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。 class Sample{ public:

Sample(int data=0); Private: Int data; };

26

Sample::Sample(int data){ 【10】 }

(11)有如下类定义: class Sample{ public: Sample(); ~Sample(); Private: Static int date; };

将静态数据成员data初始化为0的语句是 【11】 。

(12)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。 class Shape{ public:

virtual int CalArea()=0; }

class Triangle: public Shape{ public:

Triangle{int s, int h}: side(s),height(h) {} 【12】 { return side*height/2 ; } private: int side; int height; };

(13)有如下程序: #include using namespace std; class GrandChild{ public:

GrandChild(){ strcpy (name,\const char * getName()const { return name; } virtual char * getAddress()const=0; private: char name[20]; };

class GrandSon : public GrandChild{ public:

GrandSon{char *name} {}

Char * getAddress() const { return \};

int main(){

GrandChild *gs=new GrandSon(\

历年计算机C++二级真题及答案

cout<getName()<<\\delete gs; return 0; }

运行时的输出结果是 【13】 。

(14)如下程序定义了“单词”类word,类中重载了<运算符,用于比较“单词”的大小,返回相应的逻辑值。程序的输出结果为:After Sorting: Happy Welcome,请将程序补充完整。 #include #include using namespace std; class Word{ public:

Word(string s) : str(s) { } string getStr(){ return str; } 【14】 const { return (str

friend ostream& operator << (ostream& output, const Word &w)

{ output<

Int main(){

Word w1(\Cout<<\if(w1

(15)请将下列模板类Data补充完整。 template class Data{ public:

void put (T v) { val=v; }

【15】 get() //返回数据成员val的值,返回类型不加转换 { return val; } private: T val; };

2009年9月全国计算机等级考试二级C++笔试参考答案 选择题

(1)C (2)B (3)D (4)A (5)B

(13)B (14)C (15)B

27

(16)A (17)D (18)A (19)C (20)D (21)B (22)D (23)C (24)B (25)D (26)A (27)C (28)B (29)D (30)A (31)B (32)D (33)C (34)B (35)A 填空 (1)14 (2)判断 (3)需求分析 (4)多对多 (5)身份证号 (6)double (7)15 (8)*(p+i) (9)size-1

(10)this->data=data; (11)int Sample::data = 0; (12)int CalArea(size,height) (13)Unknown住在Shanghai (14)bool operator < (Word w) (15)T

2010年3月计算机等级考试二级C++笔试试题 一、选择题(每小题2分,共70分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是

A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)

C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)

D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n log2n) (2)算法的时间复杂度是指 A)算法的执行时间 B)算法所处理的数据量

C)算法程序中的语句或指令条数

D)算法在执行过程中所需要的基本运算次数

(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是 A)编辑软件 B)操作系统 C)教务管理系统 D)浏览器

(4)软件(程序)调试的任务是

(6)A (7)C (8)B (9)C (10)D (11)D (12)C A)诊断和改正程序中的错误

B)尽可能多地发现程序中的错误

历年计算机C++二级真题及答案

C)发现并改正程序中的所有错误 D)确定程序中错误的性质 (5)数据流程图(DFD图)是 A)软件概要设计的工具 B)软件详细设计的工具 C)结构化方法的需求分析工具 D)面向对象方法的需求分析工具

(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于 A)定义阶段 B)开发阶段 C)维护阶段 D)上述三个阶段

(7)数据库管理系统中负责数据模式定义的语言是 A)数据定义语言 B)数据管理语言 C)数据操纵语言 D)数据控制语言

(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是 A)文件 B)数据库 C)字段 D)记录

(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的 A)需求分析阶段 B)逻辑设计阶段 C)概念设计阶段 D)物理设计阶段

(10)有两个关系R和T如下:

D)函数不能被定义为模板

(12)若MyClass是一个类名,且有如下语句序列 MyClass c1,*c2;

MyClass *c3=new MyClass; MyClass &c4=c1;

上面的语句序列所定义的类对象的个数是 A)1 B)2 C)3 D)4

(13)下列关于继承方式的描述中,错误的是

A)如果不显式地指定继承方式,缺省的继承方式是私有(private)

B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员

C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员

D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员

(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是 A)Decr& operator --(int); B)Decr operator --( Decr&,int); C)friend Decr& operator --(Decr&); D)frlend Decr operator --(Decr&,int);

(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列 MyTempp2; MyTempp3[2];

编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是 A)1 B)2 C)3 D)0

(16)在C++中,cin是个 A)类

则由关系R得到关系T的操作是 A)选择 B)投影 C)交 D)并

(11)下列关于函数的描述中,错误的是 A)函数可以没有返回值 B)函数可以没有参数 C)函数可以是一个类的成员

28

B)对象 C)模板 D)函数

(17)在下列字符中,不允许作为C++标识符的是 A)b B)B C)_ D)2

(18)下列叙述中,错误的是 A)false是一个逻辑型常量 B)\是一个字符型常量

历年计算机C++二级真题及答案

C)365是一个int常量

D)3.1415926是一个double常量

(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是

A)if(x==0) y=1; else y=2; B)if(x==0) then y=1 else y=2; C)if(x==0) y=1 else y=2; D)if x==0 y=1; else y=2;

(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是 A)int x[3]={0,0,0}; B)int x[]={0}; C)static int x[3]={0}; D)int x[]={0,0,0};

(21)关于函数中的<返回类型>,下列表述中错误的是 A)<返回类型>中有可能包含关键字int B)<返回类型>中有可能包含自定义标识符 C)<返回类型>中有可能包含字符* D)<返回类型>中可能包含[]

(22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是 A)MyClass p=MyClass; B)MyClass p=new MyClass; C)MyClass &p=new MyClass; D) MyClass a,&p=a; (23)有如下两个类定义 class XX{ private: double x1; protected: double x2; public: double x3; };

class YY:protected XX{ private: double y1; protected: double y2; public: double y3; };

在类YY中保护成员变量的个数是 A)1 B)2 C)3 D)4

(24)下列关于运算符重载的描述中,错误的是

29

A)可以通过运算符重载在C++中创建新的运算符 B)赋值运算符只能重载为成员函数

C)运算符函数重载为类的成员函数时,第一操作数是该类对象

D)重载类型转换运算符时不需要声明返回类型 (25)下列关于类模板的描述中,错误的是 A)类模板的成员函数都是模板函数 B)可以为类模板参数设置默认值 C)类模板描述了一组类

D)类模板中只允许有一个类型参数

(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是

A)setprecision B)setw C)setfill

D)showpoint(27)下列程序段中包含4个函数,其中具有隐含this指针的是 int fun1(); class Test{ public: int fun2(); friend int fun3(); static int fun4(); }; A)fun1 B)fun2 C)fun3 D)fun4 (28)有如下程序 #include

using namespace std; class Test{ public: Test(){ }

Test(const Test &t) {cout<<1;} };

Test fun(Test &u) {Test t=u; return t;} int main(){Test x,y; x=fun(y); return 0;} 运行这个程序的输出结果是 A)无输出 B)1 C)11 D)111

(29)有如下程序 #include

using namespace std; class A{ public:

历年计算机C++二级真题及答案

A(int i=0):r1(i) { }

void print() {cout<<'E’< void print() const {cout<<'C'< void print(int x) {cout <<'P'< Derived obj12(2,3); retuen 0; }

运行时的输出结果是 private: int r1; };

int main() { A a1;

const A a2(4); a1.print(2); a1.print(); return 0; }

运行时的输出结果是 A)P8-E4 B)P8-C16- C)P0-E4- D)P0-C16-

(30)下列代码声明了3个类 class Person{};

class Student:public Person{}; class Undergraduate:Student{};

下列关于这些类之间关系的描述中,错误的是 A)类Person是类Undergraduate的基类 B)类Undergraduate从类Student公有继承 C)类Student是类Person的派生类 D)类Undergraduate是类Person的派生类

(31)有如下程序 #include

using namespace std; Class Base{ public:

Base(int x=0):valB(x) {cout< ~Base() {cout< private: int valB; };

class Derived:public Base{ public:

Derived(int

y=0):Base(x),valD(y){cout< ~Derived() {cout< private: int valD; };

int main(){

A)2332 B)2323 C)3232 D)3223

(32)下面是类Shape的定义: class Shape{ public:

virtual void Draw()=0; };

下列关于Shape类的描述中,正确的是 A)类Shape是虚基类 B)类Shape是抽象类

C)类Shape中的Draw函数声明有误

D)语句“Shape s;”能够建立Shape的一个对象s (33)将运算符“+”重载为非成员函数,下列原型声明中,错误的是

A)MyClock operator + (MyClock,long); B)MyClock operator + (MyClock,MyClock); C)MyClock operator + (long,long); D)MyClock operator + (long,MyClock);

(34)打开文件时可单独或组合使用下列文件打开模式 ①ios_base::app ②ios_base::binary ③ios_base::in ④ios_base::out

若要以二进制读方式打开一个文件,需使用的文件打开模式为

A)①③ B)①④ C)②③ D)②④

(35)有如下程序: #include

using namespace std; Class B{ public:

B(int xx):x(xx) {++cout; x+=10;} virtual void show() const

{cout< x=0,int

protected: static int count; private: int x; };

class D:public B{ public:

30

历年计算机C++二级真题及答案

D(int xx,int yy):B(xx),y(yy) {++count; y+=100;} virtual void show() const

{cout< private: int y; };

int B::count=0; int main(){

B *ptr=new D(10,20); ptr->show(); delete ptr; return 0; }

运行时的输出结果是 A)1_120 B)2_120 C)1_20 D)2_20

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

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

(1)一个队列的初始状态为空。现将元素

A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为 【1】 。

(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有 【2】 个元素。 (3)设二叉树如下:

(7)在执行语句序列

int i=0; do i++; while(i*i<10);

时,do后面的循环体语句i++被执行的次数为 【7】 。 (8)有如下的函数定义: int Xfun(int *a, int n){ int x=*a;

for(int *pa=a+1; pa<> if(*pa>x) x=*pa; return x; }

若执行了语句

int x[5]={23,46,78,55,16};

后,通过表达式Xfun(x,5)调用该函数,则得到的返回值为 【8】 。

(9)有如下的函数定义: int Xfun(int x){ int y=x;

{int x=10; y+=x;} return x+y; }

通过表达式Xfun(5)调用该函数,则得到的返回值为 【9】 。 (10)假定Xcs是一个类,该类中一个成员函数的原型为“Xcs *abc();”,则在类外定义时对应的函数头为 【10】 。 (11)请将下面的类Date的定义补充完整,使得由语句 Date FirstDay;

定义的对象FirstDay的值为2010年1月1日。 class Date{ public:

Date( 【11】 ):year(y),month(m),day(d){ } private:

int year,month,day; //依次表示年、月、日 };

(12)请将下面的程序补充完整,使得程序输出“飘是张娜的书”。 #include

using namespace std; class Book{ public:

对该二叉树进行后序遍历的结果为 【3】 。 (4)软件是 【4】 、数据和文档的集合。

(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号, 【5】 ,成绩)。 (6)若x和y是两个整形变量,在执行了语句序列 x=5; y=6; y+=x--; 后,x+y的值为 【6】 。

31

Book(char *str) {strcpy(title,str);}

【12】 void PrintInfo() {cout< protected: char title[50]; };

class MyBook:public Book{ public:

MyBook(char *s1,char *s2=\张娜\【13】 {strcpy(owner,s2);}

virtual

void

PrintInfo()

{cout<

历年计算机C++二级真题及答案

\的书\ private: char owner[10]; };

int main(){

Book *prt=new MyBook(\飘\ prt->PrintInfo(); return 0; }

(13)在有理数类Rational中重载插入运算符<<,以便按a/q形式输出。请将<<运算符函数的定义补充完整。 class Rational{ public:

Rational(int aa, int qq):a(aa),q(qq){ }

friend 【14】 operator<<(ostream &out, Rational &x) {

return (out< } private: int a,q; };

(14)下面的函数定义是某函数模板能够生成的函数实例 int square(int n) {return n*n;}

double square(double n) {return n*n;} 由此可知,该函数模板的定义是 【15】 。

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。

(1)下列叙述中正确的是

A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D)上述三种说法都不对

(2)下列叙述中正确的是

A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D)上述三种说法都不对

(3)软件测试的目的是 A)评估软件可靠性

B)发现并改正程序中的错误 C)改正程序中的错误 D)发现程序中的错误

(4)下面描述中,不属于软件危机表现的是 A)软件过程不规范 B)软件开发生产率低 C)软件质量难以控制 D)软件成本不断提高

(5)软件生命周期是指

A)软件产品从提出、实现、使用维护到停止使用退役的过程

B)软件从需求分析、设计、实现到测试完成的过程

C)软件的开发过程 D)软件的运行维护过程

(6)面向对象方法中,继承是指

32

(15)[15] 25

全国计算机等级考试二级笔试试卷答案及评分标准

(2004年9月)

选择题((1)—(35)每小题2分,共70分)

(1) C (2) C (3) B (4) A (5) D

(6) B (7) D (8) B (9) C (10)A (11)D (12)D (13)C (14)D (15)A (16)A (17)D (18)B (19)D (20)C (21)B (22)A (23)B (24)B (25)C (26)D (27)C (28)A (29)A (30)C (31)C (32)B (33)D (34)B (35)B

二、填空题(每空2分,共30分) (1)[1] 时间

(2)[2] 存储结构 或 物理结构 或 物理存储结构 (3)[3] 黑盒 或 黑箱

(4)[4] 一对多 或 1对多 或 I:M 或 I:N(其中M、N大小写均可)

(5)[5] 投影 (6)[6] 60 (10)[10] 7

(7)[7] 编译

(8)[8] friend

(9)[9] A(aa),c(aa+1) 或 c(aa+1),A(aa)

(11)[11] 042

(12)[12] n*fact(n-1)

(13)[13] 3,3.14

(14)[14] (*p).name

2010年9月全国计算机二级C++笔试试题:文字版 一、选择题(每小题2分,共70分)

历年计算机C++二级真题及答案

A)一组对象所具有的相似性质 B)一个对象具有另一个对象的性质 C)各对象之间的共同性质 D)类之间共享属性和操作的机制

(7)层次型、网状型和关系型数据库划分原则是 A)记录长度 B)文件的大小 C)联系的复杂程度 D)数据之间的联系方式

(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是 A)一对一 B)一对多 C)多对多 D)多对一

(9)数据库设计中反映用户对数据要求的模式是 A)内模式 B)概念模式 C)外模式 D)设计模式

(10)有三个关系R、S和T如下:

A)定义对象的时候不能对对象进行初始化 B)定义对象之后可以显式地调用构造函数进行初始化

C)定义对象时将自动调用构造函数进行初始化 D)在一个类中必须显式地定义构造函数实现初始化

(13)下列关于基类和派生类关系的叙述中,正确的是

A)每个类最多只能有一个直接基类

B)派生类中的成员可以访问基类中的任何成员 C)基类的构造函数必须在派生类的构造函数体中调用

D)派生类除了继承基类的成员,还可以定义新的成员

(14)下列关于赋值运算符“=”重载的叙述中,正确的是

A)赋值运算符只能作为类的成员函数重载 B)默认的赋值运算符实现了“深层复制”功能 C)重载的赋值运算符函数有两个本类对象作为形参

D)如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符

(15)下列关于模板的叙述中,正确的是 A)如果一个类中存在纯虚函数,这个类就是类模板

B)函数模板不能有形式参数表

C)类模板是一种参数化类型的类,是类的生成器 D)类模板中不能包含构造函数

(16)下列关于C++预定义流对象的叙述中,正确的是

A)cin是C++预定义的标准输入流对象 B)cin是C++预定义的标准输入流类 C)cout是C++预定义的标准输入流对象 D)cout是C++预定义的标准输入流类

(17)下列选项中,正确的C++标识符是 A)6_group B)group~6 C)age+3

33

则由关系R和S得到关系T的操作是 A)自然连接 B)交 C)投影 D)并

(11)下列关于函数参数的叙述中,正确的是 A)在函数原型中不必声明形参类型 B)函数的实参和形参共享内存空间

C)函数形参的生存期与整个程序的运行期相向 D)函数的形参在函数被调用时获得初始值

(12)下列关于对象初始化的叙述中,正确的是

历年计算机C++二级真题及答案

D)_group_6

(18)下列选项中,正确的C++表达式是 D)‘a‘=b

(19)下列循环语句中有语法错误的是

A)int i; for( i=1; i<10;i++)cout<<‘*‘; B)int i,j;for(i=1,j=0;i<10;i++,j++)cout<<‘*‘;

C)int i=0;for(;i<10;i++)cout<<‘ *‘; D)for(1)cout<<‘*‘;

(20)下列定义语句中,错误的是 A)int px*; B)char*acp[10]; C)char(*pac)[10]; D)int(*p)();

(21)下列函数原型声明中,错误的是 A)int fnction(int m,int n); B)int function(int,int); C)int function(int m=3,int n); D)int function(int &m,int&n);

(22)若MyClass为一个类,执行“MyClass a[4],*p[5];”语句时会自动调用该类构造函数的次数是 A)2 B)5 C)4 D)9

(23)若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为 A)x.Operator/(Y) B)operator/(x,Y) C)Y.operator/(x) D)operator/(y,x)

(24)若要重载+、=、<<、=和[]运算符,则必须作为类成员重载的运算符是 A)+和= B)=和<< C)==和<< D)=和[]

34

(25)有函数模板声明和一些变量定义如下: template

则下列调用中,错误的是

A)sum(d1,d2); C)sum(d1,d2); D)sum(d1,d2);

(26)有如下语句序列: char str[10];cin>>str;

当从键盘输入”I love this game”时,str中的字符串是

A)\ B)\ C)\ D)\

(27)有如下程序: #include #include using std::cout; class Point{ public:

friend double distance(const Point &p); //p距原点的距离

Point(int xx=0,int yy=0):x (xx),Y(YY){}//① private: Int x,Y; };

double distance(const Point &p) { //②

return sqrt(p.x*p.x+p.Y*p.Y); }

int main(){ Point p1(3,4);

cout<

return 0; }

下列叙述中正确的是

A)counter++3 B)element3+ C)a+=b double dl,d2;

历年计算机C++二级真题及答案

A)程序编译正确

B)程序编译时语句①出错 C)程序编译时语句②出错 D)程序编译时语句③出错

(28)有如下程序: #include using namespace std; class CD{ public:

~CD(){cout<<’C’;} private: char name[80]; };

int main(){CD a,*b,d[2];return 0;} 运行时的输出结果是

A)CCCC B)CCC C)CC D)C

(29)某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是 A)const void Show(); B)void const Show(); C)void Show()const; D)void Show(const);

(30)若已定义了类Vehicle,则下列派生类定义中,错误的是

A)class Car:Vehicle{/*类体略*/}, B)class Car:public Car{/*类体略*/}; C)class Car:public Vehicle{/*类体略*/}; D)class Car:virtual public Vehicle{/*类体略*/};

(31)有如下程序: #include using namespace std; class Music{ public:

void setTitle(char*str){strcpy(title,str);} protected: char type[10]; private:

35

char title[20]; };

class Jazz:public Music{ public:

void set(char* str){

strcpy(type,\); //① strcpy(title,str); //② } };

下列叙述中正确的是

A)程序编译正确一 B)程序编译时语句①出错

C)程序编译时语句②出错 D)程序编译时语句①和②都出错 (32)有如下程序: #include using namespace std; class Instrument{ public:

virtual void Display()=0; };

class Piano:public Instrument{ public:

void Display(){/*函数体程序略*/} };

int, main(){ Instrument s; Instrument*p=0; //...; return 0; }

下列叙述中正确的是

A)语句“Insturment *p=0;”编译时出错 B)语句“Instruments;”编译时出错 C)类Piano中的Display函数不是虚函数 D)类Instrumen七是一个虚基类

(33)有类定义如下:气 class Type { public:

Type (int i=0); Tvpe operator -(int);

历年计算机C++二级真题及答案

friend Type operator + (Type, Type ); private: int val;

若有对象定义Type cl;则下列语句序列中,错误的是

A)Type(3)+c1; B)cl+Type(3); C)3-cl; D)c1-3; (34)有如下程序: #include #include using namespace std;_ int main(){

Cout<

Cout<<12.3456793<<_______<<98765; return 0; }

若程厚的输出是12.345679x98765xxxxx,则划线处缺失的部分是

C)virtual char*Category()const; D)virtual char*Category()const=0; 二、填空题(每空2分,共30分)

请将每一个空的正确答案写在答题卡【1】-【15】序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。

(1)一个栈的初始状态为空。首先将元素5,4,3,2,1 依次入栈,然后退栈一次,再将元素A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为__【1】__。

(2)在长度为n的线性表中,寻找最大项至少需要比较___【2】___次。

(3)一棵二叉树有10个度为1的结点,7个度为2的

结点,则该二叉树共有__【3】___个

A)setw(10) B)setfill('x') C)setprecision(8) 结点。

D)right

(35)有如下程序: #include

using namespace std; class Book{

public:

Book(char* t=\){strcpy(titie,t); } _____________________________ private:

Char title[40];

};

class Novel:public Book{

public:

Novel(char*t=\):B00K (t){}

char*Category()const { return” \文学\} };

Book*pb;

pb=new Novel(); Cout<Category(); return 0;

(4)仅由顺序、选择(分支)和重复(循环)结构构成的程序是_【4】__程序。

(5)数据库设计的四个阶段是:需求分析,概念设计,逻辑设计和_【5】_。

(6)如果一个派生类只有一个直接基类,则该类的继承方式称为_【6】_继承;如果一个派生类同时有多个直接基类,则该类的继承方式称为_【7】_继承。

(7)运算符“+”允许重载为类成员函数,或者非成员函数。若用operator+(c1, c2)这样的表达式来使用运算符“+”,应将“+”重载为_【8】_函数。

(8)下列程序的输出是3,请填充程序中的空缺,使该行形成一个运算符重载函数的定义。 #include using namespace std; class MyNumber{ int n; public:

MyNumber(int k):n(k){}

36

int main(){

若程序运行时输出结果是“文学”,则划线处缺失的语句是

A)char* Category(); B)char*Category()const;

历年计算机C++二级真题及答案

_【9】_int()const{return n,} };

int main(){ MyNumber numl(3); Cout<

(9)下列程序的输出结果是_【10】__。 #include using namespace std; class Base{ public: int m,n;

Base(int i,int j):m(i),n(j){} };

class Derived:public Base{ public: int m, k;

Derived(int i,int j):Base(i,j),m(i+1),k(j+1){} };

int main(){ Derived d(1;5);

Cout<

(10)根据程序中的注释将下列缺失部分补充完整。 class A{ char*a; public: A():a(0){}

A(char *aa){//把aa所指字符串复制给a所指向的存储空间

a=__【11】__char[strlen(aa)+1]; strcpy(a,aa); }

~A(){delete[]a;} };

(11)根据程序中的注释将下列缺失部分补充完整。

class Point{

37

int x, y; //点的x和y坐标 public:

Point(int xx=0,int yy=。):x(xx),y(yy){} };

class Circle{

Point center;//圆心位置 int radius; //半径

public: //利用cx和cy分别初始化圆心的x和y坐标

Circle(int cx;int cy,int r):__【12】__,radius(r){}

void area(){cout<<3.14159*radius*radius<

(12)一网喂序的输出结果是__【13】__。 #include<iostream> using namespace std; class Base{ Int x; Public:

Base(int b):x(b){}

virtual void display(){cout<

class Derived:public Base{ Int y; public:

Derived(int d):Base(d),y(d){} void display(){cout<

int main(){

Base b(1);Derived d(2); Base*p=&d;

b .display();d.display();p一>display();

return 0; }

(13)一个双目运算符作为类的成员函数重载时,重载函数的参数表中有__【14】__个参数。

(14)派生类中的成员函数可以直接访问基类中的

历年计算机C++二级真题及答案

公有成员和__【15】__成员。

2011年3月计算机等级考试二级C++笔试:文字版

D)PAD图是软件详细设计的表示工具 (7)负责数据库中查询操作的数据库语言是

一、选择题

(1)下列关于栈叙述正确的是 A)栈顶元素最先能被删除 B)栈顶元素最后才能被删除 C)栈底元素永远不能被删除 D)以上三种说法都不对

C)m:1联系 D)m:n联系

(2)下列叙述中正确的是

(9)有三个关系R、S和T如下:

A)有一个以上根结点的数据结构不一定是非线性结构 B)只有一个根结点的数据结构不一定是线性结构 C)循环链表是非线性结构D)双向链表是非线性结构

则由关系R和S得到关系T的操作是

(3)某二叉树共有7个结点,其中叶子结点只有1个,

A)自然连接 B)交

则该二叉树的深度为(假设根结点在第1层)

C)除 D)并

A)3 B)4 C)6 D)7

(10)定义无符号整数类为UInt,下面可以作为类

(4)在软件开发中,需求分析阶段产生的主要文档是

UInt实例化值的是

A)软件集成测试计划 B)软件详细设计说明书

A)-369 B)369

C)用户手册 D)软件需求规格说明书

C)0.369 D)整数集合{1,2,3,4,5}

(5)结构化程序所要求的基本结构不包括

(11)为了提高函数调用的实际运行速度,可以将较简

A)顺序结构 B)GOTO跳转 C)选择(分支)结构 D)重复(循环)结构 (6)下面描述中错误的是

A)系统总体结构图支持软件系统的详细设计 B)软件设计是将软件需求转换为软件表示的过程 C)数据结构与数据库设计是软件设计的任务之一

38

A)数据定义语言 B)数据管理语言 C)数据操纵语言 D)数据控制语言

(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是

A)1:1联系 B)1:m联系

单的函数定义为

A)内联函数 B)重载函数 C)递归函数 D)函数模板

(12)若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为

历年计算机C++二级真题及答案

A)a B)AA.a C)a() D)AA::a()

(13)当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是

A)任何 B)公有或保护 C)保护或私有D)私有

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

A)Data+(Data); B)Data operator+(Data); C)Data+operator(Data); D)operator+(Data,Data); (15)下列关于函数模板的描述中,正确的是

A)函数模板是一个实例函数

B)使用函数模板定义的函数没有返回类型 C)函数模板的类型参数与函数的参数相同 D)通过使用不同的类型参数,可以从函数模板得到不同的实例函数

(16) C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是

A)cout B)cin C)cerr D)cset

(17)Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是

A)cpp B)exe C)obj D)lik (18)字符串“a+b=12\\n\\t”的长度为

A)12 B)10 C)8 D)6 (19)有如下程序:

#include

39 using namespace std; int main(){ int f,f1=0,f2=1; for(int i=3;i<=6;i++){ f=f1+f2; f1=f2;f2=f; }

cout< return 0; }

运行时的输出结果是

A)2 B)3 C)5 D)8 (20)有如下程序: #include

using namespace std; int main(){

int a[6]={23,15,64,33,40,58}; int s1,s2; s1=s2=a[0];

for(int* p=a+1;p if(s1>*p) s1=*p; if(s2<*p) s2=*p; }

cout< return 0; }

运行时的输出结果是

A)23 B)58 C)64 D)79

历年计算机C++二级真题及答案

(21)有如下程序: #include

using namespace std;

void f1(int& x,int& y) {int z=x; x=y; y=z;} void f2(int x;int y) {int z=x; x=y; y=z;} int main(){

int x=10,y=26;

f1(x,y);

f2(x,y);

cout< return 0;

}

运行时的输出结果是 A)10 B)16 C)26 D)36

(22)有如下程序: #include

using namespace std; class XA{ int a; public: static int b;

XA(int aa):a(aa) {b++;} ~XA(){}

int get(){return a;} };

int XA::b=0;

int main(){ XA d1(2),d2(3); cout< }

运行时的输出结果是

A)5 B)6 C)7 D)8

(23)有如下程序:

#include

using namespace std;

class Point{

int x,y;

public:

Point(int x1=0,int y1=0):x(x1),y(y1){} int get(){return x+y;} };

class Circle{ Point center; int radius; public:

Circle(int cx,int cy,int r):center(cx,cy),raaius(r){} int get(){return center.get()+radius;} }; int main(){ Circle c(3,4,5); cout< return 0;

40 历年计算机C++二级真题及答案

}

运行时的输出结果是

A)5 B)7 C)9 D)12

(28)下列关于构造函数的描述中,错误的是 A)构造函数名与类名相同 B)构造函数可以有返回值

(24)若要对类BigNumber中重载的类型转

C)构造函数可以重载

换运算符long进行声明,下列选项中正确的是

D)每个类都有构造函数

A)operator long() const;

(29)若PAT是一个类,则程序运行时,语

B)operator long(BigNumber);

句“PAT(*ad)[3];”调用PAT的构造函数的次数是

C)long operator long() const;

A)0 B)1 C)2 D)3

D)long operator long(BigNumber);

(30)下列描述中,错误的是

(25)有如下函数模板定义:

A)公有继承时基类中的公有成员在派生类中

template

T1 FUN(T2 n){return n*5.0;}

若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为

仍是公有成员

A)FUN(9) B)FUN<9> C)FUN(9) D)FUN<9>(double)

(26)下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是

A)cout< B)cout< C)cout< D)cout< (27)下列关于析构函数的描述中,错误的是

A)析构函数可以重载 B)析构函数由系统自动调用

C)每个对象的析构函数只被调用一次 D)每个类都有析构函数

D)保护继承时基类中的保护成员在派生类中仍是保护成员

(31)生成派生类对象时,派生类构造函数调用基类构造函数的条件是

A)无需任何条件

B)基类中显式定义了构造函数 C)派生类中显式定义了构造函数

D)派生类构造函数明确调用了基类构造函数 (32)下列关于派生类和基类的描述中,正确的是

A)派生类成员函数只能访问基类的公有成员 B)派生类成员函数只能访问基类的公有和保

41 仍是公有成员

B)公有继承时基类中的保护成员在派生类中仍是保护成员

C)保护继承时基类中的公有成员在派生类中

历年计算机C++二级真题及答案

护成员

C)派生类成员函数可以访问基类的所有成员

#include

using namespace std;

D)派生类对基类的默认继承方式是公有继承

class Pair{

(33)有如下类模板定义:

int m,n;

template

public:

class BigNumber{

Pair(int j,int k):m(j),n(k){}

long n;

int get() {return m;}

public:

int get() const {return m+n;}

BigNumber(T i):n(i){}

};

BigNumber operator+(BigNumber b){

int main(){

return BigNumber(n+b.n);

Pair a(3,5);

}

const Pair b(3,5);

};

cout+a.get()< return 0;

己知b1、b2是BigNumber的两个对象,则下

}

列表达式中错误的是

A)bl+b2 B)b1+3 C)3+b1 D)3+3

(34)下列关于文件流的描述中,正确的是 A)文件流只能完成针对磁盘文件的输入输出 B)建立一个文件流对象时,必须同时打开一个文件

C)若输入流要打开的文件不存在,将建立一

(3)对软件设计的最小单位(模块或程序单元)

个新文件

D)若输出流要打开的文件不存在,将建立一个新文件

(35)有如下程序:

进行的测试通常称为 【3】 测试。

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

42

运行时的输出结果是

A)33 B)38 C)83 D)88

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF。则后序遍历结果为 【2】 。

历年计算机C++二级真题及答案

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

(6)若有定义语句“int x=10,y=20,z=20;”,

入语句 【10】 。

(11)下列程序的输出结果为012,请根据注释将横线处的缺失部分补充完整。

#include

using namespace std;

则表达式x>z&&y==z的值为 【6】 。

class Test{

(7)有如下语句序列:

public:

int x=-10;while(++x){ }

Test(int a) {data=a;}

运行时while循环体的执行次数为 【7】 。

~Test() {}

(8)有如下语句序列:

void print(){cout< private:

int arr[2][2]={{9,8},{7,6}};

int data;

int *p=arr[0]+1; cout<<*p< 运行时的输出

};

结果是 【8】 。

int main(){

(9)函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。

int fun(char *str){ int num=0; while(*str){ num*=10; num+= 【9】 ; str++; }

return num; }

(10)若要将函数“void FriFun();”声明为类MyClass的友元函数,则应在类MyClass的定义中加

43 Test t[3]={ 【11】 };//对有3个元素的Test类对象数组t初始化t[i].print();

for(int i=0;i<3;i++) return 0; }

(12)请在横线处填写派生类Derived的继承方式,使得程序的输出结果为Base。

#include

using namespace std; class Base{ public:

void print(){cout<<\

历年计算机C++二级真题及答案

};

class Derived: 【12】 Base{}; int main(){ Derived d; d.print(); return 0; }

d1.print(); d2.print(); return 0; }

(14)下列程序的输出结果为-5/8 -3/4,请将横线处的缺失部分补充完整。

#include

using namespace std;

(13)下列程序的输出结果为1 2.3 2 4.6,请将横线处的缺失部分补充完整。

#include

using namespace std; class Base{ public:

Base(int a):idata(a){} void print(){cout< private:

【14】

int idata;

return f;

};

}

class Derived:public Base{

void print(){ cout< private:

public:

double num; //分子

Derived(int a;double b): 【13】 ,ddata(b){}

double den; //分母

void print(){Base::print();cout< private:

};

double ddata;

int main(){

};

Fraction f1(5;8),f2(3,4);

int main(){

(-f1).print();(-f2).print();

Derived dl(1,2.3),d2(2,4.6);

44 class Fraction{ //“分数”类 public:

Fraction(double a,double b):num(a),den(b){} ~Fraction(){}

//重载取负运算符“-”,返回一个分数对象,其分子是原来分子的相反数。

Fraction operator-(){

历年计算机C++二级真题及答案

return 0; }

(15)函数Min的功能是返回具有n个元素的数组array中的最小值。请将横线处的缺失部分补充完 int main(){ double

arr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};

cout<< 【15】 ; 整,使得程序的输出结果为1.24。

#include

using namespace std; template

T Min(T* array,int n){ T min=array[0];

for(int i=1;i if(array[i] }

return min; return 0}

45

历年计算机C++二级真题及答案

46