歌尔笔试题目

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

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

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

资源描述

1/91、以下程序的功能是#includestdio.h{FILE*fp;longintn;fp=fopen(“wj.txt”,”rb”):fseek(fp,0,SEEK_END);n=fell(fp);fclose(fp);printf(“%d”,n);}A、计算文件wj.txt内容的字节数B、计算文件wj.txt的终止地址C、计算文件wj.txt的起始地址D、将文件指针定位到文件末尾2、一下程序的运行结果是Intmain(void){Intx,y,z;x=0,y=1,z=3;x=++y=x||x+y!=z;printf(“%d,%d\n”,x,y);return0;}A、1,2B、1,1C、0,2D、0,13、以下语句的输出结果是Intmain(void){Intx=10,y=3,z;Printf(“%d\n”,z=(x%y,x/y));Return0;}A、4B、0C、3D、14、以下程序段的运行结果是Intmain(void){charaa[][3]={‘a’,’b’,’c’,’d’,’e’,’f’};char(*p)[3]=aa;p++;printf(“%c\n”,**p);return0;}A、bB、aC、cD、d2/95、下面程序的输出是Intmain(void){enumteam{my,your=9,his,her=his+3};printf(“%d%d%d%d\n”,my,your,his,her);return0;}A、091013B、081112C、081012D、081296、以下程序经变异链接生成可执行文件tt.exe,若运行时输入以下命令行tt12345678,则程序运行的输出结果是intmain(intargc,char**argv){Intn=0,i;for(i=1;iargc;i++)n=n*10+*argv[i]-‘0’;printf(“%d\n”,n);return0;}A、136B、12345C、12345678D、127、若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是A、++pB、a+1C、p+1D、a++8、以下关于文件操作的描述中,不正确的是A、关闭文件的目的之一是释放内存中的文件对象B、关闭文件的目的之一是保证将输出的数据写入硬盘文件C、文件读写过程中,程序将直接与磁盘文件进行数据交换D、打开文件的目的是使文件对象鱼磁盘文件建立联系9、下列哪一个是析构函数的特征A、析构函数定义只能在类体中B、一个类中只能定义一个析构函数C、析构函数名与类名不同D、析构函数可以有一个或多个参数10、对于int*pa[5]的描述,正确的是A、pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针B、pa[5]表示某个数组的第五个元素的值C、pa是一个指向数组的指针,所指向的数组是五个int类型的元素D、pa是一个指向某个数组中第五个元素的指针,该元素是int类型的变量11、有如下程序,运行时的输出结果是#includeiostreamusingnamespacestd;3/9classMyClass{Public:MyClass(inti=0){couti;}MyClass(constMyClass&x){cout2;}MyClass&operator=(constMyClass&x){cout3;return*this;}~MyClass(){cout4;}};Intmain(){MyClassobj1(1),obj2(2),obj3(obj1);Return0;}A、11214444B、11114444C、122444D、11214445E、12144412、以下程序段的输出结果是#includeiostreamusingnamespacestd;classA{public:A(inti){cout”A”;}~A(){}};classB{4/9Public:B(intj){cout”B”;}~B(){}};classC{public:C(intk){cout”C”;}~C(){cout”~C”;}};classD:publicC{public:D(inti,intj,intk):a(i),b(j),C(k){cout”D”;}~D(){cout”~D”;}private:Bb;Aa;};intmain(){C*pc=newD(1,2,3);deletepc;return0;}A、ABCD~DB、ABCD~CC、CBAD~DD、CBAD~C13、被非静态成员函数访问的类的数据成员A、不可能是类的静态数据成员B、只能是类的非静态数据成员C、只能是类的静态数据成员D、可以是非静态数据成员或静态数据成员14、假定AA是一个类,AA*abc()const是该类的一个成员函数的原型,若该函数返回this值,当用x.abc()调用该5/9成员函数后,x的值A、可能被改变B、已经被改变C、收到函数调用的影响D、不变15、以下定义语句中,错误的是A、chars[10]=””;B、intx[]={0};C、intk=5,n[k];D、chara[2][2]={“x”,”y”};16、int*p[4]与选择项中的说明等价A、intp[4]B、int*pC、int(*p)[4]D、int*(p[4])17、设x=2,b=3,c=2;计算a+=b*=(++b-c++)后的a、b、c的值A、10、8、3B、8、6、2C、5、3、3D、2、4、218、下面程序的运行结果是Union{IntI;Charx[2];}a;Intmain(void){a.x[0]=10;a.x[1]=1;couta.iendl;return0;}A、266B、0C、1D、25619、下面程序的输出结果是classSample{Friendlongfun(Samples){If(s.x2)return1;elsereturns.x*fun(Sample(s.x-1));}Public:6/9Sample(longa){x=a;}private:longx;};Intmain(void){Intsum=0;for(inti=0;i4;i++)sum+=fun(Sample(i));coutsumendl;return0;}A、34B、10C、16D、1220、若函数fun的函数头为:intfun(inti,intj),则函数指针变量p指向函数fun的赋值语句是A、p=fun(i,j)B、p=funC、p=*funD、p=&fun二、简答题1、用预处理指令#define声明一个常数,用以表示一年中有#defineALLSEC(365*24*60*60)UL秒(忽略闰年问题)。2、中断是嵌入式系统重要的组成部分,这导致了很多编译器开发商提供一种扩展-让标准C支持中断。这导致了一个新关键字__interrupt的产生。下面的代码就是使用了__interrupt关键字去定义一个中断服务子程序(ISR),请找出这段代码的几个错误。#definePI3.1415Interruptdoublecompute_area(doubleradius){doublearea=PI*radius*radius;Printf(“Area=%f”,area);Returnarea;}1、ISR不能有返回值,必须用void;2、ISR不能传递参数,必须用void;3、ISR应该是短而高效的,所以不推荐在ISR中做浮点运算,应该只由中断发出消息或置位标志然后由应用层去处理其他工作;4、ISR中不应该有重入和性能上的问题,因此使用pintf()函数也是不好的3、请描述进程和线程的区别进程是程序的一次执行,线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别:进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间7/9内,所以同一进程所产生的线程共享同一内存空间。同一进程中的两段代码不能够同时执行,除非引入线程。线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。线程占用的资源要少于进程所占用的资源。进程和线程都可以有优先级。在线程系统中进程也是一个线程。可以将进程理解为一个程序的第一个线程。4、简述C++程序编译的内存分配情况(1)从静态存储区域分配:内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。(2)在栈上分配:在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配:即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。一个C、C++程序编译时内存分为5大存储区:堆区、栈区、全局区、文字常量区、程序代码区。z三、判断题1、windows进程之间可以用criticalsection(临界区)来同步2、C++中的new/delete运算符可以用C语言的malloc/free函数来代替3、一个参数可以同时声明为const和volatile类型4、以下两个结构体,sizeof(A)=sizeof(B)StructA{Unsignedshorta1;Unsignedshorta2;Unsignedshorta3;};StructB{Unsignedintb1;Unsignedshortb2;}四、编程题1、如何检查一个单项链表上是否有环8/91.structlisttype2.{3.intdata;4.structlisttype*next;5.}list;6.7.intfind_cicle(list*head)8.{9.list*pFast=head;10.list*pSlow=head;11.if(pFast==NULL)12.{13.return-1;14.}15.while(pFast&&pFast-next)16.{17.pFast=pFast-next-next;18.pSlow=pSlow-next;19.if(pFast==pSlow)20.{21.return1;22.}23.}24.return025.}调用函数返回值为1时,表示单向链表有环;调用函数返回值为-1时,表示测试的单向链表为空;调用函数返回值为0时,表示单向链表无环;2、请用C语言实现字符串翻转1.char*strrev(char*s)2.{3./*h指向s的头部*/4.char*h=s;5.char*t=s;6.charch;7.8./*t指向s的尾部*/9.while(*t++){};10.t--;/*与t++抵消*/11.t--;/*回跳过结束符'\0'*/12.13./*当h和t未重合时,交换它们所指向的字符*/9/914.while(ht)15.{16.ch=*h;17.*h++=*t;/*h向尾部移动*/18.*t--=ch;/*t向头部移动*/19.}20.21.return(s);22.}

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

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

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

×
保存成功