C語言面試題

2021-06-17 23:23:51 字數 1639 閱讀 3073

基礎篇

1、區域性變數能否和全域性變數重名?

可以2、如何引用乙個已經定義過的全域性變數?

直接呼叫並初始化

3、全域性變數可不可以定義在可被多個.c檔案包含的標頭檔案中?為什麼?

可以,6、堆和棧有什麼區別?

7、什麼是預編譯,何時需要預編譯:

8、c和c++中的struct有什麼不同?

9、memset ,memcpy 和strcpy 的根本區別?

10、assert()是幹什麼用的

11、分別給出bool,int,float,指標變數 與「零值」比較的 if 語句(假設變數名為var)

12.如果記憶體中有這樣兩個數:1000 0000 0000 0000 和 1111 1111 1111 1111,那麼他們對應的10進製數字分別是多少?

大小端:

有無符號:

進製:13.用最有效率的方法算出2乘以8等於幾

n << 3 + n

14.x=x+1, x+=1, x++, ++x  哪個效率最高?為什麼?

15.如果有「int a=5, b=3」,則在執行「!a&&b++」後,a和b的值分別是多少?

################################

二、看**寫執行結果

1.#請寫出下列**的輸出內容   

#include 

int main(void)   

2.設有以下說明和定義:  

typedef union

date;

struct data

too;

date max;   

printf("%d",sizeof(struct data)+sizeof(max));的執行結果是:_______

3.某32位系統下, c程式,請計算sizeof 的值。

char str[10] = 「hello.c/」;

char (*p)[10] = str ;

int n = 10;

請計算sizeof (str ) = ?

strlen(str) ?

sizeof ("abcdef") = ?

sizeof ("abcdef" + 1) = ?

sizeof ( p ) = ?

sizeof ( n ) = ?

void foo ( char str[100])

void *p = malloc( 100 );

sizeof ( p ) = ?;

4.下面的**輸出是什麼,為什麼?

void foo(void)

三、編碼題

1.模仿字元處理函式庫,寫出strcpy函式

s2.寫乙個函式返回1+2+3+…+n的值?

3.編寫下列巨集:

1)寫乙個「標準」巨集min,這個巨集輸入兩個引數並返回較小的乙個。

2)用預處理指令#define 宣告乙個常數,用以表明1年中有多少秒(忽略閏年問題)

3)用巨集定義寫出swap(x,y)

4)一語句實現x是否為2的若干次冪的判斷

4.寫乙個遞迴函式實現斐波拉契數列?

鑑於該問題使用遞迴解決,實在無效率可言。請問,如何不使用遞迴,來實現上述函式?

5.編寫出乙個從字串到長整形的轉換函式?

C語言面試題

1.求某一年的某一天 includestruct sdate int main int i 0,nday dt.nday while i2 nday printf 這是 d年的第 d天 n dt.nyear,dt.nday return 0 將列印和演算法抽象成不同函式 includestruct ...

C語言面試題

1.要求使用一維陣列,輸入10名同學的序號和成績,並進行排序。題目1196 成績排序 題目描述 用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出 按照學生的成績從小到...

C語言面試題之華為面試題

1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...