全国计算机等级考试二级c历年真题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全国计算机等级考试二级笔试试卷
公共基础知识及C++语言程序设计
考试时间90分钟,满分100分
一、选择题1~35每小题2分,共70分
下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分;
1 下面叙述正确的是
A算法的执行效率与数据的存储结构无关
B算法的空间复杂度是指算法程序中指令或语句的条数
C算法的有穷性是指算法必须能在执行有限个步骤之后终止
D以上三种描述都不对
2以下数据结构中不属于线性数据结构的是
A队列 B线性表 C二叉树 D栈
3在一棵二叉树上第5层的结点数最多是
A8 B16 C32 D15
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在面向对象的程序设计中,结构化程序设计方法仍有着重要作用
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;
switchn
{ case 1:
case 2: cout << '1';
case 3:
case 4: cout << '2'; break;
default: cout << '3';
}
时,若键盘输入1,则屏幕显示
A1 B2 C3 D12
15下列程序的输出结果是
include <iostream>
using namespace std;
int main
{
char a = "Hello, World";
char ptr = a;
while ptr
{
if ptr >= 'a' && ptr <= 'z'
cout << charptr + 'A' -'a';
else cout << ptr;
ptr++;
}
return 0;
}
A HELLO, WORLD
B Hello, World
C hELLO, wORL
D 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 Funint x=0, int y=0;
B void Funint x, int y;
C void Funint x, int y=0;
D void Funint x=0, int y;
18已知程序中已经定义了函数test,其原型是int testint, int, int;,则下列重载形式中正确的是
A char testint,int,int;
B double testint,int,double;
C int testint,int,int=0;
D float testint,int,float=3.5F;
19有以下程序
include<iostream>
int i = 0;
void fun
{ {
static int i = 1;
std::cout<<i++<<',';
}
std::cout<<i<<',';
}
int main
{
fun; fun;
return 0;
}
程序执行后的输出结果是
A1,2,1,2, B1,2,2,3, C2,0,3,0, D1,0,2,0,
20已知函数f的原型是:void fint a, long &b; 变量v1、v2的定义是:int v1;long v2;,正确的调用语句是A fv1, &v2; B fv1, v2;
C f&v1, v2;
D f&v1, &v2;
21有以下类定义
class MyClass
{
public:
MyClass{cout<<1;}
};
则执行语句MyClass a, b2, p2;后,程序的输出结果是A11 B111 C1111 D11111
22关于友元,下列说法错误的是
A如果类A是类B的友元,那么类B也是类A的友元
B如果函数fun被说明为类A的友元,那么在fun中可以访问类A的私有成员
C友元关系不能被继承
D如果类A是类B的友元,那么类A的所有成员函数都是类B的友元
23关于动态存储分配,下列说法正确的是Anew和delete是C++语言中专门用于动态内存分配和释放的函数
B动态分配的内存空间也可以被初始化
C当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间
D当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
24有以下程序
include<iostream>
using namespace std;
class MyClass
{
public:
MyClassint n{number = n;}
//拷贝构造函数
MyClassMyClass &other{ number=other.number;}
~MyClass{}
private:
int number;
};
MyClass funMyClass p
{
MyClass tempp;
return temp;
}
int main
{
MyClass obj110, obj20;
MyClass obj3obj1;
obj2=funobj3;
return 0;
}
程序执行时,MyClass类的拷贝构造函数被调用的次数是
A5 B4 C3 D2
25在公有派生的情况下,派生类中定义的成员函数只能访问原基类的
A公有成员和私有成员 B私有成员和保护成员
C公有成员和保护成员 D私有成员、保护成员和公有成员
26在C++中用来实现运行时多态性的是
A重载函数 B析构函数
C构造函数 D虚函数
27一个类可以同时继承多个类,称为多继承;下列关于多继承和虚基类的表述中,错误的是
A每个派生类的构造函数都要为虚基类构造函数提供实参
B多继承时有可能出现对基类成员访问的二义性问题
C使用虚基类可以解决二义性问题并实现运行时的多态性
D建立最派生类对象时,虚基类的构造函数会首先被调用
28在一个类体的下列声明中,正确的纯虚函数声明是
A virtual void vf=0;
B void vfint=0;
C virtual int vfint;
D virtual void vfint { }
29在下面的运算符重载函数的原型中,错误的是
A Volume operator - double, double;
B double Volume::operator- double;
C Volume Volume: :operator - Volume;
D Volume operator - Volume, Volume;
30下列是模板声明的开始部分,其中正确的是
A template<T>
B template<class T1,T2>
C template<class T1, class T2>
D template<class T1;class T2>
31执行语句序列
ofstream outfile"DATA.DAT";
if... cout << "OK"; else cout << "FAIL";
后,如果文件打开成功显示“OK”,否则就显示“F厶n;”;由此可知,上面if语句的...
处的表达式应是
A outfile.fail 或 outfile
B outfile.good 或outfile
C outfile.good 或outfile
D outfile.fail 或outfile
32C++流中重载的运算符>>是一个
A用于输出操作的非成员函数 B用于输入操作的非成员函数
C用于输出操作的成员函数 D用于输入操作的成员函数
33有以下类定义
class Point {
public:
Pointint x = 0, int y = 0 { _.x = x; _.y = y; } void Moveint 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.Movel, 2;
D const Point pt; pt.Movel, 2; 34有以下类定义
class MyClass
{
private:
int id;
char gender,
char phone;
public:
MyClass:id0,gender'',phoneNULL { }
MyClassint no, char ge='', char ph= NULl. { id=no;gende=ge;phone=ph; }
};
下列类对象定义语句中错误的是
A MyClass myObj;
BMyClassmyObj11,"133****1155";
C MyClass myObj12, 'm';
D MyClass myObj12;
35有以下程序
include <iostream>
using namespace std;
class Complex
{
public:
Complexdouble r =0, double i =0:rer, imi { } double real const { return re; }
double imag const { return im;}
Complex operator +Complex c const
{ return Complexre+c.re, im+c.im; } private:
double re, im;
};
int main
{
Complex a = Complexl, 1 + Complex5;
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:
Aint aa=0 { a=aa; }
};
class B: public A {
int b;
A c;
public:
//用aa初始化基类A,用aa+1初始化类对象成员c Bint aa: 9 { b=aa+2; }
};
10下列程序的输出结果是 10 ;
include <iostream>
using namespace std;
int main
{
int i = 5;
int &r = i; r = 7;
cout << i << endl;
return 0;
}
11下列程序的输出结果是 11 ;
include <iostream>
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=nn-1 (21)
unsigned factunsigned n
{
if n<= 1
return 1;
return 12 ;
}
13下列程序的输出结果是 13 ;
include <iostream>
using namespace std;
template<tytename T>
T funT a, T b { return a<=b :b;}
int main
{
cout << fun3, 6 << ',' << fun 3.14F, 6.28F << endl;
return 0;
}
14与成员访问表达式p->name等价的表达式是 14 ; 15下列程序的输出结果是 15 ;
include <iostream>
using namespace std;
class base {
public:
int n;
baseint x { n = x;}
virtual void setint m { n = m; cout << n <<' ';}
};
class deriveA:public base {
public:
deriveAint x:basex { }
void setmt m { n += m; cout << n <<' ';} };
class deriveB:public base
public:
deriveBint x:basex { }
void setint m { n +=m; cout <<n << ' ';}
};
int main
{
deriveA dl1;
deriveB d23;
base pbase;
pbase = &dl;
pbase->aet1;
pbase = &d2;
pbase->set2;
return 0;
}
2004年9月
全国计算机等级考试二级笔试试卷
公共基础知识及C++语言程序设计
答案及评分标准
选择题1—35每小题2分,共70分
1 C
2 C
3 B
4 A
5 D
6 B
7 D
8 B
9 C 10A
11D 12D 13C 14D 15A
16A 17D 18B 19D 20C
21B 22A 23B 24B 25C
26D 27C 28A 29A 30C
31C 32B 33D 34B 35B
二、填空题每空2分,共30分
11 时间
22 存储结构或物理结构或物理存储结构
33 黑盒或黑箱
44 一对多或 1对多或 I:M 或 I:N其中M、N大小写均可
55 投影
66 60
77 编译
88 friend
99 Aaa,caa+1 或 caa+1,Aaa
1010 7
1111 042
1212 nfactn-1
1313 3,3.14
1414
1515 25
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软件程序调试的任务是
A诊断和改正程序中的错误
B尽可能多地发现程序中的错误
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如下:
则由关系R得到关系T的操作是
A选择
B投影
C交
D并
11下列关于函数的描述中,错误的是
A函数可以没有返回值
B函数可以没有参数
C函数可以是一个类的成员
D函数不能被定义为模板
12若MyClass是一个类名,且有如下语句序列
MyClass c1,c2;
MyClass c3=new MyClass;
MyClass &c4=c1;
上面的语句序列所定义的类对象的个数是
A1
B2
C3
D4
13下列关于继承方式的描述中,错误的是
A如果不显式地指定继承方式,缺省的继承方式是私有private
B采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
14将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是
ADecr& operator --int;
BDecr operator -- Decr&,int;
Cfriend Decr& operator --Decr&;
Dfrlend Decr operator --Decr&,int;
15若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列
MyTempp2;
MyTempp32;
编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是
A1
B2
C3
D0
16在C++中,cin是个
A类
B对象
C模板
D函数
17在下列字符中,不允许作为C++标识符的是
Ab
BB
C_
D2
18下列叙述中,错误的是
Afalse是一个逻辑型常量
B"b"是一个字符型常量
C365是一个int常量
D3.1415926是一个double常量
19若x和y是程序中的两个整型变量,则下列if语句中正确的是
Aifx==0 y=1; else y=2;
Bifx==0 then y=1 else y=2;
Cifx==0 y=1 else y=2;
Dif x==0 y=1; else y=2;
20要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是
Aint x3={0,0,0};
Bint x={0};
Cstatic int x3={0};
Dint x={0,0,0};
21关于函数中的<返回类型>,下列表述中错误的是A<返回类型>中有可能包含关键字int
B<返回类型>中有可能包含自定义标识符
C<返回类型>中有可能包含字符
D<返回类型>中可能包含
22要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是
AMyClass p=MyClass;
BMyClass p=new MyClass;
CMyClass &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中保护成员变量的个数是
A1
B2
C3
D4
24下列关于运算符重载的描述中,错误的是
A可以通过运算符重载在C++中创建新的运算符
B赋值运算符只能重载为成员函数
C运算符函数重载为类的成员函数时,第一操作数是该类对象
D重载类型转换运算符时不需要声明返回类型
25下列关于类模板的描述中,错误的是
A类模板的成员函数都是模板函数
B可以为类模板参数设置默认值
C类模板描述了一组类
D类模板中只允许有一个类型参数
26下列控制格式输入输出的操作符中,能够设置浮点数精度的是
Asetprecision
Bsetw
Csetfill
Dshowpoint27下列程序段中包含4个函数,其中具有隐含this指针的是
int fun1;
class Test{
public:
int fun2;
friend int fun3;
static int fun4;
};
Afun1
Bfun2
Cfun3
Dfun4
28有如下程序
include
using namespace std;
class Test{
public:
Test{ }
Testconst Test &t {cout<<1;}
};
Test funTest &u {Test t=u; return t;}
int main{Test x,y; x=funy; return 0;}
运行这个程序的输出结果是
A无输出
B1
C11
D111
29有如下程序
include
using namespace std;
class A{
public:
Aint i=0:r1i { }
void print {cout<<'E’<<R1<<'-';}< p>
void print const {cout<<'C'<<R1R1<<'-';}< p> void printint x {cout <<'P'<<R1R1R1<<'-';}< p> private:
int r1;
};
int main {
A a1;
const A a24;
a1.print2;
a1.print;
return 0;
}
运行时的输出结果是
AP8-E4
BP8-C16-
CP0-E4-
DP0-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:
Baseint x=0:valBx {cout<<VALB;}< p>
~Base {cout<<VALB;}< p>
private:
int valB;
};
class Derived:public Base{
public:
Derivedint x=0,int y=0:Basex,valDy{cout<<VALD;}< p>
~Derived {cout<<VALD;}< p>
private:
int valD;
};
int main{
Derived obj122,3;
retuen 0;
}
运行时的输出结果是
A2332
B2323
C3232
D3223
32下面是类Shape的定义:
class Shape{
public:
virtual void Draw=0;
};
下列关于Shape类的描述中,正确的是
A类Shape是虚基类
B类Shape是抽象类
C类Shape中的Draw函数声明有误
D语句“Shape s;”能够建立Shape的一个对象s
33将运算符“+”重载为非成员函数,下列原型声明中,错误的是
AMyClock operator + MyClock,long;
BMyClock operator + MyClock,MyClock;
CMyClock operator + long,long;
DMyClock 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:
Bint xx:xxx {++cout; x+=10;}
virtual void show const
{cout<<COUNT<<'_'<<X<<ENDL;}< p>
protected:
static int count;
private:
int x;
};
class D:public B{
public:
Dint xx,int yy:Bxx,yyy {++count; y+=100;}
virtual void show const
{cout<<COUNT<<'_'<<Y<<ENDL;}< p>
private:
int y;
};
int B::count=0;
int main{
B ptr=new D10,20;
ptr->show;
delete ptr;
return 0;
}
运行时的输出结果是
A1_120
B2_120
C1_20
D2_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设二叉树如下:
对该二叉树进行后序遍历的结果为 3 ;
4软件是 4 、数据和文档的集合;
5有一个学生选课的关系,其中学生的关系模式为:学生学号,姓名,班级,年龄,课程的关系模式为:课程课号,课程名,学时,其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课学号, 5 ,成绩;
6若x和y是两个整形变量,在执行了语句序列
x=5; y=6; y+=x--;
后,x+y的值为 6 ;
7在执行语句序列
int i=0; do i++; whileii<10;
时,do后面的循环体语句i++被执行的次数为 7 ;
8有如下的函数定义:
int Xfunint a, int n{
int x=a;
forint pa=a+1; pa<>
ifpa>x x=pa;
return x;
}
若执行了语句
int x5={23,46,78,55,16};
后,通过表达式Xfunx,5调用该函数,则得到的返回值为 8 ;
9有如下的函数定义:
int Xfunint x{
int y=x;
{int x=10; y+=x;}
return x+y;
}
通过表达式Xfun5调用该函数,则得到的返回值为9 ;
10假定Xcs是一个类,该类中一个成员函数的原型为“Xcs abc;”,则在类外定义时对应的函数头为 10 ;
11请将下面的类Date的定义补充完整,使得由语句
Date FirstDay;
定义的对象FirstDay的值为2010年1月1日;
class Date{
public:
Date 11 :yeary,monthm,dayd{ }
private:
int year,month,day; //依次表示年、月、日
};
12请将下面的程序补充完整,使得程序输出“飘是张娜的书”;
include
using namespace std;
class Book{
public:
Bookchar str {strcpytitle,str;}
12 void PrintInfo {cout<<TITLE<<ENDL;}< p>
protected:
char title50;
};
class MyBook:public Book{
public:
MyBookchar s1,char s2="张娜":
13 {strcpyowner,s2;}
virtual void PrintInfo {cout<<TITLE<<"是"OWNER<<"的书"<<ENDL;}< p>
private:
char owner10;
};
int main{
Book prt=new MyBook"飘";
prt->PrintInfo;
return 0;
}
13在有理数类Rational中重载插入运算符<<,以便按a/q形式输出;请将<<运算符函数的定义补充完整;
class Rational{
public:
Rationalint aa, int :aaa,q{ }
friend 14 operator<<ostream &out, Rational &x {
return out<<X.A<<' p <<x.q;<>
}
private:
int a,q;
};
14下面的函数定义是某函数模板能够生成的函数实例
int squareint n {return nn;}
double squaredouble n {return nn;}
由此可知,该函数模板的定义是 15 ;
2007年4月计算机等级考试C++考试及答案
一、选择题每小题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对下列二叉树
ADYBEAFCZX BYDEBFZXCA CABDYECFXZ DABCDEFXYZ
7某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
An+1 B n-1 C2n Dn/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 <class T> T souareT x retumx x ;
基中T是
A函数形参 B函数实参 C模板形参 D模板实参
16使用输入输出操作符setw,可以控制
A输出精度 B输出宽度 C对齐方式 D填充字符
17下列字符串中,不可以用作C++标识符的是
Ay_2006 B____TEST__H CRetum Dswitch
18字面常量42、4.2、42L的数据类型分别是
Along、double int Blong、float、int
Cint、double、long Dint、float、long
19执行下列语句段后,输出字符“”的个数是
forint i =50;I>1;—i cout<<””
A48 B49 C50 D51
20有如下程序段
inti =0, j=1;
int&r=i ; // ①
r =j; //②
intp=&i ; //③
p=&r ; //④
基中会产生编译错误的语句是
A④ B③ C② D ①
21有如下函数定义:
void func int a,int&b {a++; b++;}
若执行代码段:
intx=0 ,y=1
funcx,y;
则变量x和y值分别是
A0和1 B1和1 C0和2 D1和2
22有如下程序:
include<iostream>
using namespace std;
class A{
public
static int a;
void init{a=1;}
Aint a=2 {init;a++;}
};
int A:;a=0
A obj;
Int main
{
cout<<obj.a;
retum0;
}
运行时输出的结果是
A0 B1 C2 D3
23下列有关继承和派生的叙述中,正确的是
A 派生类不能访问基类的保护成员
B作为虚基类的类不能被实例化
C派生类应当向基类的构造函数传递参数
D虚函数必须在派生类中重新实现
24下列运算符中,不能被重载的是
A&& B= C. D++
25下列函数模板的定义中,合法的是
A template<typename T> TabsT x {return x <0 – x: x;}
Btemplate class <T>TabsTx{retumx<0 -x;x;} Ctemplate T<class T.>absT x{retum x<0 -x;x;} Dtemplate T absT x{returm x<0 -x;x;}
26在语句cin>>data;中,cin是
AC++的关键字 B类名
C对象名 D函数名
27有如下程序:
include<iostream>
using namespace std;
class test {
private:
int a;
public:
test{cout<<”constructor”<<endl;}
testint a{cout<<a<<endl;}
testconst test&_test
{
a=_testa;
cout<<”copy constructor”<<endl;
}
test{cout<<”destructor”<<endl;}
};
int main
}
test A3
return0;
运行时输出的结果是
A3 Bconstructor
destruclor
Ccopy constructor
D3
dstructor destruclor
28若有如下类声明
class My Class {
public:
MyClass {cout<<1;}
};
执行下列语句
MyClass a,b2,P2;
以后,程序的输出结果是
A11 B111 C1111 D11111
29有如下程序:
include<iostream>
using namespace std;
class point {
public:
static int number;
public:
point{number++;
~point{number-;}
};
imt point::number=0;
void main{
pointptr;
printA,B;
{
pointptr_point=new point{3};
ptr=ptr_point;
}
pointC;
cout<<point::number<<endl;
deleteptr;
}
运行时输出的结果是
A3 B4 C6 D7
30如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制;
include<iostream>
using namespace std;
class Base{
int a,b;
public:
Baceint x ,int y { a=x; b=y;}
Void show{ cout<<a<<’,’<<b<<endl;}
}
clsaa Derived:public Base {
int c ,d;
public:
Derivedint x,int y,int z,int m:Basex,y{c=z; d=m;} Void show{ cout<<c<<’,’d<<endl;}
};
int main
{
Base B150,50,pb;
Derived DI10,20,30,40;
Pb=&D1;
Pb->show;
Return 0;
}
运行时输出的结果是
A10,20 B30,40 C20,30 D50,50
31有如下程序:
include<iostream>
using namespace std;
class A
{
public;
Aint i {x= i ;}
Void sispa{cout<<x<<’,’;}
Private:
int x ;
};
class B;publicA
{
public;
Bint i:Ai +10 {x =i ;}
voud dispb {dispa;cout<<x<,endl;}
Private:
Int x;
};
int main
{
B b2;
b.dispb
retum 0:
}
运行时输出的结果是
A10,2 B12,10 C12,2 D2,2
32虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用;有如下程序:
include<iostream>
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
{
Derived d;
Basep=&d;
p->f; p->g;
return 0:
}
运行时输出的结果是
Af+g+ Bf0+g+ Cf+g0+ Df0+g0+
33下面程序中对一维坐标点类Point进行运算符重载include<iostream>
using namespace std;
class point {
public:
point int vaI {x=val;}
point& operator++{x++;retumthis;}
print operator++int {point old=this,++this;retum old;}
int GetX const {retum x;}
private:
int x;
};
int main
{
point a10;
cout<<++a.GetX;
cout<<a++.GetX;
retum;
}
编译和运行情况是
A运行时输出1011
B运行时输出1111
C运行时输出1112
D编译有错
34有如下程序:
include<iostream>
using namespace std;
int main
{
char str100,p;
cout<<”please input a string:”;
cin>>str;
p=str;
forint i =0;p=”\0”;p++, i ++;
cout<< i <<endl;
retum 0;
}
运行这个程序时,若输入字符串为
abcdefg abcd
则输出结果是
A7 B12 C13 D100
35有如下程序::
include<iostream>
using namespace std:
class Sample
{
friend long fun Sample s;
public:
Sample long a {x=a;}
Private:
long x;
};
long fun Sample s
{
ifs.x<2retum 1;
retum s.xfunSamples.x-a;
}
int main
{
int sum=0
forint i =0; i <6; i ++ { sum+=funSample i ; } cout<<sum;
retum 0;
}
运行时输出的结果是
A120 B16 C154 D34
二、填空题每空2分,共30分
请将每一个空的正确答案写在答题卡1~15序号的横线上,答在试卷上不得分;
1在深度为7的满二叉树中,度为2的结点个数为 1 ; 2软件测试分为白箱盒测试和黑箱盒测试,等价类划分法属于 2 测试;
3在数据库系统中,实现各种数据管理体制功能的核心软件称为 3 ;
4软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段;编码和测试属于 4 阶段; 5在结构化分析使用的数据流图DFD中,利用 5 对其中的图形元素进行确切解释;
6C++中只有两个逻辑常量:true和 6 ;
7若要访问指针变量p所指向的数据,应使用表达式 7 ; 8已知一个函数的原型是:
int fndouble x;
若要以5.27为实参调用该函数,应使用表达式 8 ;
9有如下定义:
class MA{
int value;
public:
MAint n=0:valutn{}
};
MAta,tb;
其中MA类的对象名标识符是 9 ;
10如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整;
Class my Class{
Private:
Int data:
Public:
MyClassint value; //构造函数
MyClassconst 10 another Object; //拷贝构造函数
}
11用来派生新类的称为 11 ,而派生出的新类称为它的子类或派生类;
12有如下程序:
include<iostream>
using namespace std;
clsaa CA{
public:
CAD{cout<<A’;}
};
class CB ;private CA{
public;
CB{cout<<B’;}
};
int main{cout<<B’;}
};
int main{
CA a;
CB b;
retum0;
}
这个程序的输出结果是 12 ;
13若将一个二元运算符重载为类的成员函数,其形参个数应该是 13 个;
14有如下程序:。

相关文档
最新文档