C面試題整理 答案

2021-05-30 17:38:28 字數 3574 閱讀 8538

c面試題分類

【2011.10.17百度面試題 】輸入乙個公升序陣列,然後在陣列中快速尋找兩個數字,其和等於乙個給定的值。

答案:用兩個指標乙個指向陣列前面,乙個指向陣列的後面,遍歷一遍就可以了。

【2011google校園招聘筆試題 】 乙個字串,壓縮其中的連續空格為1個後,對其中的每個字串逆序列印出來。比如"abc efg hij"列印為"cba gfe jih"。

答案:1. #include

2. #include

3. #include

4. #include

5. using namespace std;

6. 7. string reverse(string str)

8.20. p = q;

21. }

22. else

23.28. while(!stk.empty())

29.33. p = q;

34. }

35. }

36. return ret;

37. }

38. int main(void)

39.【2012百度實習生招聘面試題一面】任意給乙個數,試證明這個數的某個倍數的十進位制表示是01串,比如3的倍數111是二進位制表示,5的倍數10是二進位制表示,等等。

答案: 假設序列1,11,111,1111…用a1~an標識,下腳標n即為1的個數,如:a1=1,a2=11,a3=111…

其中沒有乙個是n的倍數,即ak mod n不等於0(k屬於1~n),並且ak mod n的餘數各不相同,設它們為a1,a2,a3,…,an,但ak mod n的餘數最多只有n-1個不同,則由鴿巢原理可知,a1,a2,a3,…,an中必有兩個相同,即ai=aj(j>i),則aj-ai=0(mod n),aj-ai即為所求的0和1組成的十進位制數m,得證。

【2012百度實習生招聘面試題一面】給乙個很大的陣列,裡面有兩個數隻出現過一次,其他數都出現過兩次,把這兩個數找出來。

答案:根據所有數的異或結果,將數字分為兩組,然後找出這兩個數

int find(int* array, int size)

int main(void)

; printf("%d", find(array, sizeof array / sizeof *array));

return 0;

}【2012屆華為校園招聘機試題】選秀節目打分,分為專家評委和大眾評委,score 陣列裡面儲存每個評委打的分數,judge_type 裡儲存與 score 陣列對應的評委類別,judge_type[i] == 1,表示專家評委,judge_type[i] == 2,表示大眾評委,n表示評委總數。打分規則如下:專家評委和大眾評委的分數先分別取乙個平均分(平均分取整),然後,總分 = 專家評委平均分 * 0.

6 + 大眾評委 * 0.4,總分取整。如果沒有大眾評委,則總分 = 專家評委平均分,總分取整。

函式最終返回選手得分。

函式介面 int cal_score(int score, int judge_type, int n)

答案:1. int cal_score(int score, int judge_type, int n)

2.14. else //大眾評委

15.19. }

20. if(0 == publicnum) //沒有大眾評委

21.24. else

25.29. }

【2012屆華為校園招聘機試題】給定乙個陣列input ,如果陣列長度n為奇數,則將陣列中最大的元素放到 output 陣列最中間的位置,如果陣列長度n為偶數,則將陣列中最大的元素放到 output 陣列中間兩個位置偏右的那個位置上,然後再按從大到小的順序,依次在第乙個位置的兩邊,按照一左一右的順序,依次存放剩下的數。

例如:input = output = ; input = output =

函式介面 void sort(int input[[, int n, int output)

答案:1. void sort(int input , int n , int output)

2.14. }

15. }//for

16. mid = n>>1;

17. j = mid - 1;

18. k = mid + 1;

19. output[mid] = input[0];

20. for(i = 1 ; i < n ; ) //按照一左一右的順序

21.27. }

【2012搜狗校園招聘筆試題】下面**中for迴圈共執行了多少次?

1. unsigned short i,j;

2. for(i=0, j=2; i!=j; i+=5, j+=7)

3. {}

答案:unsigned short占用2個位元組,當資料範圍到頭了(2^16-1),就又從0開始計數了,這個其實就是兩輛汽車行駛在乙個圓圈裡的汽車追及問題。乙個速度為5,乙個速度為7,當速度為7的超越速度為5的時候,兩個汽車就相遇了,2 + 7n - 5n = 2^16 所以共迴圈了32767次。

【2012搜狗校園招聘筆試題】下面程式應該輸出多少?

1. char *c = ;

2. char **cp = ;

3. char ***cpp = cp;

4. 5. int main(void)

6.答案:輸出結果:

【2012搜狗校園招聘筆試題】下列**的輸出為多少?

[cpp] view plaincopyprint?

1. int main(void)

2. ;

4. enum ;

5. return 0;

6. }

a、c、e、h、x、y、z、w、s、t的值分別是多少?

答案:在列舉型別中宣告的第乙個列舉成員它的默值為零。沒有顯示賦值的列舉成員的值,總是前乙個列舉成員的值+1。

a:0 c:6 e:5 h:0 x:1 y:2

z:3 w:121 s:100 t:101

【2012搜狗校園招聘筆試題】

union test

;test test;

test.a[0]=256;

test.a[1]=255;

test.a[2]=254;

test.a[3]=253;

printf("%d\n",test.b);

問題:在80x86架構下,輸出什麼值

答案:輸出:-256

short型別佔2個位元組,如果右邊是低位址,左邊是高位址,那麼儲存如下:

1111 1111 0000 0000

test.a[1] test.a[0]

顯然b占用上面的2個位元組,最高位為1,則是乙個負數,取反+1後,得到-256(1000 0001 0000 0000)

【2012搜狗校園招聘筆試題】下面**輸出什麼?

1. #pragma pack(4)

2. 3. int main(void)

4. *pstpimdata;

14.15. pstpimdata = (struct tampim*)puc;

16. memset(puc, 0 , 4);

C面試題及答案

ssion變數 3 使用server.transfer 3.一列數的規則如下 1 1 2 3 5 8 13 21 34.求第30位數是多少,用遞迴演算法實現。答 public class mainclass public static int foo int i 4.c 中的委託是什麼?事件是不是一...

C 面試題及答案

1.求下面函式的返回值?int func x return countx 假定x 9999。答案 8 思路 將x轉化為2進製,看含有的1的個數。2.什麼是 引用 申明和使用 引用 要注意哪些問題?答 引用就是某個目標變數的 別名 alias 對應用的操作與對變數直接操作效果完全相同。申明乙個引用的時...

c 面試題及答案

一 填空 每空2分,共20分 1 c 目標程式經後生成擴充套件名為exe的可執行程式檔案。2 16位計算機中整型占個位元組儲存空間。3 要在螢幕上顯示 hello,world 應執行語句cout 4 表示式8 3的結果是 5 作為語句的函式呼叫是通過來體現的。6 執行if x 0 x 0 cout ...