複習c語言 面試題

2021-10-04 01:50:24 字數 1664 閱讀 5216

簡單直接排序

#include

intmain()

;int n=

sizeof

(a)/

sizeof

(a[0])

;int i,j,temp;

printf

("原陣列為:");

for(i=

0;i++i)

printf

("%d "

,a[i]);

printf

("\n\n");

for(i =

1; i < n; i++

) a[j]

=temp;

}printf

("排序後陣列:");

for(i=

0;i)printf

("%d "

,a[i]);

printf

("\n");

return0;

}

將乙個3x3的陣列轉置

void

printf_a

(int a[

3],int col,

int raw)

;void

zhuanzhi

(int

(*a)[3

]);int

main()

;printf_a

(a,3,3

);//transpose(a,3,3);

zhuanzhi

(a);

printf_a

(a,3,3

);return0;

}void

printf_a

(int a[

3],int col,

int raw)

printf

("\n");

}printf

("******************\n");

}void

zhuanzhi

(int

(*a)[3

])

2.有一陣列,int a[4] = ; *((int *)(&a + 1) - 1)的結果是:

答:4這個問題的關鍵是理解 &a

a是乙個陣列名,也就是陣列的首位址。

對a進行取位址運算子,得到的是乙個指向陣列的指標!!!!這句話尤為重要!

也就相當於

int (*p) [4] = &a;

p是乙個指標,它指向的是乙個包含4個int元素的陣列!!

(&a + 1) 相當於p的偏移量相當於 p + sizeof(int) * 4

而程式中強制將指標(int *(&a + 1))轉換成乙個(int) 那麼 p -1 其實就是 p - sizeof(int)。所以,再-1 指向了陣列中得最後乙個元素,也就是 4。

4.寫乙個巨集函式,功能:求結構體(struct type)成員(mem)相對於其首位址的偏移位址

#define struct_offset(type, mem) (( size_t ) &(( struct type*) 0 )->mem)

因為是求偏移量 所以假設結構體的首位址是0開始,把他轉換成結構體指標型別,在用->取得他的成員,前面加了乙個& 就是取得這個成員的位址,最後在強制轉換成size_t,這樣就得到了偏移量。

C語言面試題

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

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,分別代表每個學生的學號和成績。輸出 按照學生的成績從小到...