2023年c語言筆試題_第1頁
2023年c語言筆試題_第2頁
2023年c語言筆試題_第3頁
2023年c語言筆試題_第4頁
2023年c語言筆試題_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2023年c語言筆試題【完整版】

引導語:C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。以下是整理的c語言經(jīng)典筆試題,歡送參考閱讀!

1.用預處理指令#define聲明一個常數(shù),用以;#defineSECONDS_PER_YEAR;2.寫一個“標準”宏MIN,這個宏輸入兩個參數(shù)并;#defineMINA,BA=;4.嵌入式系統(tǒng)中常常要用到無限循環(huán),你怎么樣用C;這個問題用幾個解決方案;while1;一些程序員更喜愛如下方案:;for;;;第三個方案是用goto;

1.用預處理指令#define聲明一個常數(shù),用以說明1年中有多少秒(忽視閏年問題)

#defineSECONDS_PER_YEAR60*60*24*365UL

2.寫一個“標準”宏MIN,這個宏輸入兩個參數(shù)并返回較小的一個。

#defineMINA,BA=BA:B

4.嵌入式系統(tǒng)中常常要用到無限循環(huán),你怎么樣用C編寫死循環(huán)呢?

這個問題用幾個解決方案。我首選的方案是:

while1

一些程序員更喜愛如下方案:

for;;

第三個方案是用goto

Loop:

...

gotoLoop;

5.用變量a給出下面的定義

a一個整型數(shù)(Aninteger)

b一個指向整型數(shù)的指針(Apointertoaninteger)

c一個指向指針的的指針,它指向的指針是指向一個整型數(shù)(Apointertoapointertoaninteger)d一個有10個整型數(shù)的數(shù)組(Anarrayof10integers)

e一個有10個指針的數(shù)組,該指針是指向一個整型數(shù)的(Anarrayof10pointerstointegers)

f一個指向有10個整型數(shù)數(shù)組的指針(Apointertoanarrayof10integers)

g一個指向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)(Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger)

h一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)(Anarrayoftenpointerstofunctionsthattakeanintegerargumentandreturnaninteger)

答案是:

ainta;//Aninteger

bint*a;//Apointertoaninteger

cint**a;//Apointertoapointertoaninteger

dinta[10];//Anarrayof10integers

eint*a[10];//Anarrayof10pointerstointegers

fint*a[10];//Apointertoanarrayof10integers

gint*aint;//Apointertoafunctionathattakesanintegerargumentandreturnsaninteger

hint*a[10]int;//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger

6.關鍵字static的作用是什么?

這個簡潔的問題很少有人能答復完全。在C語言中,關鍵字static有三個明顯的作用:

1.在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。

2.在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。

3.在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。

7.關鍵字const是什么含意?

constinta;

intconsta;

constint*a;

int*consta;

intconst*aconst;

前兩個的作用是一樣,a是一個常整型數(shù)。第三個意味著a是一個指向常整型數(shù)的指針(也就是,整型數(shù)是不行修改的,但指針可以)。第四個意思a是一個指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不行修改的)。最終一個意味著a是一個指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不行修改的,同時指針也是不行修改的)。假如應試者能正確答復這些問題,那么他就給我留下了一個好印象。

8.關鍵字volatile有什么含意并給出三個不同的例子。

一個定義為volatile的變量是說這變量可能會被意想不到地轉(zhuǎn)變,這樣,編譯器就不會去假設這個變量的值了。準確地說就是,優(yōu)化器在用到這個變量時必需每次都當心地重新讀取這個變量的值,而不是使用保存在存放器里的備份。下面是volatile變量的幾個例子:

1.并行設備的硬件存放器(如:狀態(tài)存放器)

2.一個中斷效勞子程序中會訪問到的非自動變量Non-automaticvariables

3.多線程應用中被幾個任務共享的變量

1.一個參數(shù)既可以是const還可以是volatile嗎?解釋為什么。

2.一個指針可以是volatile嗎?解釋為什么。

3.下面的函數(shù)有什么錯誤:

intsquarevolatileint*ptr

return*ptr**ptr;

Ptr內(nèi)容可能被修改,無法保證兩次取得同一個值,應當先取出值放入一個變量中,然后通過這個變量來計算

