欢迎来到天天文库
浏览记录
ID:52301263
大小:225.07 KB
页数:16页
时间:2020-03-26
《华为C语言面试题.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。char*search(char*cpSource,charch){if(cpSource==NULL)return0;char*cpTemp=NULL,*cpDest=NULL;intiTemp,iCount=0;while(*cpSource){if(*cpSource==ch){iTemp=0;cpTemp=cpSource;while(*cpSource==ch)++iTemp,++cpSource;if(iTemp>iCount)iCount=iTemp,cpDest=cpTemp;i
2、f(!*cpSource)break;}++cpSource;}returncpDest;}2.请编写一个C函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。intsearch(char*cpSource,charch){if(cpSource==NULL)return0;inti;intn=strlen(cpSource);for(i=0;i3、char*dst,constchar*src){intret=0;while(!(ret=*(unsignedchar*)src-*(unsignedchar*)dst)&&*dst++&&*src++);if(ret<0)ret=-1;elseif(ret>0)ret=1;return(ret);}4.求1000!的未尾有几个0每个0拆成2*5的形式,因为2*5会参生一个0,例:90=2*5*9.因总的2因子很多,所以0的个数,由5因子个数决定,即等于5因子个数.求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,能被625整除的数的4、个数n4.1000!末尾的零的个数=n1+n2+n3+n4;intfind5(intnum){intret=0;while(num%5==0){num/=5;ret++;}returnret;}intmain(){intresult=0;inti;for(i=5;i<=NUM;i+=5){result+=find5(i);}printf("thetotalzeronumberis%d",result);return0;}5.有双向循环链表结点定义为:structnode{intdata;structnode*front,*next;};有两个双向循环链表A,B,知道其头指针为:pHea5、dA,pHeadB,请写一函数将两链表中data值相同的结点删除BOOLDeteleNode(Node*pHeader,DataTypeValue){if(pHeader==NULL)return;BOOLbRet=FALSE;Node*pNode=pHead;while(pNode!=NULL){if(pNode->data==Value){if(pNode->front==NULL){pHeader=pNode->next;pHeader->front=NULL;}else{if(pNode->next!=NULL){pNode->next->front=pNode->front;}p6、Node->front->next=pNode->next;}Node*pNextNode=pNode->next;deletepNode;pNode=pNextNode;bRet=TRUE;//不要break或return,删除所有}else{pNode=pNode->next;}}returnbRet;}voidDE(Node*pHeadA,Node*pHeadB){if(pHeadA==NULL7、8、pHeadB==NULL){return;}Node*pNode=pHeadA;while(pNode!=NULL){if(DeteleNode(pHeadB,pNode->data)){9、if(pNode->front==NULL){pHeadA=pNode->next;pHeadA->front=NULL;}else{pNode->front->next=pNode->next;if(pNode->next!=NULL){pNode->next->front=pNode->front;}}Node*pNextNode=pNode->next;deletepNode;pNode=pNextNode;}el
3、char*dst,constchar*src){intret=0;while(!(ret=*(unsignedchar*)src-*(unsignedchar*)dst)&&*dst++&&*src++);if(ret<0)ret=-1;elseif(ret>0)ret=1;return(ret);}4.求1000!的未尾有几个0每个0拆成2*5的形式,因为2*5会参生一个0,例:90=2*5*9.因总的2因子很多,所以0的个数,由5因子个数决定,即等于5因子个数.求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,能被625整除的数的
4、个数n4.1000!末尾的零的个数=n1+n2+n3+n4;intfind5(intnum){intret=0;while(num%5==0){num/=5;ret++;}returnret;}intmain(){intresult=0;inti;for(i=5;i<=NUM;i+=5){result+=find5(i);}printf("thetotalzeronumberis%d",result);return0;}5.有双向循环链表结点定义为:structnode{intdata;structnode*front,*next;};有两个双向循环链表A,B,知道其头指针为:pHea
5、dA,pHeadB,请写一函数将两链表中data值相同的结点删除BOOLDeteleNode(Node*pHeader,DataTypeValue){if(pHeader==NULL)return;BOOLbRet=FALSE;Node*pNode=pHead;while(pNode!=NULL){if(pNode->data==Value){if(pNode->front==NULL){pHeader=pNode->next;pHeader->front=NULL;}else{if(pNode->next!=NULL){pNode->next->front=pNode->front;}p
6、Node->front->next=pNode->next;}Node*pNextNode=pNode->next;deletepNode;pNode=pNextNode;bRet=TRUE;//不要break或return,删除所有}else{pNode=pNode->next;}}returnbRet;}voidDE(Node*pHeadA,Node*pHeadB){if(pHeadA==NULL
7、
8、pHeadB==NULL){return;}Node*pNode=pHeadA;while(pNode!=NULL){if(DeteleNode(pHeadB,pNode->data)){
9、if(pNode->front==NULL){pHeadA=pNode->next;pHeadA->front=NULL;}else{pNode->front->next=pNode->next;if(pNode->next!=NULL){pNode->next->front=pNode->front;}}Node*pNextNode=pNode->next;deletepNode;pNode=pNextNode;}el
此文档下载收益归作者所有