华为C++笔试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。3)不存在指向空值的引用,但是存在指向空值的指针。3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。9.写出floatx与“零值”比较的if语句。if(x0.000001&&x-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。11.Internet物理地址和IP地址转换采用什么协议?ARP(AddressResolutionProtocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。循环链表,用取余操作做14.不能做switch()的参数类型是:switch的参数不能为实型。1.以下三条输出语句分别输出什么?[C易]charstr1[]=abc;charstr2[]=abc;constcharstr3[]=abc;constcharstr4[]=abc;constchar*str5=abc;constchar*str6=abc;coutboolalpha(str1==str2)endl;//输出什么?coutboolalpha(str3==str4)endl;//输出什么?coutboolalpha(str5==str6)endl;//输出什么?文章出自非C++内建型别A和B,在哪几种情况下B能隐式转化为A?[C++中等]答:a.classB:publicA{……}//B公有继承自A,可以是间接继承的b.classB{operatorA();}//B实现了隐式转化为A的转化c.classA{A(constB&);}//A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数d.A&operator=(constA&);//赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个3.以下代码中的两个sizeof用法有问题吗?[C易]voidUpperCase(charstr[])//将str中的小写字母转换成大写字母{for(size_ti=0;isizeof(str)/sizeof(str[0]);++I)if('a'=str[i]&&str[i]='z')str[i]-=('a'-'A');}charstr[]=aBcDe;coutstr字符长度为:sizeof(str)/sizeof(str[0])endl;UpperCase(str);coutstrendl;4.以下代码有什么问题?[C难]voidchar2Hex(charc)//将字符以16进制表示{charch=c/0x10+'0';if(ch'9')ch+=('A'-'9'-1);charcl=c%0x10+'0';if(cl'9')cl+=('A'-'9'-1);coutchcl'';}charstr[]=Ilove中国;for(size_ti=0;istrlen(str);++I)char2Hex(str[i]);coutendl;5.以下代码有什么问题?[C++易]structTest{Test(int){}Test(){}voidfun(){}};voidmain(void){Testa(1);a.fun();Testb();b.fun();}6.以下代码有什么问题?[C++易]cout(true?1:1)endl;7.以下代码能够编译通过吗,为什么?[C++易]unsignedintconstsize1=2;charstr1[size1];unsignedinttemp=0;cintemp;unsignedintconstsize2=temp;charstr2[size2];8.以下代码中的输出语句输出0吗,为什么?[C++易]structCLS{intm_i;CLS(intI):m_i(i){}CLS(){CLS(0);}};CLSobj;coutobj.m_iendl;9.C++中的空类,默认产生哪些类成员函数?[C++易]答:classEmpty{public:Empty();//缺省构造函数Empty(constEmpty&);//拷贝构造函数~Empty();//析构函数Empty&operator=(constEmpty&);//赋值运算符Empty*operator&();//取址运算符constEmpty*operator&()const;//取址运算符const};10.以下两条输出语句分别输出什么?[C++难]floata=1.0f;cout(int)aendl;cout(int&)aendl;coutboolalpha((int)a==(int&)a)endl;//输出什么?Floatb=0.0f;cout(int)bendl;cout(int&)bendl;coutboolalpha((int)b==(int&)b)endl;//输出什么?11.以下反向遍历array数组的方法有什么错误?[STL易]vectorarray;array.push_back(1);array.push_back(2);array.push_back(3);for(vector::size_typei=array.size()-1;i=0;--I)//反向遍历array数组{coutarray[i]endl;}12.以下代码有什么问题?[STL易]typedefvectorIntArray;IntArrayarray;array.push_back(1);array.push_back(2);array.push_back(2);array.push_back(3);//删除array数组中所有的2for(IntArray::iteratoritor=array.begin();itor!=array.end();++itor){if(2==*itor)array.erase(itor);}13.写一个函数,完成内存之间的拷贝。[考虑问题是否全面]答:void*mymemcpy(void*dest,constvoid*src,size_tcount){char*pdest=static_castchar*(dest);constchar*psrc=static_castconstchar*(src);if(pdestpsrc&&pdestpsrc+cout)能考虑到这种情况就行了{for(size_ti=count-1;i!=-1;--I)pdest[i]=psrc[i];}else{for(size_ti=0;icount;++I)pdest[i]=psrc[i];}returndest;}intmain(void){charstr[]=0123456789;mymemcpy(str+1,str+0,9);coutstrendl;system(Pause);return0;}本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。笔试时间90分钟。请考生认真答题,切勿轻视。一、请填写BOOL,float,指针变量与“零值”比较的if语句。(10分)提示:这里“零值”可以是0,0.0,FALSE或者“空指针”。例如int变量n与“零值”比较的if语句为:if(n==0)if(n!=0)以此类推。请写出BOOLflag与“零值”比较的if语句:请写出floatx与“零值”比较的if语句:请写出char*p与“零值”比较的if语句:二、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分)charstr[]=“Hello”;char*p=str;intn=10;请计算sizeof(str)=sizeof(p)=sizeof(n)=voidFunc(charstr[100]){请计算sizeof(str)=}void*p=malloc(100);请计算sizeof(p)=三、简答题(25分)1、头文件中的ifndef/define/endif干什么用?2、#include和#include“filename.h”有什么区别?3、const有什么用途?(请至少说明两种)4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?5、请简述以下两个for循环的优缺点//第一个for(i=0;i++;){if(condition)DoSomething();elseDoOtherthing();}//第二个if(condition){for(i=0;i++;)DoSomething();}else{for(i=0;i++;)DoOtherthing();}优点:缺点:优点:缺点:四、有关内存的思考题(20分)voidGetMemory(char*p){p=(char*)malloc(100);}voidTest(void){char*str=NULL;GetMemory(str);strcpy(str,helloworld);printf(str);}请问运行Test函数会有什么样的结果?答:char*GetMemory(void){charp[]=helloworld;returnp;}voidTest(void){char*str=NULL;str=GetMemory();printf(str);}请问运行Test函数会有什么样的结果?答:VoidGetMemory2(char**p,intnum){*p=(char*)malloc(num);}voidTest(void){char*str=NULL;GetMemory(&str,100);strcpy(str,hello);printf(str);}请问运行Test函数会有什么样的结果?答:voidTest(void){char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL){strcpy(str,“world”);printf(str);}}请问运行Test函数会有什么样的结果?答:五、编写strcpy函数(10分)已知strcpy函数的原型是char*strcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功