2022年面向对象程序设计试卷A .pdf
1 / 10 华侨大学面向对象程序设计(二) 试卷( A)系别计算机、软件工程、网络工程08 考试日期 2009 年 06 月 29 日姓名学号成绩一、选择题 (20 分,每小题 2 分) (1) 关于重载函数在调用时匹配依据的说法中,错误 的是 (1) 。A)参数个数B)参数的类型C)函数名字D)函数的类型(2) 下面对友元函数描述正确 的是( 2)。A)友元函数的实现必须在类的内部定义B)友元函数是类的成员函数C)友元函数破坏了类的封装性和隐藏性D)友元函数不能访问类的私有成员(3) (3)不是面向对象系统所包含的要素。?A)对象 B)内联 C)类 D)继承(4) 在 C+ 语言中函数返回值的类型是由(4)决定的。A)调用该函数时系统临时B) return语句中的表达式类型C)定义该函数时所指定的函数类型D)调用该函数时的主调函数类型(5) 在 C+ 语言中,对函数参数默认值描述正确 的是( 5)。A) 函数若有多个参数,只能为一个参数设定默认值(函数参数的默认值只能设定一个)B)一个函数的参数若有多个,则参数默认值的设定可以不连续C)函数参数必须设定默认值D)在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值(6) 在 C+ 中,数据封装要解决的问题是(6)。A)数据的规范化 B)便于数据转换C)避免数据丢失 D)实现数据隐蔽(防止不同模块之间数据的非法访问)(7) C+ 语言规定,程序中各函数之间 (7) A) 既允许直接递归调用也允许间接递归调用B) 不允许直接递归调用也不允许间接递归调用C) 允许直接递归调用不允许间接递归调用D) 不允许直接递归调用允许间接递归调用(8) 以下关于派生类特性的叙述中,错误 的叙述是(8) 。A)派生类中只能继承基类成员而不能重定义基类成员。B) 对于私有继承,基类成员的访问权限在派生类中全部变成私有。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 10 页2 / 10 C) 派生类对基类的继承具有传递性。D) 初始化从基类继承来的数据成员,必须通过调用基类的构造函数来完成。(9) 以下关于指针函数的叙述中,正确 的是( 9)。A) 指针函数用来存放函数名B) 指针函数用来存放函数调用结果的地址C) 指针函数用来指示函数的入口D)指针函数就是函数指针的别名(10) 将全局数据对象的存储类别限定为static,其目得是 (10) 。A) 为了解决同一程序中不同的源文件中全局量的同名问题;B) 为了保存该变量的值;C) 使该变量成为局部变量;D) 使该变量能作为函数参数。二、阅读以下程序并给出执行结果(20 分,每小题 5 分)。1、#include using namespace std。class A public: A() cout 。 A() cout-A。 。 。class B public: B() cout 。 B() cout-B。 。 。class C public: C() cout 。 C() cout-C 。 。 。void func() coutnfunc: 。 A a。 static B b。 C c。 int main() coutmain: 。 for(int i=1 。 i=2。 +i) if(i=2) C c 。 else A a。 B b。 func() 。 func()。 return 1。 2、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 10 页3 / 10 #include using namespace std。class B1 public: B1(int i) coutconstructing B1 iendl。 B1() coutdestructing B1endl 。 。class B2 public: B2() coutconstructing B2 *endl。 B2() coutdestructing B2endl 。 。class C:public B2,public B1 public: C(int a,int b):B1(a),b1(b) coutconstructing Cendl 。 C() coutdestructing Cendl 。 private: B1 b1。B2 b2。void main() C obj(1,2) 。 3、#include using namespace std。class A private: /其它成员public: void func(int data) coutclass A:dataendl 。 。class B: public A /其它成员public: void func() coutfunction in B without parameter! n。 void func(int data) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 10 页4 / 10 coutclass B:datafunc(100) 。return 1。 4、#include using namespace std。func(int a,int b) 。int main() int k=4,m=1,p 。p=func(k,m) 。coutpendl 。p=func(k,m) 。coutpendl 。return 1。 func(int a,int b) static int m=0,i=2 。i+=m+1 。m=i+a+b 。return (m) 。 三、阅读以下程序(或函数)并简要叙述其功能(20 分,每小题5 分)1、int chnum (char *str) int i,j,k,h,len,num=0 。len=strlen(str) 。for(i=0 。 i1) k=k*10 。j-。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 10 页5 / 10 h=stri-0 。num=num+h*k 。 return num。 输入: 123 运行结果:?此题比较难,且没有主函数无法运行功能:2、# include using namespace std。int main() char *a5=student,worker,cadre,soldier,peasant。char *p1,*p2 。 p1=p2=a0 。 for (int i=0 。 i0) p1=ai。 if (strcmp(ai,p2)0) p2=ai。 cout p1 p2endl 。return 1。 运行结果:?功能:3、#include using namespace std。void func(int,int) 。int main() int array=48,91,83,75,36。int len=sizeof(array)/sizeof(int) 。for (int i=0 。ilen。i+) coutarrayi, 。coutendlendl 。func(array,len)。return 1。 void func(int a,int size) int i,temp 。for(int pass=1 。passsize。pass+) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 10 页6 / 10 for(i=0 。 iai+1) temp=ai 。ai=ai+1 。ai+1=temp 。 for (i=0 。isize。i+) coutai, 。coutendl。 请叙述函数func( ) 的功能。4、#include using namespace std。int funp(const char* str1, const char* str2) 。int main() char a80,b80 。coutab 。coutresult=funp(a,b)endl。return 1。 int funp (const char* str1, const char* str2) while(*str1 & *str1=*str2) str1+。 str2+。 return *str1 - *str2 。 请叙述函数funp( ) 的功能。四、阅读以下程序并填空(填上正确的语法成分),使其成为完整的程序(10分, 每空 2 分)从已建立的学生链表中删除学号为number 的学生结点。struct Student long number。float score。Student * next。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 10 页7 / 10 Student * Delete (Student *head,long number) / 删除链表结点 Student *p,*pGuard 。 /p 指向要删除的结点,pGuard 指向要删除的结点的前一结点if( (1) ) / 原链表为空链表 coutnext。delete p。coutnumbernext) if (pGuard-next-number=number) /找到要删除的结点 (4) (5) delete p。coutnumberhave been deleted n 。return(head)。 coutnumbernot found!n 。/未找到要删除的结点return (head)。 五、编程题( 30%)1、编写函数char* copystr(char * dest,const char * source ,int m)将字符串source中第 m个字符开始的全部字符(source 的最右子串)复制成另一个字符串dest ,并返回复制的串,请在主函数中输入字符串及m的值并输出复制结果。2、设计并测试复数类(Complex)(1) 设计一个复数类(Complex)包含两个数据成员:实部(real ),虚部( imagin );包含如下主要成员函数:构造函数(用来初始化一个复数对象,默认实部、虚部均为0);重载加、减法运算符(+、- )实现复数类的加、减法运算;显示复数对象,按a+bi (a 为实部、 b 为虚部)格式输出一个复数对象。(2) 请在主函数中使用所设计的复数类定义两个复数对象,求其和、差并输出。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 10 页8 / 10 华侨大学面向对象程序设计(二)试卷( A)答题纸系别 计算机、软件工程、网络工程08 考试日期 2009 年 06 月 29日姓名学号成绩一、选择题 (20 分,每小题 2 分) (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)二、阅读以下程序并给出执行结果(20 分,每小题 5 分)。1、2、3、4、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 10 页9 / 10 三、阅读以下程序(或函数)并简要叙述其功能(20 分,每小题 5 分)1、2、3、4、四、阅读以下程序并填空(填上正确的语法成分),使其成为完整的程序(10分, 每空 2 分)(1) (2) (3) (4) (5) 五、编程题( 30%)1、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 10 页10 / 10 2、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 10 页