C-C++笔试题5

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

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

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

资源描述

4.static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7.引用与指针有什么区别?1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。2)不存在指向空值的引用,但是存在指向空值的指针。8.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性9.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈10.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于111.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源12.什么函数不能声明为虚函数?constructor13.冒泡排序算法的时间复杂度是什么?O(n^2)14.写出floatx与“零值”比较的if语句。if(x0.000001&&x-0.000001)16.Internet采用哪种网络协议?该协议的主要层次结构?tcp/ip应用层/传输层/网络层/数据链路层/物理层17.Internet物理地址和IP地址转换采用什么协议?ARP(AddressResolutionProtocol)(地址解析協議)18.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。循环链表,用取余操作做3.不能做switch()的参数类型是:switch的参数不能为实型。写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。函数接口为:intfind_orderk(constint*narry,constintn,constintk)要求算法复杂度不能是O(n^2)谢谢!可以先用快速排序进行排序,其中用另外一个进行地址查找代码如下,在VC++6.0运行通过。给分吧^-^//快速排序#includeiostreamusingnamespacestd;intPartition(int*L,intlow,inthigh){inttemp=L[low];intpt=L[low];while(lowhigh){while(lowhigh&&L[high]=pt)--high;L[low]=L[high];while(lowhigh&&L[low]=pt)++low;L[low]=temp;}L[low]=temp;returnlow;}voidQSort(int*L,intlow,inthigh){if(lowhigh){intpl=Partition(L,low,high);QSort(L,low,pl-1);QSort(L,pl+1,high);}}intmain(){intnarry[100],addr[100];intsum=1,t;coutInputnumber:endl;cint;while(t!=-1){narry[sum]=t;addr[sum-1]=t;sum++;cint;}sum-=1;QSort(narry,1,sum);for(inti=1;i=sum;i++)coutnarry[i]'\t';coutendl;intk;coutPleaseinputplaceyouwant:endl;cink;intaa=1;intkk=0;for(;;){if(aa==k)break;if(narry[kk]!=narry[kk+1]){aa+=1;kk++;}}coutTheNO.knumberis:narry[sum-kk]endl;coutAndit'splaceis:;for(i=0;isum;i++){if(addr[i]==narry[sum-kk])couti'\t';}return0;}1、找错Voidtest1(){charstring[10];char*str1=0123456789;strcpy(string,str1);//溢出,应该包括一个存放'\0'的字符string[11]}Voidtest2(){charstring[10],str1[10];for(I=0;I10;I++){str1[i]='a';}strcpy(string,str1);//I,i没有声明。str1[9]=0;}Voidtest3(char*str1){charstring[10];if(strlen(str1)=10)//改成10,字符溢出。不能将strlen改为sizeof。{strcpy(string,str1);}}2.voidg(int**);intmain(){intline[10],i;int*p=line;//p是数组首地址for(i=0;i10;i++){*p=i;g(&p);//数组对应的值加1}for(i=0;i10;i++)printf(%d\n,line[i]);return0;}voidg(int**p){(**p)++;(*p)++;//指向数组下一个元素}输出:123456789103.写出程序运行结果intsum(inta){autointc=0;staticintb=3;c+=1;b+=2;return(a+b+c);}voidmain(){intI;inta=2;for(I=0;I5;I++){printf(%d,,sum(a));}}//static会保存上次结果,记住这一点,剩下的自己写输出:8,10,12,14,16,4.intfunc(inta){intb;switch(a){case1:30;case2:20;case3:16;default:0}returnb;}则func(1)=?//b定义后就没有赋值。5:inta[3];a[0]=0;a[1]=1;a[2]=2;int*p,*q;p=a;q=&a[2];则a[q-p]=a[2]解释:指针一次移动一个int但计数为1今天早上的面试题9道,比较难,向牛人请教,国内的一牛公司,坐落在北京北四环某大厦:1、线形表a、b为两个有序升序的线形表,编写一程序,使两个有序线形表合并成一个有序升序线形表h;答案在请化大学严锐敏《数据结构第二版》第二章例题,数据结构当中,这个叫做:两路归并排序Linklist*unio(Linklist*p,Linklist*q){linklist*R,*pa,*qa,*ra;pa=p;qa=q;R=ra=p;while(pa-next!=NULL&&qa-next!=NULL){if(pa-dataqa-data){ra-next=qa;qa=qa-next;}else{ra-next=pa;pa=pa-next;}}if(pa-next!=NULL)ra-next=pa;if(qa-next!=NULL)ra-next==qa;returnR;}2、运用四色定理,为N个局域举行配色,颜色为1、2、3、4四种,另有数组adj[][N],如adj[i][j]=1则表示i区域与j区域相邻,数组color[N],如color[i]=1,表示i区域的颜色为1号颜色。四色填充3、用递归算法判断数组a[N]是否为一个递增数组。递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:boolfun(inta[],intn){if(n==1)returntrue;if(n==2)returna[n-1]=a[n-2];returnfun(a,n-1)&&(a[n-1]=a[n-2]);}4、编写算法,从10亿个浮点数当中,选出其中最大的10000个。用外部排序,在《数据结构》书上有《计算方法导论》在找到第n大的数的算法上加工5、编写一unix程序,防止僵尸进程的出现.同学的4道面试题,应聘的职位是搜索引擎工程师,后两道超级难,(希望大家多给一些算发)1.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数longjiaoji(long*a[],longb[],long*alength,longblength,long*dongtai[])2.单连表的建立,把'a'--'z'26个字母插入到连表中,并且倒叙,还要打印!方法1:typedefstructval{intdate_1;structval*next;}*p;voidmain(void){charc;for(c=122;c=97;c--){p.date=c;p=p-next;}p.next=NULL;}}方法2:node*p=NULL;node*q=NULL;node*head=(node*)malloc(sizeof(node));head-data='';head-next=NULL;node*first=(node*)malloc(sizeof(node));first-data='a';first-next=NULL;head-next=first;p=first;intlongth='z'-'b';inti=0;while(i=longth){node*temp=(node*)malloc(sizeof(node));temp-data='b'+i;temp-next=NULL;q=temp;head-next=temp;temp-next=p;p=q;i++;}print(head);3.可怕的题目终于来了象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G,请描述思想,写出算发(c语言),空间和时间复杂度,4.国内的一些帖吧,如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子,怎么样设计这个系统速度最好,请描述思想,写出算发(c语言),空间和时间复杂度,#includestring.hmain(void){char*src=hello,world;char*dest=NULL;dest=(char*)malloc(strlen(src));intlen=strlen(str);char*d=dest;char*s=src[len];while(len--!=0)d++=s--;printf(%s,dest);}找出错误!!#includestring.h#includestdio.h#includemalloc.hmain(void){char*src=hello,world;char*dest=NULL;dest=(char*)malloc(sizeof(char)*(strlen(src)+1));intlen=strlen(src);char*d=dest;char*s=src+len-1;while(len--!=0)*d++=*s--;*d='\0';printf(%s,dest);}1.简述一个Linux驱动程序的主要流程与功能。2.请列举一个软件中时间换空间或者空间换时间的例子。voidswap(inta,intb){intc;c=a;a=b;b=a;}---空优voidswap(inta,intb){a=a+b;b=a-b;a=a-b;}6.请问一下程序将输出什么结果?char*RetMenory(void){charp[]=“hellowworld”;returnp;}voidTest(void){char*str=NULL;str=RetMemory();printf(str);}RetMenory执行完毕,p资源被回收,指向未知地址。返回地址,str的内容应是不可预测的,打印的应该是str的地址写一个函数,它的原形是in

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

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

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

×
保存成功