答在试卷上不得分。
(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)数据库
31
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;
上面的语句序列所定义的类对象的个数是 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; 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)<返回类型>中有可能包含字符*
32
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)下列关于运算符重载的描述中,错误的是 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 运行时的输出结果是 A)P8-E4 B)P8-C16- C)P0-E4- D)P0-C16-
(30)下列代码声明了3个类 class Person{};
class Student:public Person{}; class Undergraduate:Student{};
下列关于这些类之间关系的描述中,错误的是 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:
A(int i=0):r1(i) { }
void print() {cout<<'E’<
void print() const {cout<<'C'<
int main() { A a1;
const A a2(4); a1.print(2); a1.print(); return 0; }
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<
class Derived:public Base{ public: Derived(int y=0):Base(x),valD(y){cout<
int main(){
Derived obj12(2,3); retuen 0; }
运行时的输出结果是 A)2332 B)2323 C)3232 D)3223
(32)下面是类Shape的定义: class Shape{ public:
virtual void Draw()=0;
33
x=0,int
};
下列关于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<
static int count; private: int x; };
class D:public B{ public:
D(int xx,int yy):B(xx),y(yy) {++count; y+=100;} virtual void show() const
{cout<
int B::count=0; int main(){
B *ptr=new D(10,20);
34
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)设二叉树如下:
对该二叉树进行后序遍历的结果为 【3】 。 (4)软件是 【4】 、数据和文档的集合。
(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号, 【5】 ,成绩)。
(6)若x和y是两个整形变量,在执行了语句序列 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:
Date( 【11】 ):year(y),month(m),day(d){ } private:
int year,month,day; //依次表示年、月、日 };
(12)请将下面的程序补充完整,使得程序输出―飘是张娜的书‖。 #include
using namespace std; class Book{ public:
Book(char *str) {strcpy(title,str);} 【12】 void PrintInfo() {cout<
class MyBook:public Book{ public:
MyBook(char *s1,char *s2=\张娜\【13】 {strcpy(owner,s2);}
virtual void PrintInfo() {cout<
35
\的书\ 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】 。