C++ 2011年试卷及答案

更新时间:2023-09-30 19:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京邮电大学通达学院 2010/2011学年第二学期

《 面向对象程序设计及C++ 》期末试卷A

本试卷共 8 页; 考试时间 110 分钟; 专业 班级 学号 姓名

一 二 三 四 五 六 七 八 九 十 总 分 题号 得分 自 觉 得分 遵装 一、选择题(20分,每题1分)

1、C++源程序文件的扩展名是( B )。 A..obj

B..cpp C..exe

D..c

守考订试线规则内,诚不信考要试,答绝不题作弊 2、下列关于类与对象关系的描述中,不正确的是( C )。 A.类是具有相同属性和行为的一类对象的抽象 B.对象是类的具体实体

C.类与对象在内存中均占有内存单元 D.类是创建对象的模板

3、以下设置默认值的函数原型声明中错误的是( C )。

A.int add(int x, int y, int z=5); B.int add(int x, int y=4, int z=5); C.int add(int x, int y=4, int z); D.int add(int x=3, int y=4, int z=5); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( D )。

A.参数的个数 B.参数的类型 C.参数的顺序 D.函数的返回类型

5、下列几个运算符以类的成员函数形式重载时,(B )与其他3个的形式参数个数不 一样。

A.后置++ B.前置++ C. + D./ 6、采用函数重载的目的在于(A )。 A.实现共享

B.减少空间

C.提高速度

D.使用方便,提高可读性

7、下列运算符中,( C )运算符在C++语言中不能重载。

《面向对象程序设计及C++》试卷 第 1 页 共 8 页

A.+= B.[ ] C.:: D.new

8、下列定义引用类型变量时,(A )是正确的。 已知:int k=1000;

A.int &x=k; B.char &y; C.int &z=1000; D.float &t=&k; 9、(A )是析构函数的特征。 A.一个类只能定义一个析构函数 B.析构函数名与类名完全相同 C.析构函数的定义只能在类体内 D.析构函数可以有一个或多个参数

10、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用(A )提供对全局变量的访问。 A.域运算符

B.类运算符

C.重载

D.引用

11、友元的作用(A )。 A.提高程序的运行效率 C.实现数据的隐藏性

B.加强类的封装性 D.增加成员函数的种类

12、假设定义了函数模板如下:

template

T max(T x,T y){ return x + y;} 并定义了int i; char c; 错误的调用语句是:__d__。 A.max(i,i) B.max(c,c) C.max((int)c,i) D.max(i,c) 13、下列说明中, const char *ptr=”Nanjing”; ptr应该是(c )。 A.指向字符常量的指针

B.指向字符的常量指针 D.指向字符串的常量指针

C.指向字符串常量的指针

14、下列关于对象数组的描述中,(D )是错误的。 A.对象数组的下标是从0开始的 B.对象数组的数组名是一个常量指针 C.对象数组的每个元素是同一个类的对象 D.对象数组只能赋初值,而不能在定义后赋值

15、print函数是一个类的常成员函数,无返回值,下列(a )是正确的。 A.void print( )const

B.const void print( )

《面向对象程序设计及C++》试卷 第 2 页 共 8 页

C.void const print( ) D.void print(const)

16、派生类对象对它继承自基类的成员中的( A )是可以访问的。 A.公有继承的公有成员 C.公有继承的保护成员

B.公有继承的私有成员 D.私有继承的公有成员

17、设置虚基类的目的是( D )。 A、简化程序

B.消除二义性 D.减少目标代码

C.提高运行效率

18、模板的使用是为了( a )。 A.提高代码的可重用性 C.加强类的封装性

B.提高代码的运行效率 D.实现多态性

19、多继承派生类构造函数构造对象时,最先被调用的是( B )。 A.派生类构造函数

B.虚基类的构造函数 D.派生类子对象的构造函数

C.非虚基类的构造函数

20、一个类的友元函数能够访问该类的(D )。 A.私有成员

得分 B.保护成员 C.公有成员 D.所有成员

二、填空题(10分,每空1分)

1、类中成员默认的访问属性为 private 。

2、静态联编通过 运算符重载 和函数重载实现,动态联编通过继承、

和基类的指针或引用实现。

3、隐藏在每个类的成员函数中的特殊指针为 this 。

4、赋值兼容规则仅适用于通过 方式派生的派生类和其基类之间。 5、在输入/输出流类文件iostream.h中定义的流对象cin代表 输入 设备。 6、在C++语言的异常处理机制中, try 语句块用于检测异常, catch 语句块用于捕获和处理异常。

