西南交大C++2008-2009年期末试题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

考试试卷

课程代码 3200566 课程名称 面向对象C++ 考试时间120分钟

阅卷教师签字:

答题说明:① 考试形式:闭卷;② 考试时间:120分钟; ③ 全部答案请写在答题卷上,试题卷上作答无效。

试题卷A

一、填空题(每空1分,共32分)

1. “面向对象编程”的英文缩写是 (1) 。

2. 使用关键字struct 定义类时,缺省的成员访问权属性是 (2) 。

3. C++的重载(overload)分为两种,即 (3) 重载和 (4) 重载。

4. 执行语句int a=1, b=2, &p=a, &q=p; q=b; cout<

5. C++的内联函数应使用关键字 (7) 进行声明。

6. 非成员函数应声明为类的 (8) 函数才能访问这个类的private 成员。

7. 已知MyClass 是一个用户自定义类的类名,若有定义:MyClass a[6], b; 则系统自动调用该类构造函数 (9) 次;当标识符a 和b 离开它的作用域时,系统将自动调用该类的析构函数 (10) 次。

8. 在一个成员函数内调用虚函数时,对该虚函数的调用进行 (11) 联编;含有纯虚函数的类称为 (12) 类,它只能作为基类使用。

9. 用new 命令创建一个3行4列int 型二维数组,数组名为w, 正确的语句是 (13) 。 10. 在C++的流类库中,根基类为 (14) 。

11. 执行try{cout<<'A'; throw 0; cout<<'B'; }catch(int){} cout<<'C'; 的输出是 (15) 。 12. 以下程序在字符文件ABC.TXT 中输出如下所示字符图形,请填空使之完整。 * *** ***** ******* ********* #include #include #include using namespace std; void main()

班 级 学 号 姓 名

密封装订线 密封装订线 密封装订线

{ int n;

cout<<"请输入打印行数n=";cin>>n;

ofstream f( (16) );

for(int i=1;i<=n;i++)

{ f<

for(int j=1;j<= (18) ;j++) f<<"*";

f<< (19) ;

}

f.close();

}

13. 类A定义了拷贝构造函数并且主程序的输出为 100,请填空使程序完整。

#include

using namespace std;

class A

{ private: int x;

public:

A() { x=100; }

A(A &u) { (20) }

void prt() { cout<

};

void main()

{ A *p= (21) , v( (22) );

v.prt();

}

14. 下面程序的运行结果如下:

Derive1:1

Derive2:2

根据结果将程序补充完整。

#include

using namespace std;

class Base

{ protected: int b;

public:

Base(int i) { b=i;}

virtual void print() (23) ; //纯虚函数

};

class Derive1:public Base

{ public:

Derive1(int i) { b=i; }

void print() { cout<<"Derive1:"<

};

class Derive2:public Base

{ public:

Derive2(int i): (24) { }

void print() { cout<<"Derive2:"<

};

void func( (25) )

{ ptr->print();

}

void main()

{ Derive1 obj1(1); Derive2 *p2= (26) ;

func( (27) ); func(p2);

}

15. 以下类模板实现下标从1开始的N元一维数组;主程序产生的输出是12345。请填空

使程序完整。

#include

using namespace std;

template< (28) , int N>

class CVect

{ private: T *buf;

public:

CVect() { buf=new T[N]; } //构造函数

~CVect() { delete (29) ; } //析构函数

(30) operator[](int i) //重载[]运算符

{ if(i>N||i<1) throw "错误: 下标超范围!";

return *(buf+i-1);

}

};

void main()

{ CVect (31) ;

for(int i=1; i<= (32) ; i++) { a[i]=i; cout<

cout<

}

二、单项选择题(2×15分)

1. 若有定义int a[5]; int * const ptr=a; 以下说法正确的是(1) 。

(A) 允许向ptr[2]赋值(B) ptr++; 语句能够通过编译

(C) 不允许向*ptr赋值(D) 上述定义存在语法错误

2. 若函数定义为Fun(int &i), 变量定义n=100, 则下面调用正确的是(2) 。

(A) Fun(20) (B) Fun(*n) (C) Fun(&n) (D) Fun(n)

3. 下列C++函数定义错误的是(3) 。

(A) Fun(int x=0, int y=0, int z=0) (B) Fun(int x, int y=0, int z=0)

(C) Fun(int x=0, int y=0, int z) (D) Fun(int x, int y, int z)

4. 以下类型强制语句编译不能通过的是(4) 。

(A) cout<<(int)3.5F; (B) cout<

(C) cout<3.5F; (D) cout<(3.5);

5. 下列关于运算符重载的描述正确的是(5) 。

相关文档
最新文档