9.嵌入式系統(tǒng)總是要用戶對變量或存放器進展位操作。給定一個整型變量a,寫兩段代碼,第一個設置a的bit3,其次個去除a的bit3。在以上兩個操作中,要保持其它位不變。

#defineBIT30x13

staticinta;

voidset_bit3void

voidclear_bit3void

a=~BIT3;

10.嵌入式系統(tǒng)常常具有要求程序員去訪問某特定的內(nèi)存位置的特點。在某工程中,要求設置一肯定地址為0x67a9的整型變量的值為0xaa66。編譯器是一個純粹的ANSI編譯器。寫代碼去完成這一任務。Int*p;

P=int*0x67a9;

*p=0xaa66;

11.中斷是嵌入式系統(tǒng)中重要的組成局部,這導致了許多編譯開發(fā)商供應一種擴展—讓標準C支持中斷。具代表事實是,產(chǎn)生了一個新的關鍵字__interrupt。下面的代碼就使用了__interrupt關鍵字去定義了一個中斷效勞子程序ISR,請評論一下這段代碼的。

__interruptdoublecompute_areadoubleradius

doublearea=PI*radius*radius;

printfArea=%f,area;

returnarea;

12.下面的代碼輸出是什么,為什么?

voidfoovoid

unsignedinta=6;

intb=-20;

a+b6puts6:puts=6;

6

13.評價下面的代碼片斷:

unsignedintzero=0;

unsignedintcompzero=0xFFFF;

/*1scomplementofzero*/

14.盡管不像非嵌入式計算機那么常見,嵌入式系統(tǒng)還是有從堆(heap)中動態(tài)安排內(nèi)存的過程的。那么嵌入式系統(tǒng)中,動態(tài)安排內(nèi)存可能發(fā)生的問題是什么?

主要有三種類型:內(nèi)存泄露、內(nèi)存碎片和內(nèi)存崩潰內(nèi)存崩潰是內(nèi)存使用最嚴峻的結(jié)果,主要緣由有數(shù)組訪問越界、寫已經(jīng)釋放的內(nèi)存、指針計算錯誤、訪問堆棧地址越界等等。碎片收集的問題,變量的持行時間等等

下面的代碼片段的輸出是什么,為什么?

ifptr=char*malloc0==NULL

putsGotanullpointer;

else

putsGotavalidpointer;

該代碼的輸出是“Gotavalidpointer”。

15.Typedef在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預處理器做類似的事。例如,思索一下下面的例子:

#definedPSstructs*

typedefstructs*tPS;

答案是:typedef更好。思索下面的例子:

dPSp1,p2;

tPSp3,p4;

第一個擴展為

structs*p1,p2;

上面的代碼定義p1為一個指向構造的指,p2為一個實際的構造,這或許不是你想要的。其次個例子正確地定義了p3和p4兩個指針。

16.C語言同意一些令人震動的構造,下面的構造是合法的嗎,假如是它做些什么?

inta=5,b=7,c;

c=a+++b;

上面的代碼被處理成:

c=a+++b;

因此,這段代碼持行后a=6,b=7,c=12。

17.找錯題

試題1:

voidtest1

charstring[10];

char*str1=0123456789;

strcpystring,str1;

試題2:

voidtest2

charstring[10],str1[10];

inti;

fori=0;i10;i++

str1[i]=a;

strcpystring,str1;

試題3:

voidtest3char*str1

charstring[10];

ifstrlenstr1=10

strcpystring,str1;

解答:

試題1字符串str1需要11個字節(jié)才能存放下(包括末尾的?\0?),而string只有10個字節(jié)的空間,strcpy會導致數(shù)組越界;

對試題2,假如面試者指出字符數(shù)組str1不能在數(shù)組內(nèi)完畢可以給3分;假如面試者指出strcpystring,str1調(diào)用使得從str1內(nèi)存起復制到string內(nèi)存起所復制的字節(jié)數(shù)具有不確定性可以給7分,在此根底上指出庫函數(shù)strcpy工作方式的給10分;

對試題3,ifstrlenstr1=10應改為ifstrlenstr110,由于strlen的結(jié)果未統(tǒng)計?\0?所占用的1個字

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論