2022年《面向对象程序设计及C++》期末试卷A .pdf
面向对象程序设计及C试卷第 1 页 共 8 页南京邮电大学通达学院 2010/2011学年第二学期 面向对象程序设计及C 期末试卷 A 本试卷共 8 页;考试时间 110 分钟;专业班级学号姓名题号一二三四五六七八九十总 分得分一、选择题( 20 分,每题 1分)1、C+源程序文件的扩展名是() 。A.obj B.cpp C.exe D.c 2、下列关于类与对象关系的描述中,不正确的是() 。A类是具有相同属性和行为的一类对象的抽象B对象是类的具体实体C类与对象在内存中均占有内存单元D类是创建对象的模板3、以下设置默认值的函数原型声明中错误的是() 。A int add(int x, int y, int z=5); Bint add(int x, int y=4, int z=5); Cint add(int x, int y=4, int z); Dint add(int x=3, int y=4, int z=5); 4、 系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是() 。A参数的个数B参数的类型C参数的顺序D函数的返回类型5、下列几个运算符以类的成员函数形式重载时,( )与其他 3 个的形式参数个数不一样。A后置 + B前置 + C + D/ 6、采用函数重载的目的在于() 。A实现共享B减少空间C提高速度D使用方便,提高可读性7、下列运算符中, ()运算符在C+语言中不能重载。得分装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 面向对象程序设计及C试卷第 2 页 共 8 页A+= B C:Dnew 8、下列定义引用类型变量时,()是正确的。已知: int k=1000; A int &x=k; B char &y; C int &z=1000; Dfloat &t=&k; 9、 ()是析构函数的特征。A一个类只能定义一个析构函数B析构函数名与类名完全相同C析构函数的定义只能在类体内D析构函数可以有一个或多个参数10、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用()提供对全局变量的访问。A域运算符B类运算符C重载D引用11、友元的作用() 。A提高程序的运行效率B加强类的封装性C实现数据的隐藏性D增加成员函数的种类12、假设定义了函数模板如下: template T max(T x,T y) return x + y; 并定义了 int i; char c; 错误的调用语句是:_。Amax(i,i) Bmax(c,c) Cmax(int)c,i) Dmax(i,c) 13、下列说明中,const char *ptr= ” Nanjing ” ; ptr 应该是() 。A指向字符常量的指针B指向字符的常量指针C指向字符串常量的指针D指向字符串的常量指针14、下列关于对象数组的描述中,( )是错误的。A对象数组的下标是从0 开始的B对象数组的数组名是一个常量指针C对象数组的每个元素是同一个类的对象D对象数组只能赋初值,而不能在定义后赋值15、 print 函数是一个类的常成员函数,无返回值,下列()是正确的。Avoid print( )const Bconst void print( ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 面向对象程序设计及C试卷第 3 页 共 8 页Cvoid const print( ) Dvoid print(const) 16、派生类对象对它继承自基类的成员中的()是可以访问的。A公有继承的公有成员B公有继承的私有成员C公有继承的保护成员D私有继承的公有成员17、设置虚基类的目的是() 。A、简化程序B消除二义性C提高运行效率D减少目标代码18、模板的使用是为了() 。A提高代码的可重用性B提高代码的运行效率C加强类的封装性D实现多态性19、多继承派生类构造函数构造对象时,最先被调用的是() 。A派生类构造函数B虚基类的构造函数C非虚基类的构造函数D派生类子对象的构造函数20、一个类的友元函数能够访问该类的() 。A私有成员B保护成员C公有成员D所有成员二、填空题( 10 分,每空 1分)1、类中成员默认的访问属性为。2、静态联编通过和函数重载实现,动态联编通过继承、和基类的指针或引用实现。3、隐藏在每个类的成员函数中的特殊指针为。4、赋值兼容规则仅适用于通过方式派生的派生类和其基类之间。5、在输入 /输出流类文件iostream.h 中定义的流对象cin 代表设备。6、在 C+语言的异常处理机制中,语句块用于检测异常,语句块用于捕获和处理异常。7、C+语言既支持的程序设计,又支持的程序设计。三、判断题( 10 分,每题 2分)1、类的构造函数和析构函数都可以重载。( )2、运算符重载不可以改变优先级,但可以改变结合性。()3、通常类的拷贝构造函数的形参是某个对象的引用。()得分得分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 面向对象程序设计及C试卷第 4 页 共 8 页4、引用只是某一变量的别名,系统不为引用另外分配内存空间。( )5、如果类A 是类 B 的友元,则类B 一定也是类A 的友元。()四、读程序题( 20 分,每题 5分)1、下面程序的运行结果是?#include void main() int arr4=1,2,3,4; int *a=arr; int *&p=a; p+; *p=100; cout*a *pendl; for(int i=0;i4;i+) coutarri ; coutendl; int b=10; p=&b; cout*a *pendl; for(i=0;i4;i+) coutarri ; coutendl; 2、下面程序的运行结果是?#include class A int n; public: A()coutconstructing Aendl; A()coutdestructing Aendl; class B int n; A a; public: B()coutconstructing Bendl; 得分装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 面向对象程序设计及C试卷第 5 页 共 8 页B()coutdestructing Bendl; ; void main() B b; 3、下面程序的运行结果是?#include class base1 public: virtual void who() coutbase1endl; ; class base2 public: void who() coutbase2endl; ; class derived: public base1,public base2 public: void who() coutderivedwho(); ptr2=&ob2; ptr2-who(); ptr1=&ob3; ptr1-who(); ptr2=&ob3; ptr2-who(); 4、下面程序的运行结果是?#include class A 装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 面向对象程序设计及C试卷第 6 页 共 8 页 public: int n; A(int i)n=i; coutn in A is:nendl; ; class B:virtual public A public: B(int i):A(i)n=i*i;coutn in B is:nendl; class C:virtual public A public: C(int i=0):A(i)n=2*i;coutn in C is:nendl; ; class D: public B,public C public: D(int x):C(x),B(x),A(x)n=3*x;coutn in D is:nendl; ; 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) Complex temp( ) ; (4) 得分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 面向对象程序设计及C试卷第 7 页 共 8 页real+; imag+; return temp; ostream& operator(ostream& out, x) (5) (6) out0) out+; outx.imagi; outendl; ; (7) ; int main() Complex A1(2.3,4.6),A2; (8) A2=A1+; coutafter A2=A1+A1=A1A2=A2endl; 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 打开文件失败!endl; return; char ch; while( ) (11) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 面向对象程序设计及C试卷第 8 页 共 8 页 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 stu3=Student(13,wang); stu2.Set(12,zhang); coutstu0.Getage() stu0.Getname()endl; coutstu1.Getage() stu1.Getname()endl; coutstu2.Getage() stu2.Getname()endl; (2)给出程序的输出结果?(4 分)得分装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -