软件工程师笔试题B41877.docx
校园招聘笔试题(软件B)学 校: 专 业: 姓 名: 学 历: 四级成绩: 最终得分: 注意:满分1000分,答题题时间45分钟一、填空题(共共30分)1、通常,在什什么情况下适适合采用innline定定义内联函数数?_2、含有纯虚函函数的类称为为 3、C+函数数中参数的传传递方式有 、 、 三种方式。4、程序的局部部变量存在于于 中,全局局变量存在于于 中,动动态申请内存存存在于 中。5、C+里声声明某一函数数为C程序中的库库函数,则需需要在该函数数前加_。6、如果编译器器在编译和连连接程序时,已已经确定了调调用函数的地地址,这种做做法通常称为为_联编。7、C+预定定义的标准输输入流对象是是_,标准输输出流对象是是_。8、#ifnddef #definne #endiff的主要作用是 。(2分)9、假设定义类类型如下:union AAint x; douuble yy; charr z; struct Bintt x; cchar yy; chaar* z;在Win32平平台下,siizeof(A)= , sizeeof(B)= 10、下面程序序输出分别是是 (4分)#definee PRINNTX prrintf("%d ", x)int maiin()int x=2,y,zz;x*=3+22;PRINNTX;x*=y=zz=4;PRRINTX;x=y=zz;PRINNTX;x=(y=z);PRRINTX;returnn 0;11、假定CLLS_PtzzContrrol是一个个类,那么执执行语句CLLS_PtzzContrrol x5, *y3;时程序会自自动调用该类类的无参构造造函数 次。(2分)12、对于数组组int xx10,其其元素x44的字节地地址为 。(2分)13、执行如下下程序后的输输出结果是: 。(2分)#includde<iosstreamm.h>class tteststatic int ccount;public:test()countt+;test()counnt-;static int ggetCouunt()returrn couunt;int tesst:coount=00;int maiin()test * p=neww testt;test * q=neww testt; delete p;cout<<""countt="<<ttest:getCoount()<<enddl;return 0;14、以下程序序的正确执行行结果为: 。(2分)#includde<iosstreamm.h>#int f(int);void maain()int a=2,i;for(i=0;i<33;i+)cout<<<f(a)<< " "cout<<<endl;int f(iint a)int b=0;staticc int c=3;b+;c+;returnn (a+bb+c);15、下面程序序的输出结果果是 。(2分)#includde<iosstreamm.h>int funn(charr *s)char *p=s;while(*p!=''0')p+;returnn (p-ss);void maain()count<<<fun("ABCDEEF")<<enndl;二、选择题(每每题2分,共共20分),请将答案案写在【】内。【】1、CC+中,符符号“&”不可以表示示的是:( )A取变量运算算 B按位与与运算 C引用用运算符 D取地址运算算【】2、有有关函数重载载的正确说法法是:( )A函数名不同同,但形式参参数的个数和和类型相同B函数名相同同,但形式参参数的个数不不同或参数的的类型不同C函数名相同同,形式参数数的个数和类类型也相同D函数名相同同,函数的返返回值不同,而而与函数的形形式参数和类类型无关【】3、对对于std:vecttor<innt> veec; coonst sstd:vvectorr<int>>:iteeratorr iterr = veec.beggin() 下列说法正正确的是( )A*iterr = 100 和 +itter均可通通过编译B*iterr = 100可通过编译译,+itter不可通通过编译C*iterr = 100不可通过编编译,+iiter可通通过编译D*iterr = 100 和 +itter均不可可通过编译【】4、一一个指向整型型数组的指针针的定义为:( )Aint(*ptr) Bint *ptr Cint*(pptr) Dint prrt【】5、假假定要对类AAB定义加号号操作符重载载成员函数,实实现两个ABB类对象的加加法,并返回回相加结果,则则该成员函数数的声明语句句为:( )A AB ooperattor+(AAB & aa , ABB & b) BAB opperatoor+(ABB & a)Coperaator+(AB a) DAB & operaator+( )【】6、如如果需要定义义一个只允许许本源文件中中能够被访问问使用的全局局变量,那么么该变量使用用的类型是( )Aexterrn Breegisteer Caauto Dstaatic【】7、CC+中的tthis指针针是其实现( )的的一种机制。A封装 B继继承 C抽抽象 D重载【】8、对对于类CLSS_Matrrix,语句句void (CLS_Matriix:*pContrrol)(int _iCmdd);表明( )ApConttrol是一一个指向类成成员函数的指指针BpConntrol是是类CLS_Matriix的一个成成员CpConttrol是类类CLS_MMatrixx的一个对象象DpConntrol是是一个指向类类对象的指针针【】9、设设置虚基类的的目的是( )A简化程序B消除二二义性 C提提高运行效率率 D减少目标代代码【】10、有如下程序序:执行后的的输出结果应应该是( )#includde <ioostreaam.h>class BBASEpublic:BASE()coutt<<"BAASE"class DDERIVEED: puublic BASEpublic:DERIVEED()ccout<<<"DERIIVED"void maain()DERIVVED x;ABASE BDERIVVED CBASEDDERIVEED DDERIVVEDBASSE三、纠错题(88分)1、下面的函数数实现代码是是否有问题?请指出。(44分)答题处:char *GGetMemmory(vvoid)char pp = "helllo worrld"rreturnn p;void Teest(vooid)char *str = NULLL;str = GettMemorry();pprintff(str);2、以下的程序序运行后会产产生什么问题题?(4分)答题处:#definee SIZEE 255innt maiin() unnsigneed chaar ArrraySIZE, i; foor (i=0;i<=SIZE;ii+) Arrrayi=i;return 0;四、简答题(共42分)1、C中的结构构体与C+中的类类主要区别是是什么?(5分)2、以下为Wiindowss NT下的的32位C+程序,请计算sizzeof的值值(5分)char sttr = "Helloo" ;char *pp = sttr ;int n = 10;请计算sizeof (str ) sizeof ( p ) = sizeof ( n ) = void Fuunc ( char str1100)请计算sizeof( str ) = void *pp = maalloc( 100 );请计算sizeof ( p ) = 3、类成员函数数的重载、覆覆盖和隐藏区区别?(8分)4、写出如下程程序的运行结结果。(122分)class Apublic:virtuaal voiid Outtput() prrintf("This is As Outtputnn");void DDisplaay() prinntf("A:Diisplayyn"); Outtput(); ;class BB:publlic Apublic:virtuaal voiid Outtput() prrintf("This is Bs Outtputnn"); 答题处:; int maiin()B b1;b1.Dissplay(); (A *)(&b1)->Dissplay(); (A)b11).Dissplay();returnn 0;5、用单链表表表示集合,设设计算法求两两个集合的并并集。(12分)typedeff struuct SNNodeint daata;SNodee * neext; SNodee;void diiffencce(SNoode *AA,SNodde *B,SNodee *&C) SNoode *ppa=A,*pb=B,*pc,*s,*r; C=(SNodee*)mallloc(ssizeoff(SNodde); ; r=CC; whiile(paa!=NULLL) s=(SSNode*)mallloc(siizeof(SNodee); ; s->nnext=NNULL; r->nnext=ss; ; pa = pa->>next; whiile(pbb!=NULLL) pc=CC->nexxt; whille( ) pc=pcc->nexxt; if(ppc=NUULL) s=(SNNode*)mallooc(sizzeof(SSNode); ; s->neext=NUULL; ; r=s; pb=ppb->neext; pc = C; C = C->nnext; freee(pc); 11