函数的条件是(C)。
A)该类没有定义任何有参构造函数 B)该类没有定义任何无参构造函数 C)该类没有定义任何构造函数 D)该类没有定义任何成员函数
(13)在一个派生类的成员函数中,试图调用其基类的成员函数―void f();‖,但无法通过编译。这说明(A)。 A)f()是基类的私有成员 C)派生类的继承方式为私有 B)f()是基类的保护成员
D)派生类的继承方式为保护
(14)下列关于运算符重载的叙述中,错误的是(B)。 A)有的运算符可以作为非成员函数重载
B)所有的运算符都可以通过重载而被赋予新的含义 C)不得为重载的运算符函数的参数设置默认值 D)有的运算符只能作为成员函数重载
(15)下列关于模板的叙述中,错误的是(C)。
A)调用模版函数时,在一定条件下可以省略模板实参 B)可以用 int、double 这样的类型修饰符来声明模版参数
C)模板声明中的关键字 class 都可以用关键字 typename 替代
D)模板的形参表中可以有多个参数
(16)要利用 C++流进行文件操作,必须在程序中包含的头文件是(B)。 A)iostream B)fstream C)strstream D)iomanip
(17)下列字符串中不能作为 C++标识符使用的是(D)。
A)WHILE B)user C)_lvar D)9stars (18)下列语句中错误的是(A)。 A)const int a; B)const int a=10; C)const int*point=0;
D)const int*point=new int(10); (19)有如下程序: #include
for(int i=0; i<6; i+=3){ sum=i;
for(int j = i; j<6; j++)sum+=j; }
cout< 21 } 运行时的输出结果是(D)。 A)3 B)10 C)12 D)15 (20)下列语句中,正确的是(A)。 A)char*myString=\B)char myString=\ C)char myString[11]=\ D)char myString[12]=\ (21)若已经声明了函数原型―void fun(int a, double b=0.0);‖,则下列重载函数声明中正确的是(C)。 A)void fun(int a=90, double b=0.0); B)int fun(int a, double B); C)void fun(double a, int B); D)bool fun(int a, double b = 0.0); (22)有如下程序: #include Sample(){} ~Sample(){cout<<'*';} }; int main(){ Sample temp[2], *pTemp[2]; return 0; } 执行这个程序输出星号(*)的个数为(B)。 A)1 B)2 C)3 D)4 (23)下列选项中,与实现运行时多态性无关的是(A)。 A)重载函数 B)虚函数 C)指针 D)引用 (24)下列运算符函数中,肯定不属于类 Value 的成员函数的是(B)。 A)Value operator+(Value); B)Value operator-(Value, Value); C)Value operator*(int); D)Value operator/(Value); (25)下列模板声明中,有语法错误的是(D)。 A)template B)template (26)在语句―cout<<'A';‖中,cout 是(B)。 A)类名 B)对象名 C)函数名 D)C++的关键字 (27)有如下程序: #include MyClass(int i=0){cout<<1;} MyClass(const MyClass&x){cout<<2;} MyClass& operator=(const MyClass&x) {cout<<3; return*this;} ~MyClass(){cout<<4;} }; int main(){ MyClass obj1(1),obj2(2),obj3(obj1); return 0: } 运行时的输出结果是(A)。 A)112444 B)11114444 C)121444 D)11314444 (28)有如下程序: #include MyClass(int x):val(x){} void Set(int x){val=x;} void Print()const{cout<<\private: int val; }; int main(){ const MyClass obj1(10); MyClass obj2(20); obj1.Print(); //语句 1 obj2.Print(); //语句 2 obj1.Set(20); //语句 3 obj2.Set(30); //语句 4 return 0; } 其主函数中错误的语句是(C)。 A)语句 1 B)语句 2 C)语句 3 D)语句 4 (29)在类声明中,紧跟在―public:‖后声明的成员的访问权限是(B)。 A)私有 B)公有 C)保护 D)默认 (30)对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是(D)。 22 A)公有或私有 B)私有 C)保护或私有 D)公有或保护 (31)定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为(A)。 A)私有继承 B)非私有继承 C)保护继承 D)公有继承 (32)建立一个有成员对象的派生类对象时,各构造函数体的执行次序为(C)。 A)派生类、成员对象类、基类 B)成员对象类、基类、派生类 C)基类、成员对象类、派生类 D)基类、派生类、成员对象类 (33)如果表达式 a>=b 中的―>=‖是作为非成员函数重载的运算符,则可以等效地表示为(C)。 A)a.operator>=(b) B)b.operatotr>=(a) C)operator>=(a,b) D)operator>=(b,a) (34)当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(D)。 A)ios base::in B)ios_base::binary C)ios_base::in|ios_base::out D)ios_base::out (35)在一个抽象类中,一定包含有(B)。 A)虚函数 B)纯虚函数 C)模板函数 D)重载函数 二、填空题(每空2分,共30分) (1)对下列二叉树进行中序遍历的结果_DBXEAYFZC_。 (2)按照软件测试的一般步骤,集成测试应在__单元__测试之后进行。 (3)软件工程三要素包括方法、工具和过程,其中, A B C D E F X Y Z __过程__支持软件开发的各个环节的控制和管理。 (4)数据库设计包括概念设计、_逻辑设计_和物理设计。 (5)在二维表中,元组的__分量__不能再分成更小的数据项。 (6)当使用关键字__void__作为函数返回类型时,该函数不返回任何值。 (7)已知数组 a 中有 n 个元素,下列语句将数组 a 中从下标 x1 开始的 k 个元素移动到从下标 x2 开始的 k 个元素中,其中 0<=x1 __else return n*Fun(n-1);__ } 请补充完整,使得函数 Fun 能够正确计算形参 n 的阶乘。 (11)请在下列程序中的空格处填写正确的语句: class Sample{ public: Sample(){} 句补充完整。 for (int i = x1+k-1; i>=x1; i--) a[_x2+k-1_]=a[i]; (8)有如下程序: #include int fun1(int x) {return++x;} int fun2(int &x) {return++x;} int main(){ int x=1,y=2; y=fun 1(fun2(x)); cout< 程序的输出结果是_2,3_。 (9)有如下程序: #include pumpkin(){++count;} ~pumpkin(){--count;} static void total_count(){ cout< private: static int count; }; int pumpkin::count=0; int main(){ pumpkin pl[10]; pumpkin::total_count(); return 0; } 这个程序的输出结果是__10pumpkin(s)__。 (10)有如下递归函数: ~Sample(){} void SetData(int data) { //将 Sample 类成员变量 data 设置成形参的值 __Sample::data=data__ //注意形参与成员同名 } private: int data; }; (12)有如下类定义,请将Sample类的拷贝构造函数补充完整。 class Sample{ public: Sample(){) ~Sample() {if(p) delete p;) Sample (const Sample& s){ __p=new int;*p=s.*p__ } void SetData(int data) {p=new int(data);} private: int*p; }; (13)重载加法运算符―+‖,其函数名是__operator +_。(14)有如下程序: #include Wages(double CBase, double CBonus, double CTax) :base(CBase), bonus(CBonus), tax(CTax){} double getPay()const; //返回应付工资额 Wages operator+(Wages w)const; //重载加法 }; 23 double Wages::getPay()const {return base+bonus-tax;} Wages Wages::operator+(Wages w)const { return Wages(base+w.base, bonus+w.bonus, tax+w.tax); } int main(){ Wages wl(2000,500,100),w2(5000,1000,300); cout<<(wl+w2).getPay()< 程序的输出结果是__8100__ (15)有如下程序: #include char name[10]; public: Pet(char*name){strcpy(this->name, name);} const char*getName()const {return name;} virtual void call()const=0; }; class Dog: public Pet{ public: Dog(char*name):Pet(name){} void call()const{cout<<\汪汪叫\}; class Cat:public Pet{ public: Cat(char*name):Pet(name){} void call()const{cout<<\喵喵叫\}; int main(){ Pet *pet1=new Dog(\哈克\ *pet2=new Cat(\吉米\cout< cout< 程序的输出结果是__哈克汪汪叫__ __吉米喵喵叫__ 2008年9月二级 C++笔试试卷参考答案 一、选择题 (1)B)(2)D)(3)C)(4)A)(5)D)(6)B)(7)A)(8)B)(9)C)(10)D(11)A) (12)A)(13)C)(14)B)(15)D(16)B) (17)B)(18)D)(19)A)(20)D(21)C) (22)C)(23)A)(24)D)(25)C)(26)B) (27)C)(28)B)(29)A)(30)D(31)A) (32)C)(33)A)(34)B)(35)C) 二、填空题 (1)DBXEAYFZC (2)单元 (3)过程 (4)逻辑设计 (5)分量 (6)void (7)X2+k-1 (8)2,3 (9)10pumpkin(s) (10)else return n*Fun(n-1); (11)Sample::data (12)p=new int; *p=s.*p; (13)operator + (14)8100 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)队头指针可以大于队尾指针,也可以小于队尾指针 24 (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 A B C a 1 2 b 2 1 c 3 1 S A B C d 3 2 T A B C A 1 2 B 2 1 C 3 1 D 3 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 25