<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • C筆試題

    時(shí)間:2023-04-05 00:32:28 筆試題目 我要投稿

    C筆試題

      1) 讀文件file1.txt的內(nèi)容(例如):

    C筆試題

      12

      34

      56

      輸出到file2.txt:

      56

      34

      12

      (逆序)

      2)輸出和為一個(gè)給定整數(shù)的所有組合

      例如n=5

      5=1+4;5=2+3(相加的數(shù)不能重復(fù))

      則輸出

      1,4;2,3。

      第一題,注意可增長(zhǎng)數(shù)組的應(yīng)用.

      #include

      #include

      int main(void)

      { int MAX = 10;

      int *a = (int *)malloc(MAX * sizeof(int));

      int *b;

      FILE *fp1;

      FILE *fp2;

      fp1 = fopen(“a.txt”,”r”);

      if(fp1 == NULL)

      {printf(“error1″);

      exit(-1);

      }

      fp2 = fopen(“b.txt”,”w”);

      if(fp2 == NULL)

      {printf(“error2″);

      exit(-1);

      }

      int i = 0;

      int j = 0;

      while(fscanf(fp1,”%d”,&a[i]) != EOF)

      {i++;

      j++;

      if(i >= MAX)

      {

      MAX = 2 * MAX;

      b = (int*)realloc(a,MAX * sizeof(int));

      if(b == NULL)

      {printf(“error3″);

      exit(-1);

      }a = b;

      }}

      for(;–j >= 0;)

      fprintf(fp2,”%d\n”,a[j]);

      fclose(fp1);

      fclose(fp2);

      return 0;

      }

      第二題.

      #include

      int main(void)

      {unsigned long int i,j,k;

      printf(“please input the number\n”);

      scanf(“%d”,&i);

      if( i % 2 == 0)

      j = i / 2;

      else

      j = i / 2 + 1;

      printf(“The result is \n”);

      for(k = 0; k < j; k++)

      printf(“%d = %d + %d\n”,i,k,i – k);

      return 0;

      }

      #include

      void main()

      {unsigned long int a,i=1;

      scanf(“%d”,&a);

      if(a%2==0)

      { for(i=1;i printf(“%d”,a,a-i);

      }

      else

      for(i=1;i<=a/2;i++)

      printf(” %d, %d”,i,a-i);

      }

      兄弟,這樣的題目若是做不出來(lái)實(shí)在是有些不應(yīng)該, 給你一個(gè)遞規(guī)反向輸出字符串的例子,可謂是反序的經(jīng)典例程.

      void inverse(char *p)

      { if( *p = = ‘\0′ )

      return;

      inverse( p+1 );

      printf( “%c”, *p );

      }

      int main(int argc, char *argv[])

      {

      inverse(“abc\0″);

      return 0;

      }

      借簽了樓上的“遞規(guī)反向輸出”

      #include

      void test(FILE *fread, FILE *fwrite)

      { char buf[1024] = {0};

      if (!fgets(buf, sizeof(buf), fread))

      return;

      test( fread, fwrite );

      fputs(buf, fwrite);

      }

      int main(int argc, char *argv[])

      { FILE *fr = NULL;

      FILE *fw = NULL;

      fr = fopen(“data”, “rb”);

      fw = fopen(“dataout”, “wb”);

      test(fr, fw);

      fclose(fr);

      fclose(fw);

      return 0;

      }

      在對(duì)齊為4的情況下

      struct BBB

      { long num;

      char *name;

      short int data;

      char ha;

      short ba[5];

      }*p;

      p=0×1000000;

      p+0×200=____;

      (Ulong)p+0×200=____;

      (char*)p+0×200=____;

      解答:假設(shè)在32位CPU上,

      sizeof(long) = 4 bytes

      sizeof(char *) = 4 bytes

      sizeof(short int) = sizeof(short) = 2 bytes

      sizeof(char) = 1 bytes

      由于是4字節(jié)對(duì)齊,

      sizeof(struct BBB) = sizeof(*p)

      = 4 + 4 + 2 + 1 + 1/*補(bǔ)齊*/ + 2*5 + 2/*補(bǔ)齊*/ = 24 bytes (經(jīng)Dev-C++驗(yàn)證)

      p=0×1000000;

      p+0×200=____;

      = 0×1000000 + 0×200*24

      (Ulong)p+0×200=____;

      = 0×1000000 + 0×200

      (char*)p+0×200=____;

      = 0×1000000 + 0×200*4

      你可以參考一下指針運(yùn)算的細(xì)節(jié)

      寫一段程序,找出數(shù)組中第k大小的數(shù),輸出數(shù)所在的位置。例如{2,4,3,4,7}中,第一大的數(shù)是7,位置在4。第二大、第三大的數(shù)都是4,位置在 1、3隨便輸出哪一個(gè)均可。函數(shù)接口為:int find_orderk(const int* narry,const int n,const int k)

      要求算法復(fù)雜度不能是O(n^2)

      謝謝!

      可以先用快速排序進(jìn)行排序,其中用另外一個(gè)進(jìn)行地址查找

      代碼如下,在VC++6.0運(yùn)行通過。給分吧^-^

      //快速排序

      #include

      usingnamespacestd;

      intPartition (int*L,intlow,int high)

      {inttemp = L[low];

      intpt = L[low];

      while (low < high)

      {while (low < high && L[high] >= pt)

      –high;

      L[low] = L[high];

      while (low < high && L[low] <= pt)

      ++low;

      L[low] = temp;

      }

      L[low] = temp;

      returnlow;

      }

      voidQSort (int*L,intlow,int high)

      {if (low < high)

      {

      intpl = Partition (L,low,high);

      QSort (L,low,pl – 1);

      QSort (L,pl + 1,high);

      }}

      intmain ()

      {intnarry[100],addr[100];

      intsum = 1,t;

      cout << “Input number:” << endl;

      cin >> t;

      while (t != -1)

      {narry[sum] = t;

      addr[sum - 1] = t;

      sum++;

      cin >> t;

      }

      sum -= 1;

      QSort (narry,1,sum);

      for (int i = 1; i <= sum;i++)

      cout << narry[i] << ‘\t’;

      cout << endl;

      intk;

      cout << “Please input place you want:” << endl;

      cin >> k;

      intaa = 1;

      intkk = 0;

      for (;;)

      {if (aa == k)

      break;

      if (narry[kk] != narry[kk + 1])

      {aa += 1;

      kk++;

      }

      }

      cout << “The NO.” << k << “number is:” << narry[sum - kk] << endl;

      cout << “And it’s place is:” ;

      for (i = 0;i < sum;i++)

      {if (addr[i] == narry[sum - kk])

      cout << i << ‘\t’;

      }return0;

      }

      1、找錯(cuò)

      Void test1()

      {

      char string[10];

      char* str1=”0123456789″;

      strcpy(string, str1);// 溢出,應(yīng)該包括一個(gè)存放’\0′的字符string[11]

      }

      Void test2()

      {

      char string[10], str1[10];

      for(I=0; I<10;I++)

      {str1[i] =’a';

      }

      strcpy(string, str1);// I,i沒有聲明。

      }

      Void test3(char* str1)

      {char string[10];

      if(strlen(str1)<=10)// 改成<10,字符溢出,將strlen改為sizeof也可以

      {strcpy(string, str1);

      }}

      2. void g(int**);

      int main()

      {int line[10],i;

      int *p=line; //p是地址的地址

      for (i=0;i<10;i++)

      {*p=i;

      g(&p);//數(shù)組對(duì)應(yīng)的值加1

      }

      for(i=0;i<10;i++)

      printf(“%d\n”,line[i]);

      return 0;

      }

      void g(int**p)

      { (**p)++;

      (*p)++;// 無(wú)效

      }

      輸出:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      3. 寫出程序運(yùn)行結(jié)果

      int sum(int a)

      {auto int c=0;

      static int b=3;

      c+=1;

      b+=2;

      return(a+b+c);

      }

      void main()

      {int I;

      int a=2;

      for(I=0;I<5;I++)

      {printf(“%d,”, sum(a));

      }

      }

      // static會(huì)保存上次結(jié)果,記住這一點(diǎn),剩下的自己寫

      輸出:8,10,12,14,16,

      4.

      int func(int a)

      {int b;

      switch(a)

      {case 1: 30;

      case 2: 20;

      case 3: 16;

      default: 0

      }

      return b;

      }

      則func(1)=?

      // b定義后就沒有賦值。

      5:

      int a[3];

      a[0]=0; a[1]=1; a[2]=2;

      int *p, *q;

      p=a;

      q=&a[2];

      則a[q-p]=a[2]

      解釋:指針一次移動(dòng)一個(gè)int但計(jì)數(shù)為1

      今天早上的面試題9道,比較難,向牛人請(qǐng)教,國(guó)內(nèi)的一牛公司,坐落在北京北四環(huán)某大廈:

      1、線形表a、b為兩個(gè)有序升序的線形表,編寫一程序,使兩個(gè)有序線形表合并成一個(gè)有序升序線形表h;

      答案在 請(qǐng)化大學(xué) 嚴(yán)銳敏《數(shù)據(jù)結(jié)構(gòu)第二版》第二章例題,數(shù)據(jù)結(jié)構(gòu)當(dāng)中,這個(gè)叫做:兩路歸并排序

      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->data>qa->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;

      return R;

      }

      2、運(yùn)用四色定理,為N個(gè)局域舉行配色,顏色為1、2、3、4四種,另有數(shù)組adj[][N],如adj[i][j]=1則表示i區(qū)域與j區(qū)域相鄰,數(shù)組color[N],如color[i]=1,表示i區(qū)域的顏色為1號(hào)顏色。

      四色填充

      3、用遞歸算法判斷數(shù)組a[N]是否為一個(gè)遞增數(shù)組。

      遞歸的方法,記錄當(dāng)前最大的,并且判斷當(dāng)前的是否比這個(gè)還大,大則繼續(xù),否則返回false結(jié)束:

      bool fun( int a[], int n )

      {

      if( n= =1 )

      return true;

      if( n= =2 )

      return a[n-1] >= a[n-2];

      return fun( a,n-1) && ( a[n-1] >= a[n-2] );

      }

      4、編寫算法,從10億個(gè)浮點(diǎn)數(shù)當(dāng)中,選出其中最大的10000個(gè)。

      1.給兩個(gè)數(shù)組和他們的大小,還有一動(dòng)態(tài)開辟的內(nèi)存,求交集,把交集放到動(dòng)態(tài)內(nèi)存dongtai,并且返回交集個(gè)數(shù)

      long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[])

      2.單連表的建立,把’a'–’z’26個(gè)字母插入到連表中,并且倒敘,還要打印!

      方法1:

      typedef struct val

      { int date_1;

      struct val *next;

      }*p;

      void main(void)

      { char c;

      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;

      int longth = ‘z’ – ‘b’;

      int i=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.可怕的題目終于來(lái)了

      象搜索的輸入信息是一個(gè)字符串,統(tǒng)計(jì)300萬(wàn)輸入信息中的最熱門的前十條,我們每次輸入的一個(gè)字符串為不超過255byte,內(nèi)存使用只有1G,

      請(qǐng)描述思想,寫出算發(fā)(c語(yǔ)言),空間和時(shí)間復(fù)雜度,

      4.國(guó)內(nèi)的一些帖吧,如baidu,有幾十萬(wàn)個(gè)主題,假設(shè)每一個(gè)主題都有上億的跟帖子,怎么樣設(shè)計(jì)這個(gè)系統(tǒng)速度最好,請(qǐng)描述思想,寫出算發(fā)(c語(yǔ)言),空間和時(shí)間復(fù)雜度,

      #include string.h

      main(void)

      { char *src=”hello,world”;

      char *dest=NULL;

      dest=(char *)malloc(strlen(src));

      int len=strlen(str);

      char *d=dest;

      char *s=src[len];

      while(len–!=0)

      d++=s–;

      printf(“%s”,dest);

      }

      找出錯(cuò)誤!!

      #include “string.h”

      #include “stdio.h”

      #include “malloc.h”

      main(void)

      {

      char *src=”hello,world”;

      char *dest=NULL;

      dest=(char *)malloc(sizeof(char)*(strlen(src)+1));

      int len=strlen(src);

      char *d=dest;

      char *s=src+len-1;

      while(len–!=0)

      *d++=*s–;

      *d=’\0′;

      printf(“%s”,dest);

      }

      1. 簡(jiǎn)述一個(gè)Linux驅(qū)動(dòng)程序的主要流程與功能。

      2. 請(qǐng)列舉一個(gè)軟件中時(shí)間換空間或者空間換時(shí)間的例子。

      void swap(int a,int b)

      {

      int c; c=a;a=b;b=a;

      }

      —>空優(yōu)

      void swap(int a,int b)

      {

      a=a+b;b=a-b;a=a-b;

      }

      6. 請(qǐng)問一下程序?qū)⑤敵鍪裁唇Y(jié)果?

      char *RetMenory(void)

      { char p[] = “hellow world”;

      return p;

      }

      void Test(void)

      { char *str = NULL;

      str = RetMemory();

      printf(str);

      }

      RetMenory執(zhí)行完畢,p資源被回收,指向未知地址。返回地址,str的內(nèi)容應(yīng)是不可預(yù)測(cè)的, 打印的應(yīng)該是str的地址

      寫一個(gè)函數(shù),它的原形是int continumax(char *outputstr,char *intputstr)

      功能:

      在字符串中找出連續(xù)最長(zhǎng)的數(shù)字串,并把這個(gè)串的長(zhǎng)度返回,并把這個(gè)最長(zhǎng)數(shù)字串付給其中一個(gè)函數(shù)參數(shù)outputstr所指內(nèi)存。例如:”abcd12345ed125ss123456789″的首地址傳給intputstr后,函數(shù)將返回

      9,outputstr所指的值為123456789

      int continumax(char *outputstr, char *inputstr)

      {char *in = inputstr, *out = outputstr, *temp, *final;

      int count = 0, maxlen = 0;

      while( *in != ‘\0′ )

      {if( *in > 47 && *in < 58 )

      {for(temp = in; *in > 47 && *in < 58 ; in++ )

      count++;

      }

      else

      in++;

      if( maxlen < count )

      {maxlen = count;

      count = 0;

      final = temp;

      }}

      for(int i = 0; i < maxlen; i++)

      {*out = *final;

      out++;

      final++;

      }

      *out = ‘\0′;

      return maxlen;

      }

    【C筆試題】相關(guān)文章:

    C/C++程序員必備資料 常見筆面試題深入解析12-12

    C#筆試題02-24

    C++筆試題03-25

    C++ 筆試題08-09

    基礎(chǔ)C++/C語(yǔ)言筆試題分享11-21

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

    Sony C++筆試題02-11

    雅虎C#筆試題03-07

    常規(guī)的C程序筆試題12-09

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

    主站蜘蛛池模板: 无码国内精品久久人妻蜜桃| 亚洲精品成人网站在线观看| 蜜桃麻豆www久久国产精品| 人妻少妇精品视频一区二区三区 | 欧美777精品久久久久网| 亚洲AV无码成人精品区大在线| 午夜精品久视频在线观看| 久久久久人妻精品一区二区三区 | 夜夜高潮夜夜爽国产伦精品| 久久精品国产亚洲一区二区| 日产欧美国产日韩精品| 久久久久久国产精品无码下载| 精品四虎免费观看国产高清午夜| 少妇精品久久久一区二区三区| 久久国产精品波多野结衣AV | 久久久久四虎国产精品| 日韩av无码久久精品免费| 无码AV动漫精品一区二区免费| 国产成人精品久久亚洲高清不卡 | 99re热视频这里只精品| 少妇人妻无码精品视频app| 夜夜爽一区二区三区精品| 精品国产一区二区22| 国产99久久久国产精品~~牛| 精品一区二区三区免费| 丰满人妻熟妇乱又仑精品| 无码人妻精品一区二区在线视频| 欧美精品福利视频一区二区三区久久久精品 | 精品久久一区二区三区| 97久久久精品综合88久久| 精品无码一区二区三区爱欲九九 | 国产夫妇精品自在线| 久久99精品国产自在现线小黄鸭| 亚洲情侣偷拍精品| 无码人妻一区二区三区精品视频| 精品一区二区三区四区在线| 国产精品亚洲欧美大片在线观看 | 精品国产一区二区三区无码| 少妇精品无码一区二区三区| 亚洲欧美激情精品一区二区| 无码精品人妻一区二区三区免费|