經典C語言筆試題目 - 程式人生
文章推薦指數: 80 %
100 條經典C語言筆試題目 (3)請寫出char *p 與“零值”比較的if 語句 【標準答案】 if (p == NULL) if (p != NULL) 2、以下為Linux下的32 位C 程式, ...
程式人生>>經典C語言筆試題目
經典C語言筆試題目
阿新••發佈:2018-12-22
來源:https://blog.csdn.net/qq_36032963/article/details/64479469題目來源:1、中興、華為、慧通、英華達、微軟亞洲技術中心等中外企業面試題目;2、C語言面試寶典(林銳《高質量程式設計第三版》)。
說明:1、部分C語言面試題中可能會參雜部分和C++相關的知識,為了保持題目的靈活性故保留,但選題最終還是會以C語言題目為主體;2、以上公司的面試題目已成為國內中小型企業公司出題模板;3、由於本人的能力有限加上時間倉促,本課件肯定存在不足之處,懇請各位同學批評指正。
1、請填寫bool,float, 指標變數與“零值”比較的if 語句。
提示:這裡“零值”可以是0,0.0,FALSE 或者“空指標”。
例如int變數n 與“零值”比較的if 語句為:if(n==0) if(n!=0) 以此類推。
(1)請寫出boolflag 與“零值”比較的if 語句:【標準答案】if(flag) if(!flag)100條經典C語言筆試題目(2)請寫出float x 與“零值”比較的if 語句:【標準答案】constfloatEPSINON=0.00001; if((x>=-EPSINON)&&(x<=EPSINON) 不可將浮點變數用“==”或“!=”與數字比較,應該設法轉化成“>=”或“<=”此類形式。
100條經典C語言筆試題目(3)請寫出char *p 與“零值”比較的if 語句【標準答案】if(p==NULL) if(p!=NULL) 2、以下為Linux下的32位C程式,請計算sizeof的值。
char str[]=“Hello”; char *p=str; int n=10; 請計算(1)sizeof(str)= (2)sizeof(p)= (3)sizeof(n)=【標準答案】(1)6、(2)4、(3)4(4)voidFunc(charstr[100]) { ……; } 請計算sizeof(str)= (5)void*p=malloc(100); 請計算sizeof(p)= 【標準答案】(4)4、(5)44、用變數a給出下面的定義e)一個有10個指標的陣列,該指標是指向一個整型數的;f) 一個指向有10個整型數陣列的指標;g)一個指向函式的指標,該函式有一個整型引數並返回一個整型數;h)一個有10個指標的陣列,該指標指向一個函式,該函式有一個整型引數並返回一個整型數;【標準答案】e)int* a[10]; f)int(*a)[10] g)int(*a)(int); h)int(*a[10])(int)5、設有以下說明和定義:typedefunion{longi;intk[5];charc;}DATE;structdata{intcat;DATEcow;doubledog;}too;DATEmax;則語句printf("%d",sizeof(structdate)+sizeof(max));的執行結果是:_____【標準答案】DATE是一個union,變數公用空間. 裡面最大的變數型別是int[5], 佔用20個位元組. 所以它的大小是20data是一個struct, 每個變數分開佔用空間. 依次為int4+ DATE20+double8=32.所以結果是20+32=52.當然...在某些16位編輯器下,int可能是2位元組,那麼結果是int2+DATE10+double8=206、請問以下程式碼有什麼問題:intmain(){chara;char*str=&a;strcpy(str,"hello");printf(str);return0;}【標準答案】沒有為str分配記憶體空間,將會發生異常問題出在將一個字串複製進一個字元變數指標所指地址。
雖然可以正確輸出結果,但因為越界進行內在讀寫而導致程式崩潰。
7、請問以下程式碼有什麼問題:char*s="AAA";printf("%s",s);s[0]='B';printf("%s",s);有什麼錯?【標準答案】"AAA"是字串常量。
s是指標,指向這個字串常量,所以宣告s的時候就有問題。
cosntchar*s="AAA";然後又因為是常量,所以對是s[0]的賦值操作是不合法的。
8、int(*s[10])(int) 表示的是什麼啊【標準答案】int(*s[10])(int) 函式指標陣列,每個指標指向一個intfunc(intparam)的函式。
9、c和c++中的struct有什麼不同?【標準答案】c和c++中struct的主要區別是c中的struct不可以含有成員函式,而c++中的struct可以。
c++中struct和class的主要區別在於預設的存取許可權不同,struct預設為public,而class預設為private10、voidgetmemory(char*p){p=(char*)malloc(100);strcpy(p,“helloworld”);}intmain(){char*str=NULL;getmemory(str);printf(“%s/n”,str);free(str);return0;}會出現什麼問題?【標準答案】程式崩潰,getmemory中的malloc不能返回動態記憶體,free()對str操作很危險。
11、charszstr[10];strcpy(szstr,"0123456789");產生什麼結果?為什麼?【標準答案】長度不一樣,出現段錯誤。
100條經典C語言筆試題目12、陣列和連結串列的區別?【標準答案】陣列:資料順序儲存,固定大小;連結串列:資料可以隨機儲存,大小可動態改變13、voidmain(){charaa[10];printf(“%d”,strlen(aa));} 會出現什麼問題?列印結果是是多少?【標準答案】sizeof()和初不初始化,沒有關係,strlen()和初始化有關,列印結果值未知。
14、給定結構structA{chart:4;chark:4;unsignedshorti:8;unsignedlongm;};問sizeof(A)=?【標準答案】815、structname1{charstr;shortx;intnum;};求sizeof(name1)?【標準答案】816、structname2{charstr;intnum;shortx;};求sizeof(name2)?【標準答案】1217、程式哪裡有錯誤wap(int*p1,int*p2){int*p;*p=*p1;*p1=*p2;*p2=*p;}【標準答案】p為野指標(指向一個已刪除的物件或未申請訪問受限記憶體區域的指標)19、(void*)ptr和(*(void**))ptr的結果是否相同?其中ptr為同一個指標。
【標準答案】(void*)ptr和(*(void**))ptr值是相同的20、要對絕對地址0x100000賦值,我們可以用(unsignedint*)0x100000=1234;那麼要是想讓程式跳轉到絕對地址是0x100000去執行,應該怎麼做?【標準答案】*((void(*)())0x100000)();首先要將0x100000強制轉換成函式指標,即:(void(*)())0x100000然後再呼叫它:*((void(*)())0x100000)();22、關於記憶體的思考題(1)你能看出有什麼問題?23、關於記憶體的思考題(2)你能看出有什麼問題?25、關於記憶體的思考題(3)你能看出有什麼問題?26、關於記憶體的思考題(4)你能看出有什麼問題?27、關鍵字volatile有什麼含意?並給出三個不同的例子。
【參考答案】一個定義為volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。
精確地說就是,優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存在暫存器裡的備份。
下面是volatile變數的幾個例子:1).並行裝置的硬體暫存器(如:狀態暫存器)2).一箇中斷服務子程式中會訪問到的非自動變數(Non-automaticvariables)3).多執行緒應用中被幾個任務共享的變數28、嵌入式系統經常具有要求程式設計師去訪問某特定的記憶體位置的特點。
在某工程中,要求設定一絕對地址為0x67a9的整型變數的值為0xaa66。
編譯器是一個純粹的ANSI編譯器。
寫程式碼去完成這一任務。
【參考答案】這一問題測試你是否知道為了訪問一絕對地址把一個整型數強制轉換(typecast)為一指標是合法的。
這一問題的實現方式隨著個人風格不同而不同。
典型的類似程式碼如下:int*ptr;ptr= (int*)0x67a9;*ptr=0xaa55;29、標頭檔案中的ifndef/define/endif幹什麼用?【標準答案】防止該標頭檔案被重複引用。
30、#include
31、const 有什麼用途?(請至少說明兩種)【標準答案】:(1)可以定義const 常量(2)const 可以修飾函式的引數、返回值,甚至函式的定義體。
被const 修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。
32、static有什麼用途?(請至少說明兩種)【標準答案】1.限制變數的作用域(static全域性變數);2.設定變數的儲存域(static區域性變數)。
33、堆疊溢位一般是由什麼原因導致的?【標準答案】沒有回收垃圾資源。
34、如何引用一個已經定義過的全域性變數?【標準答案】可以用引用標頭檔案的方式,也可以用extern關鍵字,如果用引用標頭檔案方式來引用某個在標頭檔案中宣告的全域性變理,假定你將那個變數寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連線期間報錯。
35、全域性變數可不可以定義在可被多個.C檔案包含的標頭檔案中?為什麼?【標準答案】可以,在不同的C檔案中以static形式來聲明同名全域性變數。
可以在不同的C檔案中宣告同名的全局變數,前提是其中只能有一個C檔案中對此變數賦初值,此時連線不會出錯。
36、佇列和棧有什麼區別?【標準答案】佇列先進先出,棧後進先出。
37、Heap與stack的差別。
【標準答案】Heap是堆,stack是棧。
LinuxC高階程式設計——目錄操作
«上一篇
員工管理系統(C語言)——伺服器解析下一篇»
相關推薦
經典C語言筆試題目
來源:https://blog.csdn.net/qq_36032963/article/details/64479469題目...
100條經典C語言筆試題目(轉)
本文轉自:https://blog.csdn.net/yanghonker/article/details/401186151...
經典C語言面試題4:位元組對齊的作用
一、什麼是位元組對齊? 在現代計算機中,記憶體空間都是按照字節(byte)劃分的。
從理論上講對任何型別的變數的訪...
經典C語言面試題3:位域。
1、為什麼要用位域? 在計算機中,有些資訊儲存時並不需要佔用一個完整的位元組,而只需佔用一個或幾個二進位制位。
比如在存...
經典C語言面試題2:static關鍵字的用法?
C語言中static關鍵字的用法主要有以下三種:1、在函式體內,static變數的作用範圍為該函式體,該變數的記憶體只能被分配...
經典16道:嵌入式C語言筆試題
d)一個有10個整型數的陣列(Anarrayof10integers)
e)一個有10個指標的陣列,該指標是指向一個整型數的(Anarray...
嵌入式軟體c語言筆試題
這段時間參見嵌入式c筆試,對筆試中的一些c語言題目進行總結收錄。
1、CPU大小端問題
#include<...
C語言筆試題之——BOOL,int,float,指標型別的變數a與“零”的比較
Bool型:
if(a)
if(!a)
BOOL型,沒什麼好講的,無非就是true或false判斷
int型:
if...
整型數組裡只出現一次的數字--[c語言筆試題]
找出陣列內只出現一次的數字,是一系列的筆試題,來考...
C語言結構體的位元組對齊例項【C語言筆試題】
一、筆試題目:在一個64位的作業系統中定義如下結構體:
延伸文章資訊
- 1100 條經典C語言筆試題目 - 台部落
8、int (*s[10])(int) 表示的是什麼啊【標準答案】int (*s[10])(int) 函數指針數組,每個指針指向一個int func(intp aram) 的函數。 9、c和c+...
- 2嵌入式軟體c語言筆試題 - 程序員學院
嵌入式軟體c語言筆試題,收集的一些嵌入式軟體c語言題目, 均已經過驗證正確無誤1 cpu大小端問題include void main c c a 1 int d.
- 3經典C語言筆試題目 - 程式人生
100 條經典C語言筆試題目 (3)請寫出char *p 與“零值”比較的if 語句 【標準答案】 if (p == NULL) if (p != NULL) 2、以下為Linux下的32 位C...
- 4100 條經典C語言筆試題目(轉) - 程式人生
2、C 語言面試寶典(林銳《高質量程式設計第三版》)。 說明: 1、部分C 語言面試題中可能會參雜部分和C++ 相關的知 識 ...
- 5100 条经典C语言笔试题目- Smah - 博客园
2、C 语言面试宝典(林锐《高质量编程第三版》)。 说明: 1、部分C 语言面试题中可能会参杂部分和C++ 相关的知识,为了保持题目的灵活性故 ...