您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 【天渔教育-校招】C++笔试题-含答案
应用软件考试试题C++面试题学校______________专业_________________姓名______________手机______________邮箱_________________QQ______________求职意向______________1.什么是STL;它有什么作用;请写出你常用的STL中的三种容器,并说明作用?(1)vector:向量动态数组(自动分配内存,拥有一段连续的内存空间)非常好的支持随机存取(下标访问元素)在尾端增删元素具有较佳的性能,其他位置的增删操作和插入操作都不(2)list:双向链表内存空间可以是不连续的,通过指针进行数据访问高效率支持在任何位置增删元素随机访问效率不高(3)deque:双端队列可以把deque看作vector和list的折中,支持[]操作符,也就是支持随即存取应用1、如果需要高效的随即存取,而不在乎插入和删除的效率,使用vector2、如果需要大量的插入和删除,而不关心随即存取,则应使用list3、如果需要随即存取,而且关心两端数据的插入和删除,则应使用deque。2.请说明以下类成员函数中4个const的作用:constchar*constGetName(constchar*pUser)const;(1)const修饰函数的返回值,返回值不能被修改,且只能赋给const修饰的同类型指针(2)const修饰函数返回值,成员函数的返回值不能被修改(3)const修饰函数参数,参数指针所指内容为常量不可变(4)const修饰类的成员函数:const成员函数,不改变对象的成员变量,也不能调用类中任何非const成员函数)3.请说明指针和引用的区别?(1)指针是一个实体,而引用仅是对象的别名;(2)引用只能在定义时被初始化一次,之后不可变;指针可变;(3)引用没有const,指针有const,const的指针不可变;(4)引用不能为空,指针可以为空;(5)“sizeof引用”得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(所指向的变量或对象的地址)的大小;……4.请问运行Test函数会有什么样的结果?为什么?voidGetMemory(char*p){p=(char*)malloc(100);}应用软件考试试题voidTest(void){char*str=NULL;GetMemory(str);strcpy(str,helloworld);printf(str);};参考答案:GetMemory(str);//值传递,应改为引用传递strcpy(str,helloworld);//此处str=NULL5.在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;}参考答案:444406414应用软件考试试题6.请按照以下要求依次填写bool,float,指针变量与“零值”比较的if语句。请写出boolflag与“零值”比较的if语句。请写出floatx与“零值”比较的if语句。请写出char*p与“零值”比较的if语句。参考答案://boolflag与“零值”比较if(!flag){}//floatx与“零值”比较if(x0.000001&&x-0.000001){}//char*p与“零值”比较if(p==NULL){}7.请写出以下程序的执行结果:#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=2destructingsubclassdestructingbaseclass8.已知类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;}//赋值函数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;}9.编写一个类,实现简单的栈。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止参考答案:#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;}voidStack::pushBack(intnEle){if(isFull()){return;}m_nData[m_nDataCount++]=nEle;}
本文标题:【天渔教育-校招】C++笔试题-含答案
链接地址:https://www.777doc.com/doc-2808828 .html