C語言筆試題

    時間:2023-04-05 04:20:24 筆試題目 我要投稿
    • 相關推薦

    C語言筆試題集錦

      1、編寫一個 C 函數,該函數在一個字符串中找到可能的最長的子字符串,且該字符串是由同一字符組成的。

    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\n”, m, n);

      }

      int main()

      {

      int b = 3;

      foo(b+=3, ++b);

      printf(“b=%d\n”, 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; j<=strlen(shortstring)-i; j++){

      memcpy(substring, &shortstring[j], i);

      substring[i]='\0';

      if(strstr(longstring, substring)!=NULL)

      return substring;

      }

      }

      return NULL;

      }

      main()

      {

      char *str1=malloc(256);

      char *str2=malloc(256);

      char *comman=NULL;

      gets(str1);

      gets(str2);

      if(strlen(str1)>strlen(str2)) //將短的字符串放前面

      comman=commanstring(str2, str1);

      else

      comman=commanstring(str1, str2);

      printf(“the longest comman string is: %s\n”, 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<=NUM;i+=5)

      {

      result+=find5(i);

      }

      printf(” the total zero number is %d\n”,result);

      return 0;

      }

    【C語言筆試題】相關文章:

    華為筆試題(C語言)12-10

    華為C語言筆試題12-12

    基礎C++/C語言筆試題分享11-21

    yahoo在線筆試題(c語言)12-12

    C語言筆試試題及答案07-31

    c語言筆試題目及答案08-17

    2015C語言筆試題及答案08-08

    計算機C語言試題及答案02-25

    華為筆試題及分析目(C語言篇)11-06

    2017年c語言面試筆試題11-22

    91久久大香伊蕉在人线_国产综合色产在线观看_欧美亚洲人成网站在线观看_亚洲第一无码精品立川理惠

      亚洲色精品vr一区区三区 | 亚洲视频在线青青 | 日韩呦呦一区二区精品视频 | 亚洲国产精品国自产拍久久 | 日韩精品卡通动漫中文字幕 | 野外少妇弄到喷 |