C語言面試

2021-08-09 03:42:08 字數 1117 閱讀 5616

首先先看這篇部落格,不是我自己的但是能有不少幫助,這裡部分算抄襲這位大牛的部落格:

正確答案:

#define min(a,b)  ( (a) <= (b) ? (a) : (b) )      

錯誤答案:

#define min(a,b)  (a) <= (b) ? (a) : (b)   或者   #define min(a,b)  ( a <= b ? a : b )

迴圈演算法:

link_node *reverse_link(link_node *head)

return previous; //到最後previous是頭結點,head為null

}遞迴演算法:

才疏學淺。這個鍊錶逆序遞迴其實並不難要花些時間看,不過是值得的

link_node *reverselink2(link_node *head)

分析:分析遞迴應從遞迴的最深層分析,以上程式相當於滿足(head != null) && (head->next != null)將會執行遞迴,也就是現將最末尾兩個節點」角色互換「,然後又一次遞迴將倒數

二、三個節點」角色互換「,依次內推。

float b = 1.0f;

int &a = b;

結果是:b = 1,a = 1065353216

(1) 先試想:判斷n能被5整除多少次,即n/5就好了嘛,因為這表示"子值"結尾有0 和 "子值"相乘產生0。是否可行看第二點。

(2) 試想是正確的,但是考慮不周,其只能判斷結尾產生乙個0的個數,還需要考慮判斷結尾產生多個0的情況。來個假設嘛,判斷產生1個0的個數只要"n/5",那產生2個0是不是"n/5/5"就好呢?其實就是這麼簡單的。多個0便依次類推。

**如下:

int countzero(int n)

return ret;

}分析:上述第一次迴圈即是n/5,表示:「子值」結尾有1個0 或 「子值」間相乘產生的新值結尾有1個0 的個數。

第二次迴圈即是n/5/5,表示:「子值」結尾有2個0 或 「子值」間相乘產生的新值結尾有2個0 的個數。剩下的迴圈依次類推了。

C語言面試

2 評價下面的 片斷 unsigned int zero 0 unsigned int compzero 0xffff 對於乙個 int型不是 16位的處理器為說,上面的 是不正確的。應編寫如下 unsigned int compzero 0 這一問題真正能揭露出應試者是否懂得處理器字長的重要性。在...

面試基礎語言c

1.c 與c的區別 2.如何讓乙個c 程式執行c的程式且不需要對函式進行名字重整extern c 3.指標與引用的區別 4.c 中間的指標傳遞和引用傳遞 5.形參與實參 6.三種傳遞 7.static 8.靜態變數的初始化 9.const 10.指標與const 11.mutable 12.exte...

C語言面試題

基礎篇 1 區域性變數能否和全域性變數重名?可以2 如何引用乙個已經定義過的全域性變數?直接呼叫並初始化 3 全域性變數可不可以定義在可被多個.c檔案包含的標頭檔案中?為什麼?可以,6 堆和棧有什麼區別?7 什麼是預編譯,何時需要預編譯 8 c和c 中的struct有什麼不同?9 memset me...