2009年9月二级C++笔试
百分网小编收集整理了2009年9月全国计算机二级笔试C++,请阅读。一、选择题(1-10,21-40每题2分,11-20每题1分)
(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)可封装B)自顶向下C)模块化D)逐步求精
(7)软件详细设计产生的图如下:
该图是
A)N-S图B)PAD图C)程序流程图D)E-R图
(8)数据库管理系统是
A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统
(9)在E-R图中,用来表示实体联系的图形是
A)椭圆形B)矩形C)菱形D)三角形
(10)有三个关系R,S,和T如下:
R #FormatTableID_0#
S #FormatTableID_1#
T #FormatTableID_2#
其中关系T由关系R和S通过某种操作得到,该操作为
A)选择B)投影C)交D)并
(11)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则
A)FA必须定义在FB之前
B)FB必须定义在FA之前
C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
(12)有如下两个类定义
class AA{};
class BB{ AA v1,*v2; BB v3; int *v4; };
其中有一个成员变量的定义是错误的,这个变量是
A)v1 B)v2 C)v3 D)v4
(13)有如下类定义:
class XX{ int xdata;
public: XX(int n=0) : xdata (n) { } };
class YY : public XX{ int ydata; public: YY(int m=0, int n=0) : XX(m), ydata(n) { } };
YY类的对象包含的数据成员的个数是
A)1 B)2 C)3 D)4
(14)下列有关运算符函数的描述中,错误的是
A)运算符函数的名称总是以operator为前缀 B)运算符函数的参数可以是对象
C)运算符函数只能定义为类的成员函数 D)在表达式中使用重载的运算符相当于调用运算符重载函数
(15)下列关于模板形参的描述中,错误的是
A)模板形参表必须在关键字template之后 B)模板形参表必须用括弧( )括起来
C)可以用class修饰模板形参 D)可以用typename修饰模板形参
(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是
A)ios_base::cur B)ios_base::beg C)ios_base::out D)ios_base::end
(17)下列字符串可以用作C++标识符的是
A)2009var B)goto C)test - 2009 D)_123
(18)下列枚举类型的定义中,包含枚举值3的是
A)enum test {RED, YELLOW, BLUE, BLACK}; B)enum test {RED, YELLOW=4, BLUE, BLACK};
C)enum test {RED=-1, YELLOW,BLUE, BLACK}; D)enum test {RED, YELLOW=6, BLUE, BLACK};
(19)有如下程序段:
int i=1;
while (1) { i++; if(i == 10) break; if(i%2 == 0) cout << '*'; }
执行这个程序段输出字符*的个数是
A)10 B)3 C)4 D)5
(20)已知数组arr的定义如下:
int arr[5] = {1,2,3,4,5}; 下列语句中输出结果不是2的是
A)cout << *arr+1 <<endl; B)cout << *(arr+1)<<endl; C)cout << arr[1] <<endl; D)cout << *arr <<endl;
(21)计算斐波那契数列第n项的函数定义如下:
Int fib(int n){ if (n == 0) return 1; else if (n == 1) return 2; else return fib(n-1)+fib(n-2); }
若执行函数调用表达式fib(2),函数fib被调用的次数是
A)1 B)2 C)3 D)4
(22)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是
Sample a[2], *p = new Sample;
A)0 B)1 C)2 D)3
(23)下列关于虚基类的描述中,错误的是
A)使用虚基类可以消除由多继承产生的二义性 B)构造派生类对象时,虚基类的构造函数只被调用一次
C)声明“class B : virtual public A”说明类B为虚基类 D)建立派生类对象时,首先调用虚基类的构造函数
(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是
A)不合法的运算符 B)一元运算符 C)无操作数的运算符 D)二元运算符
(25)有如下模板声明:
template<typename T1, typename T2> class A;
下列声明中,与上述声明不等价的是
A)template <class T1,class T2> class A; B)template <class T1,typename T2> class A;
C)template <typename T1,class T2> class A; D)template <typename T1,T2> class A;
(26)下列关于C++流的描述中,错误的是
A)cout>>'A'表达式可输出字符A B)eof()函数可以检测是否到达文件尾
C)对磁盘文件进行流操作时,必须包含头文件fstream D)以ios_base::out模式打开的`文件不存在时,将自动建立一个新文件
27)有如下程序:
#include <iostream>
using namespace std;
class Toy{ public: Toy(char* _n) { strcpy (name,_n); count++;} ~Toy(){ count--; } char* GetName(){ return name; } static int getCount(){ return count; }
private:
char name[10];
static int count;
};
int Toy::count=0;
int mail(){
Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”);
cout<<t1.getCount()<<endl;
return 0; }
运行时的输出结果是
A)1 B)2 C)3 D)运行时出错
(28)有如下程序
#include<iostream> using namespace std;
class A { public: A(int i):rl(i) { } void print( ) {cout<<'e'<<r1<<'-';} void print( ) const {cout<<'C'<<r1*r1<<'-';} private: int rl; };
int main(){ A al(2); const A a2(4); al.print(); a2.print(); return 0; }
运行时的输出结果是
A)运行时出错 B)E2-C16- C)C4-C16- D)E2-E4-
29)有如下程序:
#include<iostream>
using namespace std;
class Name{
char name[20];
public:
Name(){
strcpy(name,""); cout<<'?';
}
Name(char *fname)){
strcpy(name,fname); cout<'?';
}
};
int main(){
Name names[3]={Name(“张三”),Name(“李四”)};
Return 0;
}
运行此程序输出符号?的个数是
A)0 B)1 C)2 D)3
(30)有如下程序:
#include<iostream>
using namespace std;
public:
AA(){ cout<<'1'; }
};
class BB: public AA{
int k;
public:
BB():k(0){ cout<<'2'; }
BB(int n):k(n){ cout<<'3';}
}
int main(){
BB b(4), c;
return 0;
}
运行时的输出结果是
A)1312 D)132 C)32 D)1412