您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 【天渔教育-2013校招】C++试题A卷-答案
C++(方向)考试试题2013届校园招聘移动开发工程师岗位(C++方向)专业知识笔试试题A卷得分姓名:移动电话:QQ:紧急联系电话:Email:籍贯:学校:专业:学历:请您答题时注意如下事项:一、本测试限时60分钟。请您务必抓紧时间,在规定的时间内完成答卷。二、在未宣布开始之前,不能提前回答问题,在开始答题后,请先完成综合素质测试试卷后再完成本试卷。三、请将所有题目统一在答题纸上作答,不要在测评试题卷子上作任何记号。四、请您按正确答案的题号和字母顺序,将客观题在答题卡上相应位置作答,以免错行。五、切记不要把试题卷带出试场请您务必遵守上述事项,确保考试结果为您真实水平!注意:请认真阅读考试诚信书内容,慎重签字C++(方向)考试试题1、(8分)什么是STL;它有什么作用;请写出你常用的STL中的三种容器,并说明作用?参考答案:(1)vector:向量动态数组(自动分配内存,拥有一段连续的内存空间)非常好的支持随机存取(下标访问元素)在尾端增删元素具有较佳的性能,其他位置的增删操作和插入操作都不(2)list:双向链表内存空间可以是不连续的,通过指针进行数据访问高效率支持在任何位置增删元素随机访问效率不高(3)deque:双端队列可以把deque看作vector和list的折中,支持[]操作符,也就是支持随即存取(4)…….应用1、如果需要高效的随即存取,而不在乎插入和删除的效率,使用vector2、如果需要大量的插入和删除,而不关心随即存取,则应使用list3、如果需要随即存取,而且关心两端数据的插入和删除,则应使用deque。2、(10分)请说明以下类成员函数中4个const的作用:constchar*constGetName(constchar*pUser)const;参考答案:(1)const修饰函数的返回值,返回值不能被修改,且只能赋给const修饰的同类型指针(2)const修饰函数返回值,成员函数的返回值不能被修改(3)const修饰函数参数,参数指针所指内容为常量不可变(4)const修饰类的成员函数:const成员函数,不改变对象的成员变量,也不能调用类中任何非const成员函数)3、(8分)请说明指针和引用的区别?参考答案:(1)指针是一个实体,而引用仅是对象的别名;(2)引用只能在定义时被初始化一次,之后不可变;指针可变;(3)引用没有const,指针有const,const的指针不可变;(4)引用不能为空,指针可以为空;(5)“sizeof引用”得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(所指向的变量或对象的地址)的大小;……4、(8分)请问运行Test函数会有什么样的结果?为什么?voidGetMemory(char*p){p=(char*)malloc(100);}voidTest(void){char*str=NULL;GetMemory(str);strcpy(str,helloworld);C++(方向)考试试题printf(str);};参考答案:GetMemory(str);//值传递,应改为引用传递strcpy(str,helloworld);//此处str=NULL5、(10分)在32位处理机器上,以下程序片段的输出结果是:#includeiostreamusingnamespacestd;voidmain(){double*p1;coutsizeof(p1)endl;void*p2;coutsizeof(p2)endl;intp3;coutsizeof(p3)endl;intp4[10];coutsizeof(p4)endl;charstr[]=world;coutsizeof(str)endl;char*p=str;coutsizeof(p)endl;chari=10;coutsizeof(i)endl;void*pp=malloc(10);coutsizeof(p)endl;}参考答案:4444064146、(8分)请按照以下要求依次填写bool,float,指针变量与“零值”比较的if语句。请写出boolflag与“零值”比较的if语句。请写出floatx与“零值”比较的if语句。请写出char*p与“零值”比较的if语句。参考答案:C++(方向)考试试题//boolflag与“零值”比较if(!flag){}//floatx与“零值”比较if(x0.000001&&x-0.000001){}//char*p与“零值”比较if(p==NULL){}6、(8分)请写出以下程序的执行结果:#includeiostreamusingnamespacestd;classbase{intn;public:base(){};base(inta){coutconstructingbaseclassendl;n=a;coutn=nendl;}~base(){coutdestructingbaseclassendl;}};classsubs:publicbase{intm;public:subs(inta,intb):base(a){coutconstructingsubclassendl;m=b;coutm=mendl;}~subs(){coutdestructingsubclassendl;}};voidmain(){subs(1,2);}参考答案:constructingbaseclassn=1constructingsubclassm=2C++(方向)考试试题destructingsubclassdestructingbaseclass6、(15分)已知类String的原型如下,请完成该原型的具体实现(编写类String的构造函数、析构函数和赋值函数)classString{public:String(constchar*str=NULL);String(constString&other);~String(void);String&operate=(constString&other);private:char*m_data;};参考答案://普通构造函数String::String(constchar*str){if(str==NULL){m_data=newchar[1];//若能加NULL判断则更好*m_data=‘\0’;}else{intlength=strlen(str);m_data=newchar[length+1];//若能加NULL判断则更好strcpy(m_data,str);}}//拷贝构造函数String::String(constString&other){intlength=strlen(other.m_data);m_data=newchar[length+1];//若能加NULL判断则更好strcpy(m_data,other.m_data);}//析构函数String::~String(void){delete[]m_data;//由于m_data是内部数据类型,也可以写成deletem_data;}//赋值函数C++(方向)考试试题String&String::operate=(constString&other){//(1)检查自赋值//4分if(this==&other)return*this;//(2)释放原有的内存资源//3分delete[]m_data;//(3)分配新的内存资源,并复制内容//3分intlength=strlen(other.m_data);m_data=newchar[length+1];//若能加NULL判断则更好strcpy(m_data,other.m_data);//(4)返回本对象的引用//3分return*this;}7、(15分)编写一个类,实现简单的栈。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止参考答案:#includeiostreamusingnamespacestd;classStack{public:Stack(){for(inti=0;i10;i++){data[i]=0;}m_nDataCount=0;}voidpopBack();voidpushBack(intnEle);intgetBack();boolisEmpty();boolisFull();private:intm_nData[10];intm_nDataCount;};voidStack::popBack(){if(isEmpty()){return;}m_nData[--m_nDataCount]=0;C++(方向)考试试题}voidStack::pushBack(intnEle){if(isFull()){return;}m_nData[m_nDataCount++]=nEle;}
本文标题:【天渔教育-2013校招】C++试题A卷-答案
链接地址:https://www.777doc.com/doc-2808806 .html