计算机类 二级 C++
2007年4月计算机等级考试C++考试 50 题 含答案 C++
1 单选题 1 / 50
下列叙述中正确的是 。
A 算法的效率只与问题的规模有关,而与数据的存储结构无关. B 算法的时间复杂度是指执行算法所需要的计算工作量 C 数据的逻辑结构与存储结构是一一对应的. D 算法的时间复杂度与空间复杂度一定相关.
查看答案 B. 算法的时间复杂度是指执行算法所需要的计算工作量
2 单选题 2 / 50
在结构化程序设计中,模块划分的原则是 。
A 各模块应包括尽量多的功能 B 各模块的规模应尽量大 C 各模块之间的联系应尽量紧密 D 模块内具有高内聚度,模块间具有低耦合度
查看答案 D. 模块内具有高内聚度,模块间具有低耦合度
3 单选题 3 / 50
下列叙述中正确的是 。
A 软件测试的主要目的是发现程序中的错误. B 软件测试的主要目的是确定程序中错误的位置. C 为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作 D 软件测试是证明软件没有错误
查看答案 A. 软件测试的主要目的是发现程序中的错误.
4 单选题 4 / 50
下面选项中不属于面向对象程序设计特征的是 。
A 继承性 B 多态性 C 类比性 D 封装性
查看答案 C. 类比性
5 单选题 5 / 50
下列对列的叙述正确的是 。
A 队列属于非线性表 B 队列按”先进后出”的原则组织数据 C 队列在队尾删除数据 D 队列按“先进先出”原则组织数据
查看答案 D. 队列按“先进先出”原则组织数据
6 单选题 6 / 50
对下列二叉树
进行前序遍历的结果是
A DYBEAFCZX B YDEBFZXCA C ABDYECFXZ D ABCDEFXYZ
查看答案 C. ABDYECFXZ
7 单选题 7 / 50
某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
A n+1 B n-1 C 2n D n/2
查看答案 A. n+1
8 单选题 8 / 50
在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。
A 井 B 交 C 投影 D 笛卡儿乘积
查看答案 B. 交
9 单选题 9 / 50
在E-R图中,用来表示实体之间是联系的图形是 。
A 矩形 B 椭圆形 C 菱形 D 平行四边形
查看答案 C. 菱形
10 单选题 10 / 50
下列叙述中错误的是 。
A 在数据库系统中,数据的物理结构必须与逻辑结构一致. B 数据库技术的根本目标是要解决数据的共享问题 C 数据库设计是指在已有数据库管理系统的基础上建立数据库 D 数据库系统需要操作系统的支持
查看答案 A. 在数据库系统中,数据的物理结构必须与逻辑结构一致.
11 单选题 11 / 50
为了取代C中带参数的宏,在C++中使用
A 重载函数 B 内联函数 C 递归函数 D 友元函数
查看答案 B. 内联函数
12 单选题 12 / 50
下列关于类定义的说法中,正确的是
A 类定义中包括数据成员和函数成员的声明 B 类成员的缺省访问权限是保护的 C 数据成员必须被声明为私有的 D 成员函数只能在类体外进行定义
查看答案 A. 类定义中包括数据成员和函数成员的声明
13 单选题 13 / 50
下列关于派生类构造函数和析构函数的说法中,错误的是
A 派生类的构造函数会隐含调用基类的构造函数 B 如果基类中没有缺省构造函数,那么派生类必须定义构造函数 C 在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数 D 在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
查看答案 D. 在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
14 单选题 14 / 50
通过运算符重载,可以改变运算符原有的
A 操作数类型 B 操作数个数 C 优先级 D 结合性
查看答案 A. 操作数类型
15 单选题 15 / 50
有如下函数模板: template <class T> T souare(T x) (retumx * x ;) 基中T是
A 函数形参 B 函数实参 C 模板形参 D 模板实参
查看答案 C. 模板形参
16 单选题 16 / 50
使用输入输出操作符setw,可以控制
A 输出精度 B 输出宽度 C 对齐方式 D 填充字符
查看答案 B. 输出宽度
17 单选题 17 / 50
下列字符串中,不可以用作C++标识符的是
A y_2006 B ____TEST__H C Retum D switch
查看答案 D. switch
18 单选题 18 / 50
字面常量42、4.2、42L的数据类型分别是
A long、double int B long、float、int C int、double、long D int、float、long
查看答案 C. int、double、long
19 单选题 19 / 50
执行下列语句段后,输出字符“*”的个数是 for(int i =50;I>1;— i )cout<<”*”
A 48 B 49 C 50 D 51
查看答案 B. 49
20 单选题 20 / 50
有如下程序段 inti =0, j=1; int&r=i ; // ① r =j; //② int*p=&i ; //③ *p=&r ; //④ 基中会产生编译错误的语句是
A ④ B ③ C ② D ①
查看答案 A. ④
21 单选题 21 / 50
有如下函数定义: 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
查看答案 C. 0和2
22 单选题 22 / 50
有如下程序: #include<iostream> 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; retum0; } 运行时输出的结果是
A 0 B 1 C 2 D 3
查看答案 B. 1
23 单选题 23 / 50
下列有关继承和派生的叙述中,正确的是
A 派生类不能访问基类的保护成员 B 作为虚基类的类不能被实例化 C 派生类应当向基类的构造函数传递参数 D 虚函数必须在派生类中重新实现
查看答案 C. 派生类应当向基类的构造函数传递参数
24 单选题 24 / 50
下列运算符中,不能被重载的是
A && B != C . D ++
查看答案 C. .
25 单选题 25 / 50
下列函数模板的定义中,合法的是
A template<typename T> Tabs(T x) {return x <0 – x: x;} B template class <T>Tabs(Tx){retumx<0 -x;x;} C template T<class T.>abs(T x){retum x<0 -x;x;} D template T abs(T x){returm x<0 -x;x;}
查看答案 A. template<typename T> Tabs(T x) {return x <0 – x: x;}
26 单选题 26 / 50
在语句cin>>data;中,cin是
A C++的关键字 B 类名 C 对象名 D 函数名
查看答案 C. 对象名
27 单选题 27 / 50
有如下程序: #include<iostream> using namespace std; class test { private: int a; public: test(){cout<<”constructor”<<endl;} test(int a){cout<<a<<endl;} test(const test&_test) { a=_testa; cout<<”copy constructor”<<endl; } test(){cout<<”destructor”<<endl;} }; int main() } test A(3) return0; 运行时输出的结果是
A 3 B constructor destruclor C copy constructor D 3 dstructor destruclor
查看答案 D. 3 dstructor destruclor
28 单选题 28 / 50
若有如下类声明 class My Class { public: MyClass() {cout<<1;} }; 执行下列语句 MyClass a,b[2],*P[2]; 以后,程序的输出结果是
A 11 B 111 C 1111 D 11111
查看答案 B. 111
29 单选题 29 / 50
有如下程序: #include<iostream> using namespace std; class point { public: static int number; 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<<point::number<<endl; delete[]ptr; } 运行时输出的结果是
A 3 B 4 C 6 D 7
查看答案 C. 6
30 单选题 30 / 50
如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。 #include<iostream> using namespace std; class Base{ int a,b; public: Bace(int x ,int y) { a=x; b=y;} Void show(){ cout<<a<<’,’<<b<<endl;} } 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<<c<<’,’d<<endl;} }; int main() { Base B1(50,50),*pb; Derived DI(10,20,30,40); Pb=&D1; Pb->show(); Return 0; } 运行时输出的结果是
A 10,20 B 30,40 C 20,30 D 50,50
查看答案 A. 10,20
31 单选题 31 / 50
有如下程序: #include<iostream> using namespace std; class A { public; A(int i ){x= i ;} Void sispa(){cout<<x<<’,’;} Private: int x ; }; class B;publicA { public; B(int i):A(i +10) {x =i ;} voud dispb() {dispa();cout<<x<,endl;} Private: Int x; }; int main() { B b(2); b.dispb() retum 0: } 运行时输出的结果是
A 10,2 B 12,10 C 12,2 D 2,2
查看答案 C. 12,2
32 单选题 32 / 50
虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #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+
查看答案 C. f+g0+
33 单选题 33 / 50
下面程序中对一维坐标点类Point进行运算符重载 #include<iostream> 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++.GetX(); retum(); } 编译和运行情况是
A 运行时输出1011 B 运行时输出1111 C 运行时输出1112 D 编译有错
查看答案 B. 运行时输出1111
34 单选题 34 / 50
有如下程序: #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!=”\0”;p++, i ++); cout<< i <<endl; retum 0; } 运行这个程序时,若输入字符串为 abcdefg abcd 则输出结果是
A 7 B 12 C 13 D 100
查看答案 A. 7
35 单选题 35 / 50
有如下程序:: #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)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<<sum; retum 0; } 运行时输出的结果是
A 120 B 16 C 154 D 34
查看答案 C. 154
36 填空题 36 / 50
在深度为7的满二叉树中,度为2的结点个数为 __ 。
查看答案 63
37 填空题 37 / 50
软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 __ 测试。
查看答案 黑盒
38 填空题 38 / 50
在数据库系统中,实现各种数据管理体制功能的核心软件称为 __ 。
查看答案 DBMS
39 填空题 39 / 50
软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于 __ 阶段。
查看答案 开发
40 填空题 40 / 50
在结构化分析使用的数据流图(DFD)中,利用 __ 对其中的图形元素进行确切解释。
查看答案 数据字典
41 填空题 41 / 50
C++中只有两个逻辑常量:true和 __ 。
查看答案 false
42 填空题 42 / 50
若要访问指针变量p所指向的数据,应使用表达式 __ 。
查看答案 *P
43 填空题 43 / 50
已知一个函数的原型是: int fn(double x); 若要以5.27为实参调用该函数,应使用表达式 __ 。
查看答案 fn(5.27)
44 填空题 44 / 50
有如下定义: class MA{ int value; public: MA(int n=0):valut(n){} }; MA*ta,tb; 其中MA类的对象名标识符是 __ 。
查看答案 tb
45 填空题 45 / 50
如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。 Class my Class{ Private: Int data: Public: MyClass(int value); //构造函数 MyClass(const __ another Object); //拷贝构造函数 }
查看答案 myclass&
46 填空题 46 / 50
用来派生新类的称为 __ ,而派生出的新类称为它的子类或派生类。
查看答案 基类
47 填空题 47 / 50
有如下程序: #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; } 这个程序的输出结果是 __ 。
查看答案 AAB
48 填空题 48 / 50
若将一个二元运算符重载为类的成员函数,其形参个数应该是 __ 个。
查看答案 1个
49 填空题 49 / 50
有如下程序: #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; return0; } 这个程序的输出结果是 __ 。
查看答案 11333
50 填空题 50 / 50
C++语言中的多态性分为编译时的多态性和 __ 时的多态性。
查看答案 运行