7、C++语言既支持 面向对象 的程序设计,又支持 面向过程 的程序设计。

得分 三、判断题(10分,每题2分)

1、类的构造函数和析构函数都可以重载。( F)

2、运算符重载不可以改变优先级,但可以改变结合性。( )

《面向对象程序设计及C++》试卷 第 3 页 共 8 页

3、通常类的拷贝构造函数的形参是某个对象的引用。( )

4、引用只是某一变量的别名,系统不为引用另外分配内存空间。(T ) 5、如果类A是类B的友元,则类B一定也是类A的友元。( F )

得分 四、读程序题(20分,每题5分)

1、下面程序的运行结果是?

#include

void main()

{ int arr[4]={1,2,3,4}; int *a=arr; int *&p=a; p++; *p=100; cout<<*a<<\ \ for(int i=0;i<4;i++) cout<

2、下面程序的运行结果是? #include class A { int n; public: A(){cout<<\ ~A(){cout<<\};

class B { int n; A a;

《面向对象程序设计及C++》试卷 第 4 页 共 8 页

自 觉 遵装 守 考订 试 线规 则内, 诚 不信 考要 试 ,答绝 不题 作 弊 自 觉 遵装 守考订试线规则内,诚不信考要试,答绝不题作弊public: B(){cout<<\ ~B(){cout<<\};

void main() { B b; }

3、下面程序的运行结果是? #include class base1 {

public: virtual void who() { cout<<\};

class base2 {

public: void who() { cout<<\} };

class derived: public base1,public base2 {

public: void who() { cout<<\};

void main() { base1 ob1,*ptr1; base2 ob2,*ptr2; derived ob3; ptr1=&ob1; ptr1->who(); ptr2=&ob2; ptr2->who(); ptr1=&ob3; ptr1->who(); ptr2=&ob3; ptr2->who(); }

4、下面程序的运行结果是?

《面向对象程序设计及C++》试卷 第 5 页 共 8 页

#include class A {

public: int n; A(int i){n=i; cout<<\};

class B:virtual public A {

public: B(int i):A(i){n=i*i;cout<<\};

class C:virtual public A {

public: C(int i=0):A(i){n=2*i;cout<<\};

class D: public B,public C {

public: D(int x):C(x),B(x),A(x){n=3*x;cout<<\};

void main() { D d(20); }

得分 五、程序填空(26分,每空2分)

1、以下程序定义类模板Complex,在类中,定义构造函数,并以成员函数重 载”后置++”运算符,用友元函数重载”<<”运算符,并在主函数中定义模板类

的对象,对上述函数进行调用。请将程序补充完整。

#include

(1) class Complex { T real,imag; public:

Complex(T a=0,T b=0): {} (2)

Complex operator++( ) (3)

《面向对象程序设计及C++》试卷 第 6 页 共 8 页

{ Complex temp( ) ; (4) real++; imag++; return temp; } ostream& operator<<(ostream& out, x) (5) (6) { out<0) out<<\ out<

int main() { Complex A1(2.3,4.6),A2; (8) A2=A1++; cout<<\

return 0; }

2、函数调用语句Change(“ff1.txt”, “ff2.txt”)将已有文本文件ff1.txt中的小写字母全部改写成大写字母生成一个新文件ff2.txt,请将函数Change补充完整: #include

#include (9) void Change(char *s1,char* s2) { ifstream in(s1); ; (10) if(!in || !out) { cout<<\打开文件失败!\ return; }

《面向对象程序设计及C++》试卷 第 7 页 共 8 页

char ch;

while( ) (11) { in.get(ch);

if( ) (12)

ch=ch-32; ; (13) }

in.close();;

out.close(); }

得分 六、请按要求将程序补充完整并给出输出结果(14分)

请编写程序: (1)声明一个学生类Student,设计私有数据成员: 年龄 age; 姓名 name; 定义4个公有成员函数:参数带默认值(0, “no”)的构造函数,改变

数据成员值的函数Set,获取数据成员函数Getage, Getname。 (2)main()函数如下,列出程序输出结果。 #include #include

(1)给出类Student的完整声明(10分) void main() { Student stu[3]={Student(13,\ stu[2].Set(12,\

cout<

cout<

(2)给出程序的输出结果?(4分)

《面向对象程序设计及C++》试卷 第 8 页 共 8 页

自 觉 遵装 守 考订 试 线规 则内, 诚 不信 考要 试 ,答绝 不题 作 弊

本文来源:https://www.bwwdw.com/article/dz2d.html

Top