C語言筆試集含答案_第1頁
C語言筆試集含答案_第2頁
C語言筆試集含答案_第3頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

C語言筆試集(含答案)下面的題目必須全部答對(duì)才給分:1、 如何在c中初始化一個(gè)字符數(shù)組。2、 如何在C中為一個(gè)數(shù)組分配空間。3、 如何初始化一個(gè)指針數(shù)組。4、如何定義一個(gè)有10個(gè)元素的整數(shù)型指針數(shù)組。5、 s[10]的另外一種表達(dá)方式是什么。6、 版本中支持哪幾種編程語言。7、要使用CHAR_BIT需要包含哪個(gè)頭文件。8、 對(duì)(-)取整是多少?9、 如何讓局部變量具有全局生命期。10、 C中的常量字符串應(yīng)在何時(shí)定義?11、 如何在兩個(gè).c文件中引用對(duì)方的變量。12、 使用malloc之前需要做什么準(zhǔn)備工作。13、 realloc函數(shù)在使用上要注意什么問題。14、 strtok函數(shù)在使用上要注意什么問題。15、 gets函數(shù)在使用上要注意什么問題。16、 C語言的詞法分析在長度規(guī)則方面采用的是什么策略?17、 a+++++b所表示的是什么意思?有什么問題?18、如何定義Bool變量的TRUE和FALSE的值。19、C語言的const的含義是什么。在定義常量時(shí),為什么推薦使用const,而不是#define。20、C語言的volatile 的含義是什么。使用時(shí)會(huì)對(duì)編譯器有什么暗示。這部分是ANSIC的一些問題,題目的前提是必須都答

