(考试时间90分钟,满分100分)
一、选择题(每小题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)PDL(过程设计语言) B)PAD图
C)N-S图 D)DFD图
(7)下列叙述中正确的是
A)软件交付使用后还需要进行维护
B)软件一旦交付使用就不需要再进行维护
C)软件交付使用后其生命周期就结束
D)软件维护是指修复程序中被破坏的指令
(8)数据库设计的根本目标是要解决
A)数据共享问题 B)数据安全问题
C)大量数据存储问题 D)简化数据维护
(9)设有如下关系表:
R S T
A B C A B C A B C
1 1 2 3 1 3 1 1 2
2 2 3 2 2 3
3 1 3
则下列操作中正确的是
A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S
(10)数据库系统的核心是
A)数据模型 B)数据库管理系统
C)数据库 D)数据库管理员
(11)下列关于C++函数的叙述中,正确的是
A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明 D)函数不能自己调用自己
(12)下列关于类和对象的叙述中,错误的是
A)一个类只能有一个对象
B)对象是类的具体实例
C)类是对某一类对象的抽象
D)类和对象的关系是一种数据类型与变量的关系
(13)在C++中,用于实现运行时多态性的是
A)内联函数 B)重载函数 C)模板函数 D)虚函数
(14)下列关于运算符重载的叙述中,正确的是
A)通过运算符重载,可以定义新的运算符
B)有的运算符只能作为成员函数重载
C)若重载运算符+,则相应的运算符函数名是+
D)重载一个二元运算符时,必须声明两个形参
www.59wj.com
(15)下列关于模板的叙述中,错误的是
A)模板声明中的第一个符号总是关键字template
B)在模板声明中用 < 和 > 括起来的部分是模板的形参表
C)类模板不能有数据成员
D)在一定条件下函数模板的实参可以省略
(16)对于语句 cout<<endl><<x; 中的各个组成部分,下列叙述中错误的是
A)“cout”是一个输出流对象 B)“endl”的作用是输出回车换行
C)“x”是一个变量 D)“<<”称作提取运算符
(17)下列字符串中,正确的C++标识符是
A)foo-1 B)2b C)new D)_256
(18)已知枚举类型定义语句为:
enum Token { NAME, NUMBER, PLUS = 5, MINUS, PRINT = 10 };
则下列叙述中错误的是
A)枚举常量NAME的值为1
B)枚举常量NUMBER的值为1
C)枚举常量MINUS的值为6
D)枚举常量PRINT的值为10
(19)执行语句序列
int i=0; while(i >< 25) i+=3; cout<<i;
输出结果是
A)24 B)25 C)27 D)28
(20)要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是
A)int vect[ ]={30,50,-88};
B)int vect[ ]={30,50,-88,0,0};
C)int vect[5]={30,50,-88};
D)int vect[5]={30,50,-88,0,0};
(21)有如下程序:
#include <iostream>
void fun(int& x, int y) { int t = x; x = y; y = t; }
int main( )
{
int a[2] = {23, 42};
fun(a[1], a[0]);
std::cout << a[0] << ", " << a[1] << std::endl;
return 0;
}
执行后的输出结果是
A)42, 42 B)23, 23 C)23, 42 D)42, 23
(22)有如下类声明:
class Foo { int bar; };
则Foo类的成员bar是
A)公有数据成员 B)公有成员函数 C)私有数据成员 D)私有成员函数
(23)有如下类声明:
class MyBASE{
int k;
public:
void set(int n){ k=n;}
int get( )const{ return k; }
};
class MyDERIVED: protected MyBASE{
protected:
int j;
public:
void set(int m, int n){ MyBASE::set(m); j=n;}
int get( )const{ return MyBASE::get( )+j; }
};
则类MyDERIVED中保护的数据成员和成员函数的个数是
A)4 B)3 C)2 D)1
(24)已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是
A)这是运算符-的重载运算符函数
B)这个函数所重载的运算符是一个一元运算符
C)这是一个成员函数
D)这个函数不改变类的任何数据成员的值
(25)有如下函数模板定义:
template <class T>
T func(T x, T y) { return x*x+y*y; }
在下列对func的调用中,错误的是
A)func(3, 5); B)func(3.0, 5.5);
C)func (3, 5.5); D)func<int>(3, 5.5);
(26)有如下程序:
#include <iostream>
using namespace std;
int main( )
{
cout.fill('*');
cout.width(6);
cout.fill('#');
cout << 123 << endl;
return 0;
}
执行后的输出结果是
A)###123 B)123### C)***123 D)123***
www.59wj.com
(27)在下列函数原型中,可以作为类AA构造函数的是
A)void AA(int); B)int AA( ); C)AA(int)const; D)AA(int);
(28)下列关于this指针的叙述中,正确的是
A)任何与类相关的函数都有this指针
B)类的成员函数都有this指针
C)类的友元函数都有this指针
D)类的非静态成员函数才有this指针
(29)有如下程序:
#include <iostream>
using namespace std;
class Test {
public:
Test( ) { n+=2; }
~Test( ) { n-=3; }
static int getNum( ) { return n; }
private:
static int n;
};
int Test::n = 1;
int main( )
{
Test* p = new Test;
delete p;
cout << "n=" << Test::getNum( ) << endl;
return 0;
}
执行后的输出结果是
A)n=0 B)n=1 C)n=2 D)n=3
(30)有如下程序:
#include <iostream>
using namespace std;
class A {
public:
A( ) { cout << "A"; }
};
class B { public: B( ) { cout << "B"; } };
class C : public A {
B b;
public:
C( ) { cout << "C"; }
};
int main( ) { C obj; return 0; }
执行后的输出结果是
A)CBA B)BAC C)ACB D)ABC
(31)有如下类声明:
class XA{
int x;
public:
XA(int n){ x=n;}
};
class XB: public XA{
int y;
public:
XB(int a,int b);
};
在构造函数XB的下列定义中,正确的是
A)XB::XB(int a,int b): x(a), y(b){ }
B)XB::XB(int a,int b): XA(a), y(b){ }
C)XB::XB(int a,int b): x(a), XB(b){ }
D)XB::XB(int a,int b): XA(a), XB(b){ }
(32)有如下程序:
#include <iostream>
using namespace std;
class BASE{
public:
~BASE( ){ cout<<"BASE";}
};
class DERIVED: public BASE {
public:
~DERIVED( ){ cout<<"DERIVED";}
};
int main( ){DERIVED x; return 0 ;}
执行后的输出结果是
A)BASE B)DERIVED
C)BASEDERIVED D)DERIVEDBASE
(33)在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。下列叙述中正确的是
A)operator+有两个参数,operator*有两个参数
B)operator+有两个参数,operator*有一个参数
C)operator+有一个参数,operator*有两个参数
D)operator+有一个参数,operator*有一个参数
www.59wj.com
(34)下面关于C++流的叙述中,正确的是
A)cin是一个输入流对象
B)可以用ifstream定义一个输出流对象
C)执行语句序列char *y="PQMN"; cout<<y; 将输出字符串 "PQMN"的地址
D)执行语句序列char x[80]; cin.getline(x,80); 时,若键入
Happy new year
则x中的字符串是"Happy"
(35)有如下程序:
#include <iostream>
using namespace std;
class AA{
int n;
public:
AA(int k):n(k){ }
int get( ){ return n;}
int get( )const{ return n+1;}
};
int main( )
{
AA a(5);
const AA b(6);
cout<<a.get( )<<b.get( );
return 0;
}
执行后的输出结果是
A)55 B)57 C)75 D)77
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 【1】 。
(2)算法复杂度主要包括时间复杂度和 【2】 复杂度。
(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 【3】 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。
(4)一棵二叉树第六层(根结点为第一层)的结点数最多为 【4】 个。
(5)数据结构分为逻辑结构和存储结构,循环队列属于 【5】 结构。
(6)下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。
bool fun(char *str)
{
int i=0, j=0;
while (str[j]) 【6】 ;
for(j--; i<j && str[i]==str[j]; i++,j--);
return i 【7】 j;
}
(7)执行语句序列
int x=10, &r=x;
cout><<x><<'-'<<r><<endl;
输出结果为 【8】 。
www.59wj.com
(8)下列程序的输出结果为
Object id=0
Object id=1
请将程序补充完整。
#include <iostream>
using namespace std;
class Point
{
public:
Point(int xx=0, int yy=0) {X=xx; Y=yy; countP++; }
~Point( ) { countP--; }
int GetX( ) {return X;}
int GetY( ) {return Y;}
static void GetC( ) {cout<<" Object id="<<countP><<endl;}
private:
int X,Y;
static int countP;
};
【9】 //静态数据成员的初始化
int main( )
{
Point::GetC( );
Point A(4,5);
A.GetC( );
return 0;
}
(9)非成员函数应声明为类的 【10】 函数才能访问这个类的private成员。
(10)派生类中的成员不能直接访问基类中的 【11】 成员。
(11)下列程序的输出结果为2,请将程序补充完整。
#include <iostream>
using namespace std;
class Base
{
public:
【12】 void fun( ){ cout<<1; }
};
class Derived:public Base
{
public:
void fun( ) { cout<<2; }
};
int main( )
{
Base *p= new Derived;
p->fun( );
delete p;
return 0;
}
(12)请将下列类定义补充完整。
class Base { public: void fun( ){ cout<<"Base::fun"<<endl; } };
class Derived : public Base {
public:
void fun( ) {
【13】 //显式调用基类的fun函数
cout<<"Derived::fun"<<endl;
}};
(13)多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[ ]运算符只能作为类的 【14】 函数重载。
(14)下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当语句,完成栈类模板的定义。
template <class T >
class Tstack
{
enum {size=1000};
T stack[size];
int top;
public:
Tstack( ):top(0){ }
void push(const T &i){
if(top<size)
stack[top++]=i;
}
T pop( ){
if(top == 0) exit(1); //栈空时终止运行
return 【15】 ;
}
};