时间:2010-09-11 11:25:56
一、填空题:
每小题1分,共15分
1、在深度为7的满二叉树中,度为2的结点个数为______。
自评分
2、软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于______测试。
自评分
3、在数据库系统中,实现各种数据管理体制功能的核心软件称为______。
自评分
4、软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于______阶段。
自评分
5、在结构化分析使用的数据流图(DFD)中,利用______对其中的图形元素进行确切解释。
自评分
6、C++中只有两个逻辑常量:true和______。
自评分
7、若要访问指针变量p所指向的数据,应使用表达式______。
自评分
8、 已知一个函数的原型是:
int fn(double x);
若要以5.27为实参调用该函数,应使用表达式______。
自评分
9、 有如下定义:
class MA{
int value;
public:
MA(int n=0): valut(n){}
};
MA*ta,tb;
其中MA类的对象名标识符是______。
自评分
10、 如下类定义中包含了构造函数和拷贝构造函数的原型声明,请在横线处填写正确的内容,使拷贝构造函数的声明完整。
Class myClass{
private:
int data;
public:
myClass(int value); //构造函数
myClass(const_________anotherObject); //拷贝构造函数
}
自评分
11、用来派生新类的称为______,而派生出的新类称为它的子类或派生类。
自评分
12、 有如下程序:
#include<iostream>
using namespace std;
class CA{
public:
CA()<cout<<''''A'''';)
};
class CB:private CA{
public:
CB(){cout<<''''B'''';}
};
int main(){
CA a;
CB b;
return 0;
}
这个程序的输出结果是______。
自评分
13、若将一个二元运算符重载为类的成员函数,其形参个数应该是______个。
自评分
14、 有如下程序:
#include<iostream>
using namespace std;
class DA{
int k;
public:
DA(int x=1):k(x){}
~DA(){cout<<k;}
};
int main(){
DA d[]={DA(3),DA(3),DA(3)};
DA*p=new DA[2];
delete []p;
return 0;
}
这个程序的输出结果是_______。
自评分
15、C++语言中的多态性分为编译时的多态性和______时的多态性。
自评分
二、单选题:
每小题1分,共35分
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.DYBEAFCZX
B.YDEBFZXCA
C.ABDYECFXZ
D.ABCDEFXYZ
7、某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
A.+1
B.-1
C.2
D./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 square(T x){return x*x;}
其中T是
A.函数形参
B.函数实参
C.模板形参
D.模板实参
16、使用输入输出操作符setw,可以控制
A.输出精度
B.输出宽度
C.对齐方式
D.填充字符
17、下列字符串中,不可以用作C++标识符的是
A.y_2006
B._TEST_H
C.Retum
D.witch
18、字面常量42、4.2、42L的数据类型分别是
A.log、doule it
B.log、float、it
C.it、doule、log
D.it、float、log
19、 执行下列语句段后,输出字符“*”的个数是
for(int i=50;i>1;--i)cout<<''''*'''';
A.48
B.49
C.50
D.51
20、 有如下程序段
int i=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++;}
若执行代码段:
int x=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<<obj a
return 0;
}
运行时输出的结果是
A.0
B.1
C.2
D.3
23、下列有关继承和派生的叙述中,正确的是
A.派生类不能访问基类的保护成员
B.作为虚基类的类不能被实例化
C.派生类应当向基类的构造函数传递参数
D.虚函数必须在派生类中重新实现
24、下列运算符中,不能被重载的是
A.&&
B.!=
C..
D.++
25、下列函数模板的定义中,合法的是
A.temlate <tyeame T> T a(T x){retur x<0?-x:x;}
B.temlate cla <T> T a(T x){retur x<0?-x:x;}
C.temlate T<cla T>a(T x){retur x<0?-x:x;}
D.temlate T a(T x){retur x<0?-x:x;}
26、在语句cin>>data;中,cin是
A.C++的关键字
B.类名
C.对象名
D.函数名
27、 有如下程序:
#include<iostream>
using namespace std;
class Test{
private:
int a;
public:
Test(){cout<<constructor<<end1;}
Test(int a){cout<<a<<endl;}
Test(const Test &_test)
{
a=_test.a;
cout<<copy constructor<<end1;
}
~Test(){cout<<destructor<<end1;}
};
int main()
{
Test A(3);
return 0;
}
运行时输出的结果是
A.3
B.cotructordetruclor
C.coy cotructordetruclor
D.3dtructor
28、 若有如下类声明
class My Class {
public:
MyClass() {cout<<1;}
};
执行下列语句
MyClass a,b[2],*P[2];
以后,程序的输出结果是
A.11
B.111
C.1111
D.11111
29、 有如下程序:
#include
using namespace std;
class Point {
public;
static int number;
public:
point(){number++;}
~Point(){number--;}
};
int Point :: number=0;
void main(){
Point * ptr;
Point A,B;
{
Point * ptr_point=new point[3];
ptr=ptr_point;
}
point C;
cout<<Point :: number<<endl;
delete[]ptr;
}
运行时输出的结果是
A.3
B.4
C.6
D.7
30、 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。
#include<iostream>
using namespace std;
class Base{
int a,b;
public:
Base(int x,int y){a=x;b=y;}
void show(){cout<<a<<'''',''''<<b<<endl;}
};
class Derived : public Base{
int c,d;
public:
Derived(int x,int y,int z,int m) : Base(x,y){c=z;d=w;}
void show(){cout<<c<<'''',''''<<d<<endl;}
};
int main()
{
Base B1(50,50),*pb;
Derived D1(10,20,30,40);
pb=&D1;
pb->show();
return ();
}
运行时输出的结果是
A.10,20
B.30,40
C.20,30
D.50,50
31、 #include<iostream>
using namespace std;
class A
{
public:
A(int i) {x=i;}
void dispa() {cout<<x<<'''','''';}
private:
int x;
};
class B: public A
{
public:
B(int i): A(i+10) {x=i;}
void dispb() (dispa(); cout<<x<<endl;}
private:
int x;
};
int main()
{
B b(2);
b.dispb();
return 0;
}
运行时输出的结果是
A.10,2
B.12,10
C.12,2
D.2,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;
Base *p=&d;
p->f(); p->g();
return 0;
}
运行时输出的结果是
A.f+g+
B.f0+g+
C.f+g0+
D.f0+g0+
33、 下面程序中对一维坐标点类Point进行运算符重载
#include <iostream>
using namespace std;
class Point {
public:
Point(int val) {x=val;}
Point & operator++() {x++; return *this; }
Point operator++(int) {Point old = *this; ++(*this); return old;}
int GetX() const {return x;}
private:
int x;
};
int main()
{
Point a(10);
cout << (++a).GetX();
cout << a++.GetX();
return 0;
}
编译和运行情况是
A.运行时输出1011
B.运行时输出1111
C.运行时输出1112
D.编译有错
34、 有如下程序:
#include <iostream>
using namespace std;
int main()
{
char str[100], *p;
cout<<Please input a string:;
cin>>str;
p=str;
for (int i=0; *p!='''''''';p++,i++);
cout<<i<<endl;
return 0;
}
运行这个程序时,若输入字符串为 abcdefg abcd
则输出结果是
A.7
B.12
C.13
D.100
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)
{
if(s.x<2) return 1;
return s.x * fun(Sample(s.x-1));
}
int main()
{
int stun = 0;
for (int i=0; i<6; i++) {sum += fun(Sample(i));}
cout << sum;
return 0;
}
运行时输出的结果是
A.120
B.16
C.154
D.34