對(duì),看似很變態(tài),但是細(xì)想一下,這些都是最基礎(chǔ)的,雖 然我們?cè)谑褂盟麄兊臅r(shí)候會(huì)犯這樣那樣的錯(cuò)誤,但是最終 目的是不犯錯(cuò)誤,不是么,那么好,從最基礎(chǔ)的開始。1、 如何在C中初始化一個(gè)字符數(shù)組。這個(gè)問題看似很簡單,但是我們要將最簡單的問題用最嚴(yán)謹(jǐn)?shù)膽B(tài)度來對(duì)待。關(guān)鍵的地方:初始化、字符型、數(shù)組。最簡單的方法是chararray口;。這個(gè)問題看似解決了,但是在初始化上好像還欠缺點(diǎn)什么,個(gè)人認(rèn)為:chararray⑸二{'1','2',' 3','4',' 5'};或者chararray[5]={"12345" };或者chararray[2][10]={“China”,"Beijing"};也許更符合“初始化”的意思。2、 如何在C中為一個(gè)數(shù)組分配空間。最簡單的方法是:chararray[5]: 意思是分配給數(shù)組array一個(gè)5個(gè)字節(jié)的空間。但是我們要知道在C中數(shù)組其實(shí)就是一個(gè)名字,其實(shí)質(zhì)含義就是指針,比如chararray口;是到底分配的多少空間?所以我們要將其分成為兩種不同的形式給出答案:一種是棧的形式:chararray[5];一種是堆的形式:charAarray;array=(cha(*)malloc(5)://C++:array=newchar[5]:堆和棧的含義其實(shí)我也沒弄太透徹,改天明白了再發(fā)一篇。我們要明白的是,第一種形式空間分配的大小可能會(huì)受操作系統(tǒng)的限制,比如windows會(huì)限制在2M;第二種形式成空間分配很靈活,想分配多少分配多少,只要 RAM夠大。3、如何初始化一個(gè)指針數(shù)組。首先明確一個(gè)概念,就是指向數(shù)組的指針,和存放指針的數(shù)組。指向數(shù)組的指針:char(*array)[5]; 含義是一個(gè)指向存放5個(gè)字符的數(shù)組的指針。存放指針的數(shù)組:char*array[5]: 含義是一個(gè)數(shù)組中存放了5個(gè)指向字符型數(shù)據(jù)的指針。按照題意,我理解為初始化一個(gè)存放指針的數(shù)組,char*array[2]={"China ”,"Beijing" };其含義是初始化了一個(gè)有兩個(gè)指向字符型數(shù)據(jù)的指針的數(shù)組,這兩個(gè)指針分別指向字符串”China”和”Beijing”。4、如何定義一個(gè)有10個(gè)元素的整數(shù)型指針數(shù)組。既然只是定義而不是初始化,那就很簡單且沒有爭議5、 s[10]的另外一種表達(dá)方式是什么。前面說過了,數(shù)組和指針其實(shí)是數(shù)據(jù)存在形態(tài)的兩種 表現(xiàn)形式,如果說對(duì)于數(shù)組S:],我們知道*s=s:O:,那么s:10]的另一種表達(dá)方式就是:*(s+10)o6、 版本中支持哪幾種編程語言。這個(gè)問題實(shí)在變態(tài),就像問你#。]:] or的作用是什么一樣。不可否認(rèn),gcc是linux下一個(gè)亮點(diǎn),是一個(gè)備受無數(shù)程序員推崇的編譯器,其優(yōu)點(diǎn)省略 1000字,有興趣可以自己查,我翻了翻書,書上曰:支持 C,C++,Java,0bj-C,Ada,Fortran,Pasca1,Modula-3 等語言,這個(gè)“等"比較要命,不過我認(rèn)為已經(jīng)很全了,如果認(rèn)為還是不全,干脆把ASM也加上算了,不過那已經(jīng)不算是編譯了。7、要使用CHAR_BIT需要包含哪個(gè)頭文件。如果結(jié)合上面的問題,答題的人估計(jì)會(huì)認(rèn)為自己撞鬼了,這個(gè)問題實(shí)在是 搜索了一下,應(yīng)該是。&對(duì)(-)取整是多少?其實(shí)不同的取整函數(shù)可能有不同的結(jié)果,不過這個(gè)數(shù)沒有太大的爭議,答案是-1。9、如何讓局部變量具有全局生命期。具體的生命期的概念我覺得我還要好好深入的學(xué)習(xí)一下,但是這個(gè)題目還算比較簡單,即用 static修飾就可以了,但是只是生命期延長,范圍并沒有擴(kuò)大,除非把這個(gè) 變量定義在函數(shù)體外的靜態(tài)區(qū),不過那樣就變成全局變量 了,仿佛不符合題目要求。10、C中的常量字符串應(yīng)在何時(shí)定義?這個(gè)問題說實(shí)話不是很理解題干的意思,據(jù)我理解,有兩種情況,一種是預(yù)處理階段,用#(A彳ine定義;還有就是使用const修飾詞,不過const修飾的是一個(gè)變量,其含義是“只讀”,稱之為常量并不準(zhǔn)確,但是確實(shí)可以用操作變量的方法當(dāng)常量用。所以還是第一種比較靠譜。11、 如何在兩個(gè).c文件中引用對(duì)方的變量。這個(gè)問題也問的挺含糊的,怎么說呢,最簡單最直接的方法是為變 量添加extern修飾詞,當(dāng)然,這個(gè)變量必須是全局變量。還有一種就是利用函數(shù)調(diào)用來進(jìn)行變量的間接引用,比如這個(gè)C文件中的一個(gè)函數(shù)引用另外一個(gè)C中的函數(shù),將變量通過實(shí)參的形式傳遞過去。不過題目既然說是引用,那么還是用第一個(gè)答案好了。12、 使用malloc之前需要做什么準(zhǔn)備工作。其實(shí)準(zhǔn)備工作很多啊,比如你需要一臺(tái)計(jì)算機(jī)之類的。玩笑話,我們首先要知道m(xù)alloc的用途,簡單的說就是動(dòng)態(tài)的分配一段空間,返回這段空間的頭指針。實(shí)際的準(zhǔn)備 工作可以這么分:需要這段空間的指針是否存在,若不存在,則定義一個(gè)指針用來被賦值,還要清楚要返回一個(gè)什么類型的指針,分配的空間是否合理;如果指針已經(jīng)存在,那么在重新將新的空間頭地址賦值給這個(gè)指針之前,要先 判斷指針是否為NULL,如果不是要free—下,否則原來的空間就會(huì)被浪費(fèi),或者出錯(cuò),free之后就按照前一種情形考慮就可以了。13、realloc 函數(shù)在使用上要注意什么問題。這個(gè)函數(shù)我也才知道的,汗一個(gè)。據(jù)我的初步理解,這個(gè)函數(shù)的作用是重新分配空間大小,返回的頭指針不變,只是改變空間大小。既然是改變,就有變大、變小和為什 么改變的問題。變大,要注意不能大到內(nèi)存溢出;變小,那 變小的那部分空間會(huì)被征用,原有數(shù)據(jù)不再存在;為什么改變,如果是想重新挪作他用,還是先free7吧。14、 strtok函數(shù)在使用上要注意什么問題。這個(gè)問題我不知道能不能回答全面,因?yàn)閷?shí)在是用的很少。這個(gè)函數(shù)的作用是分割字符串,但是要分割的字符 串不能是常量,這是要注意的。比如先定義一個(gè)字符串: chararray□二"partl,par,strtok 的原形是char*strtok(char*string,char*delim);, 我們將",”作為分隔符,先用pt=strtok(array,””,得到的結(jié)果print出來就是",那后面的呢,要寫成pt二strtok(NULL,”,”);,注意,要用NULL,如果被分割的字符串會(huì)被分成N段,那從第二次開始就一直要用 NULLo總結(jié)起來,需要注意的是:被分割的字符串和分隔符都要使用變量;除第一次使用指向字符串的指針外,之后的都要使用NULL;注意使用這個(gè)函數(shù)的時(shí)候千萬別把指針跟丟了,不然就全亂了。15、 gets函數(shù)在使用上要注意什么問題。這是一個(gè)鍵盤輸入函數(shù),將輸入字符串的頭地址返回。說到要注意的問題,我還是先查了一下網(wǎng)上的一些情況, 需要注意的就是gets以輸入回車結(jié)束,這個(gè)地球人都知道,但是很多人不知道的是,當(dāng)你輸入完一個(gè)字符串后, 這個(gè)字符串可能依然存在于這個(gè)標(biāo)準(zhǔn)輸入流之中,當(dāng)再次使用gets的時(shí)候,也許會(huì)把上次輸入的東西讀出來,所以應(yīng)該在使用之后用fflush(stdin);處理一下,將輸入流清空。最后也還是要注意溢出的問題。關(guān)于這個(gè)答案我比較含糊,不知道有沒有高人高見?16、 C語言的詞法分析在長度規(guī)則方面采用的是什么策略?我無語……聞所未聞啊……還是搜索了一下,有一篇文章,地址是:https:///jp2017/20/kcwz/wlkc/wlkc/O3/3_5_,是關(guān)于詞法分析器的。其中提到了兩點(diǎn)策略:(1)按最長匹配原則確定被選的詞型; (2)如果一個(gè)字符串能為若干個(gè)詞型匹配,則排列在最前面的詞型被選中。不知 道是不是題干的要求,還是其他什么。我乃一介草民,望 達(dá)人指點(diǎn)迷津!17、 a+++++b所表示的是什么意思?有什么問題這個(gè)東西(稱之為東西一點(diǎn)都不過分)其實(shí)并沒有語法錯(cuò)誤,按照C對(duì)運(yùn)算符等級(jí)的劃分,++的優(yōu)先級(jí)大于+,那么這句話會(huì)被編譯器看做:(a++)+(++b),這回明白了吧。有什么問題,語法上沒有問題,有的是道德上的問題 !作為一個(gè)優(yōu)秀的程序員,我們要力求語句的合法性和可讀性, 如果寫這句的人是在一個(gè)team里,那么他基本會(huì)被打的半死……最后討論一下結(jié)果:假設(shè) a之前的值是3,b是4,那么運(yùn)行完這個(gè)變態(tài)語句后,a的值是4,b是5,語句的結(jié)果是8o18、 如何定義Bool變量的TRUE和FALSE的值。不知道這個(gè)題有什么陷阱,寫到現(xiàn)在神經(jīng)已經(jīng)大了,一般來說先要把TURE和FALSE給定義了,使用ttdefine就可以:#defineTURE1ttdefineFALSEO如果有一個(gè)變量需要定義成boo1型的,舉個(gè)例子:boola=TURE;就可以了。19、 C語言的const的含義是什么。在定義常量時(shí),為什么推薦使用const,而不是#define。首先,這個(gè)題干抽了10題回答的一個(gè)大嘴巴。關(guān)于常量的概念看來我要好好看看書了……我說過了,const修飾詞可以將一個(gè)變量修飾為“只讀”,這個(gè)就能稱為常量么?

姑且認(rèn)為可以?;氐筋}目中,const是只讀的意思,它限定一個(gè)變量不允許被改變,誰都不能改!既然是修飾變量,那么變量的類型就可以豐富多彩, int啊,char啊,只要C認(rèn)識(shí)的都可以;但是#define就不可以了,在預(yù)處理階段缺乏類型檢測(cè)機(jī)制,有可能會(huì)出錯(cuò)。還有就是變量可以 extern,但是#define就不可以。貌似const還可以節(jié)省RAM,這個(gè)我倒是沒有考證過。至于const的用法和作用,有很多,我會(huì)總結(jié)后發(fā)上來。20、C語言的volatile的含義是什么。使用時(shí)會(huì)對(duì)編譯器有什么暗示。終于最后一題了,容易么 如果這個(gè)測(cè)試是一個(gè)關(guān)于嵌入式的,那么這道題非常重要??!從詞面上講, volatile的意思是易變的,也就是說,在程序運(yùn)行過程中,有一些變量可能會(huì)被莫名其妙的改變,而優(yōu)化器為了節(jié)約 時(shí)間,有時(shí)候不會(huì)重讀這個(gè)變量的真實(shí)值,而是去讀在寄 存器的備份,這樣的話,這個(gè)變量的真實(shí)值反而被優(yōu)化器 給“優(yōu)化”掉了,用時(shí)髦的詞說就是被“和諧”了。如果使用了這個(gè)修飾詞,就是通知編譯器別犯懶,老老實(shí)實(shí)去重新讀一遍!可能我說的太“通俗”了,那么我引用一下“大師”的標(biāo)準(zhǔn)解釋:volatile的本意是“易變的”。由于訪問寄存器的速度要快過RAM由于訪問寄存器的速度要快過RAM,所以編譯器一般都會(huì)作減少存取外部RAM的優(yōu)化,但有可能會(huì)讀臟數(shù)據(jù)。當(dāng)要求使用volatile聲明的變量的值的時(shí)候,系統(tǒng)總是重新從它所在的內(nèi)存讀取數(shù)據(jù),即使

溫馨提示

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

評(píng)論

0/150

提交評(píng)論