2023年面向对象程序设计二试卷A.docx
华侨大学面向对象程序设计(二)试卷(A)系别 计算机、软件工程、网络工程0 8 考试期2 0 23年06月29 口姓名学号 成绩一、选择题(2 0分,每小题2分)(I)关于重载函数在调用时匹配依据的说法中,错误的是一,A)参数个数1B)参数的类型C)函数名字eD)函数的类型(2)下面对友元函数描述对的的是_(2)。A)友元函数的实现必须在类的内部定义B)友元函数是类的成员函数。友元函数破坏了类的封装性和隐藏性D)友元函数不能访问类的私有成员(3)3不是面向对象系统所包含的要素。?A)对象B)内联C)类D)继承(4)在C+语途中函数返回值的类型是由(4)决定的。A)调用该函数时系统临时B) re turn语句中的表达式类型C)定义该函数时所指定的函数类型D)调用该函数时的主调函数类型(5)在C+语言中,对函数参数默认值描述对的的是国。A)函数若有多个参数,只能为一个参数设定默认值(函数参数的默认值只能设定一个)B)一个函|数的参数若有多个,则参数默认值的设定可以不连续C)函数参数必须设定默认值D)在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值e h & r - a 喇,一。+*.叫uuu t 3 P10 i_n.puj.、二一=2 7, “, , uguotMUgguM-=K4uWthJa>«ndhHum 11*i nt fu n p (con s t ch a r* slrl. const char* s tr2)(while(*s t rl && * S tr 1 =*s t r2)(s t rl + + : s tr2+:)retu r n *strl - ,st r 2 ;)请叙述函数fun p()的功能。四、阅读以下程序并填空(填上对的的语法成分),使其成为完整的程序(10分,每空2分)从已建立的学生链表中删除学号为n u mber的学生结点。str u ct S tudent(»lon g number;f 1 oat s cor e ;S (ude n t * next:);Stu d e nt*De 1 et e ( S tu d ent * he a d,lo n g number) /删除链表结点 Stud cnl *d, *p Guard: p指向婴删除的结点,pGuard指向要删除的结点的前一结点i f (CD)原堆表为空链表(«>cout«"nL i s t is nui 1 !n"r ct u m( h e a d );*Iif (R/要删除的结点为链表的第一个结点.(带格式的:缩进:首行缩进。p =head;»h e ad= h e a d->n e xt;delete p;» cout«numb e r «" t h e head o f list have been deleted n"re t urn(h e ad);)f o r (pG u ard=head: Q); pGuar d =pGuard >nex t)。*>i f (pGu ard > n ext->n u mbe r =numb e r)» / / 找至l要删除的结点° (。(4)。(5)"Ie 1 e te p;co u t «n u mb e r«"h a ve been del e (ed n";» r e t urn ( h ead);cou t «numb e r«"no t fou n d! n "M未找到要删除的结点r e t urn (h e a d);五、编程题(3 0%)1、编写函数 char* copystr (char * dest, const char * source , in t m) 将字符串source中笫m个字符开始的所有字符(s ource的展右子串)匏制成另一个字符串 desi,并返回史制的申,诗在主函数中输入字符串及m的值并输出豆制结果。2、设计并测试发数类(Complex)(1)设计一个任数类(Comp 1 ex)包含两个数据成员:实部(r e a 1),虚部(imag i n); 包含如下重要成员函数: 构造函数(用来初始化一个且数对象,默认实部、虚部均为0): 重载加、减法运算符(+、-)实现豆数类的加、减法运算; 显示夏数对象,按a+bi (a为实部、b为虚部)格式输出一个更数对象。(2)请在主函数中使用所设计的更数类定义两个且数对象,求其和、差并输出。华侨大学面向对象程序设计(二)试卷(A)答题纸系别 计算机、软件工程、网络工程08考试日期2 0 23年06月2 9日姓名学号 成绩_一、选择题(20分,每小题2分)(1) (3)(4) ( 5) (8) ( 9)(10) 二、阅读以下程序并给出执行结果(2 0分,每小题5分)。、3、4,三、阅读以下程序(或函数)并简要叙述其功能(20分,每小题5分)1、2、3、4、四、阅读以下程序并填空(填上对的的语法成分),使其成为完整的程序(10分,每空2分)(2)(3) ) 五、编程题(30%)1、(6)在C+中,数据封装要解决的问题是。A)数据的规范化B)便于数据转换C)避免数据丢失D)实现数据隐蔽(防止不同模块之间数据的非法访问)(7) C+语言规定,程序中各函数之间_QJ_A)既允许直接通调用也允许间接递归调用B)不允许克接递归调用也不允许间接递归调用O允许直接递必调用不允许间接递打调用D)不允许直接递归调用允许间接递以调用(8)以下关于派生类特性的叙述中,错误的叙述是(8 )。A)派生类中只能维承基类成员而不能重定义基类成员。B)对于私有继承,基类成员的访问权限在派生类中所有变成私有。O派生类对基类的维承具有传递性。D)初始化从基类维承来的数据成员,必须通过调用基类的构造函数来完毕。(9)以下关于指针函数的叙述中,对的的是3_。A)指针函数用来存放函数名 *B)指针函数用来存放函数调用结果的地址O指针函数用来指示函数的入口4)指针函数就是函数指针的别名(10)将全局数据对象的存储类别限定为s taiic,其目得是(10).A)为了解决同一程序中不同的源文献中全局量的同名问题;B)为了保存该变量的位:O使该变量成为局部变量;D)使该变量能作为函数参数,二、阅读以下程序并给出执行结果(20分,每小题5分)。1、 #incl u d e <io s (re a m>u sing n a mcspac e s td;i带格式的:缩迸:首行缩进:0.5字符i带格式的:缩迸:首行缩进:0.5字符c 1 as s Ap u b I ic: _-»A() c o ut«"A-> ":)-A() co ut«"<-A:);class B public :田。(cout«"B-> »B() cout<< " v-B;";);cl a s s Cpublic:<()( cout«"C->": ° C() coutcv " V-C; );void func() c o u t« " nfu n c:A a:static B b:C c;)int m a in()c o ut«"main:"f or(int i= 1 ; i<=2; +i) i f(i=2) C c: else A a :B ba func(); fun c ():ret u rn I :# i ncludc < i o s trcam>using namespace s td:c 1 ass B 1(publ i c :»Bl(int i) c o u t «"constr u c t i ng BI "<<i«e ndl;»)*BI() c o ut<< " de s tructin g B 1 "<<e nd I ;);c lass B2publ ic:B2() acou t «f'co n stru c t i ng B 2 " «endl;)-B 2 () cout<<"destruct i ng B2 " «end 1 ; );c lass C: p ubl i c B2,publ i c B I(pub 1 i c:C(in t a, i n t b ): B 1(a) ,b 1 (b) c out« " cons t ruct i ng C"«endl; C() c o u t «Mdes t ructing C "«end I :) private:*Bl bl;B 2 b2;:voi d main()Cob j (1.2);2、 #inclu d c < i ostrcam>usi n g name s pa c e s t d:class A(.带格式的:缩进:首一缩进:1字符)pnvat e :,其它成员I带格式的:缩进:首行缩进:1字符p ub 1 1 c :k>v-1-rtual-voi d func(i n t data)» c out<<"cl ass A: "<<data<<end i ; »):c 1 ass B: pu b lie A(其它成员.f裕格式的:缩进:首行缩进:1字符pu bhc:void fun c ()cout<<"fu n ction in B without pa r ame t e r ! n " ;)voi d f u nc (i nt data)“ cout«"class B: " «da(a<<end 1 >); i nt m a in()(,A a.*p;A&pl =a;»B b;p=&b;«P 1 . f un c (I);p->fun c ( 1 0 0 );return I;I3、 #includc <i 0 strcam>u s ing namesp a ce std;func(in t a , int b );i nt main()(»int k= 4 ,m= I . p;,p=func(k, m): cout« p <<endl;»p=func (k,m); c ou t <<p<< e n d I;wel u ni I ;)func( i nt a .in t b)(» s t a( i c i nt m= 0 ,i=2:i+=m+1;m=i+a+b: welu r n (m):三、阅读以下程序(或函数)并简要叙述其功能(2 0分,每小题5分)I,、 chnum (ch a r *str)(ini i , j , k.h. I en. n um=O;1 e n = s ir I en(str);*for(i=0; i<l e n ; i +)8k=1;*j=!cn-i:» while( j > 1 )(8k=k*IO;*j-;h=stri)-'O'an u m=num+h*k;)retu r n num:)输入:1 23运营结果:?此题比较难,II没行主函数无法运营功能:2、 # i nclude <iost r eam>u s ingn a me s p ac e st d ;int m a i n ()(*char *a5= ("stud e n t", "w o rk e r", " c adrc"," s oldie r ", "pea s ant");*char *pl,*p2;pl=p2=a 0;fo r (int i = 0 ; i< 5 ; i+ + )» (»if (strcmp( a i, p I)>0) p 1 =ai|;if (str c mp( a i .p2)<0) p 2=a|i;)co u t «pl<<''«p2«endl;return I;运营结果:?功能:3、 # incl ude < i os t r e a m>using namesp a ce st d ;v o id func(int(» in t );int mai n ()(int arra y(=(48,9 1.83.75.36):int 1 en=size o f (a r r a y)/sizeof( i nt);f or (in t i=0;i<len;i+)«cou t «arr a y (i« "» c o ut< < e n d 1<< e nd I ;*f u nc(arr a y, 1 e n);»retu r n 1;vo i d fun c (i n t a |.int size)(»i n i i.tcmp:for (int p ass= l;pass<sizc: pass+)»(® for(i=0;i<si z e -pa s s: i +)» i f (a i >a(i+l) tem p =a(i;a(i= a i+1;*> 。a i+l=t e mp;8)f or (i=0: i <s i ze: i+)»«kou t«ai <<",":< o ut«end 1 ;)请叙述函数func ()的功能。'带格式的:双删除处4、u 疝增-i-ni f-u喇qow*出 3心,co n c htti §整2分