C++面试题

当前位置: 面试问题网 > C++面试题 > C语言面试题

C语言面试题

1、编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。
   char * search(char *cpSource, char ch)
   {
   char *cpTemp=NULL, *cpDest=NULL;
   int iTemp, iCount=0;
   while(*cpSource)
   {
   if(*cpSource == ch)
   {
   iTemp = 0;
   cpTemp = cpSource;
   while(*cpSource == ch)
   ++iTemp, ++cpSource;
   if(iTemp > iCount)
   iCount = iTemp, cpDest = cpTemp;
   if(!*cpSource)
   break;
   }
   ++cpSource;
   }
   return cpDest;
   }
   2、请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。
   int search(char *cpSource, int n, char ch)
   {
   int i;
   for(i=0; i return i;
   }
   一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
   将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点。
  
   #include
   void foo(int m, int n)
   {
   printf(“m=%d, n=%d ”, m, n);
   }
   int main()
   {
   int b = 3;
   foo(b+=3, ++b);
   printf(“b=%d ”, b);
   return 0;
   }
   输出:m=7,n=4,b=7(VC6.0)
   这种方式和编译器中得函数调用关系相关即先后入栈顺序。不过不同
   编译器得处理不同。也是因为C标准中对这种方式说明为未定义,所以
   各个编译器厂商都有自己得理解,所以最后产生得结果完全不同。
   因为这样,所以遇见这种函数,我们首先要考虑我们得编译器会如何处理
   这样得函数,其次看函数得调用方式,不同得调用方式,可能产生不同得
   结果。最后是看编译器优化。
  
   2.写一函数,实现删除字符串str1中含有的字符串str2.
   第二个就是利用一个KMP匹配算法找到str2然后删除(用链表实现的话,便捷于数组)
  
   /*雅虎笔试题(字符串操作)
   给定字符串A和B,输出A和B中的最大公共子串。
   比如A=”aocdfe” B=”pmcdfa” 则输出”cdf”
   */
   //Author: azhen
   #include
   #include
   #include
   char *commanstring(char shortstring[], char longstring[])
   {
   int i, j;
   char *substring=malloc(256);
   if(strstr(longstring, shortstring)!=NULL) //如果……,那么返回shortstring
   return shortstring;
   for(i=strlen(shortstring)-1;i>0; i–) //否则,开始循环计算
   {
   for(j=0; jstrlen(str2)) //将短的字符串放前面
   comman=commanstring(str2, str1);
   else
   comman=commanstring(str1, str2);
   printf(“the longest comman string is: %s ”, comman);
   }
  
   11.写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于
   str2返回1,若str1小于str2返回-1
   int strcmp ( const char * src,const char * dst)
   {
   int ret = 0 ;
   while( ! (ret = *(unsigned char *)src – *(unsigned char *)dst) && *dst)
   {
   ++src;
   ++dst;
   }
   if ( ret < 0 )
   ret = -1 ;
   else if ( ret > 0 )
   ret = 1 ;
   return( ret );
   }
  
   3,求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);
   求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,
   能被625整除的数的个数n4.
   1000!末尾的零的个数=n1+n2+n3+n4;
   #include
   #define NUM 1000
   int find5(int num){
   int ret=0;
   while(num%5==0){
   num/=5;
   ret++;
   }
   return ret;
   }
   int main(){
   int result=0;
   int i;
   for(i=5;i

【C语言面试题】相关文章

1. 一家外企的面试题目(C/C++面试题,C语言面试题)

2. C语言面试题

3. C语言面试题

4. SQL语言面试题

5. C语言笔试题回忆

6. C语言开发工程师测试题

7. C语言基础笔试题

8. c语言常见笔试题总结

9. C语言笔试题

10. 外企C语言笔试题

本文来源:https://www.mianshiwenti.com/a13231.html

点击展开全部

《C语言面试题》

将本文的Word文档下载到电脑,方便收藏和打印

推荐程度:

进入下载页面

﹝C语言面试题﹞相关内容

「C语言面试题」相关专题

其它栏目

也许您还喜欢