数声明 };
class Cylinder:public Circle { //圆柱体类
double h; //高度 public:
Cylindr(double radius=0, doubli height=0):
Circle(radius),h (height){}
Virtual double Area() { //计算圆柱体的表面积
return 2*PI*r*(r+h); } };
(14)补充完整下面的类定义: class XCH{ char* a; public:
XCH(char* as) { //构造函数 a=new char[strlen(aa)+1]; strcpy(a,aa); }
XCH& operator=(const XCH& x) //重载赋值函数 Delele []a;
A=new char[strlen(x.a)+l]; strcpy(a, x .a) 【14】; }
~XCH() {delete []a;} };
(15)补充完整下面的模板定义:
template
class Xtwo{ //由两个Type类型的数
据成员构成的模板类 Type a; Type b; public:
Xtwe(Type aa=0, Type bb=0):a(aa),b(bb){}
int Ccmpare (){//比较a和b的大小 if (a>b)returm 1;
else if(a==b) return 0; else return -1; }
Type Snm() {return a+b;} //返回a和b之和
Type Mult(); //函数声明,返回a和b之乘积 };
Template
参考 答案 一、 选择题:
(11)D (12)B (13)A (14)B (15)B (16)A (17)B (18)C (19) A (20)D (21)D (22)B ( 23)A (24)B (25)C (26)B (27)A (28)B (29)C (30)B (31)D (32)D (33)C (34)C (35)B 二、填空题 (6)213 (7)15,30,45 (8)examination(9)10 (10)友元 (11)id(i),mom(c) (12)Dog speak Woof (13)Virtual double Area(){ return PI *r*r} (14)return *a (15)Xwo
2009年9月二级C++笔试试卷
(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 << *art << 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
(26)下列关于C++流的描述中,错误的是( )。 A)cout>>'A'表达式可输出字符A
B)eof()函数可以检测是否到达文件尾
C)对磁盘文件进行流操作时,必须包含头文件fstream
D)以ios_base::out模式打开的文件不存在时,将自动建立一个新文件 (27)有如下程序: # include
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 main(){
Toy t1(\ cout< 运行时的输出结果是( )。 A)1 B)2 C)3 D)运行时出错 (28)有如下程序: # include A(int i) : r1(i) {} void print() {cout<<'E'< void print() const {cout<<'C'< pivate: int r1; }; int main(){ 日 A a1(2); const A a2(4); a1.print(); a2.print(); return 0; } 运行时的输出结果是( )。 A)运行时出错 B)E2-C16- C)C4-C16- D)E2-E4- (29)有如下程序: # include class Name{ char name[20]; public: Name(){ strcpy(name, \ } Name(char *fname){ strcpy(name,fname); cout<<'?'; } }; int main(){ Name names[3]={Name(\张三\李四\ return 0; } 运行此程序输出符号?的个数是( )。 A)0 B)1 C)2 D)3 (30)有如下程序: # include 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 B)132 C)32 D)1412 (31)有如下程序: # include ~C1(){ cout<<1; } }; class C2: public C1{ public:
相关推荐: