記C語言筆試題

2021-10-18 05:56:20 字數 1865 閱讀 2181

記2021.1.29廣州通則康威筆試

面試的是軟體工程師(c語言偏嵌入式)

總共6道題,30分鐘。

1.static全域性變數和普通全域性變數的區別?static區域性變數和普通區域性變數的區別?static函式與普通函式的區別?

經常會遇到的一道面試題。static修飾的全域性變數限定了該全域性變數的作用域,使其只作用於本模組,在本模組內有效;而普通的全域性變數可以可以作用於其他的模組,作用域更大。 static修飾的區域性變數儲存在記憶體資料段的靜態區,生命週期變長,作用域不變,在下次呼叫該變數時依舊使用上次的值。而普通的區域性變數儲存在棧區,在函式呼叫完後就會釋放,下次呼叫又重新申請。static函式限定了其作用域,使其只在本模組內可呼叫,在其他模組不行。而普通函式可以在其他的模組內呼叫。

2.寫出下面程式的執行結果。

int

main

(int argc,

char

**ar**)

考察關鍵字sizeof與函式strlen()以及字串,陣列,指標的一道基本的題目。

基於32位作業系統,sizeof()求指標所佔位元組,sizeof(陣列名)是求陣列所佔的位元組大小,strlen()求字串長度,遇到『\0』結束。輸出4,6,5,5。

3.指出下面程式所有可能出現的錯誤。

void

main()

找錯誤題,可能平時做的少,一開始有點懵,只找到:*ptr=8可能會引起段錯誤,因為指標ptr指向的空間未知,不安全。y=8358300000,感覺有點大,就寫了超出了int型的範圍,導致溢位。之後查了一下,確實超了幾倍。在32位作業系統中,ptr=y也超出了位址取值範圍。在64位作業系統中,ptr=y就沒有什麼問題了。這個判斷語句,弄成賦值語句,由於str指向的位址也不確定,也會導致段錯誤。最後返回值return 0和函式的無返回值衝突,引起警告。

感覺這個題,真的是每一句都有問題,指標定義時候最好指向確定位址,如char *p=null;不然是乙個野指標,不安全。

4.實現int mystrcpy(char *dest,const char *src),不使用strcpy及其他庫函式。

筆試經常遇到的乙個題。

int

mystrcpy

(char

*dest,

const

char

*src)

6.自定義函式,讀出文字檔案msg.txt所有內容,返回檔案的總位元組數。

忘了具體的。只答了fopen,fread,fclose三個函式,不記得裡面引數填啥。

之後複習了下

file *fopen(const char *path, const char *mode);

size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);

int fclose(file *stream);

int

fun(

void);

int i=

100, num=0;

file *fp=

null

; fp=

fopen

("./msg.txt"

,r);

if(fp==

null

)printf

("fopen error!\n");

while

(i==

100)

fclose

(fp)

;return num;

}

感覺還是不知道儲存的資料,需要先讀出有多少資料,之後再申請多大空間儲存內容才行。

C語言筆試題

有a b c d四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1 2 5 10分鐘,只有一支手電,並且同時最多只能兩個 人一起過橋。請問,如何安排,能夠在17分鐘內這四個人都過橋?答案 a b 2 mins 1 mins a c d 10 mins 2 mins b a b 2 mins 一共...

C語言筆試題

1 用標準c程式設計 找出整形數字1 100之間的素數,並列印出來。素數 除了1和自己本身可以被整除。include stdio.h main inti,j,n 0 printf 1 100之間的素數 n for i 2 i 100 i for j 2 jif i j 0 break if i j ...

c語言 筆試題6 25

unsigned short a 10 printf a u n a char c 128 printf c d n c 解析 a 0xfffffff5,int值 為 11,但輸出的是uint。所以輸出4294967285 第二題,c 0x10,輸出的是int,最高位為1,是負數,所以它的值就是0x...