C語言筆試系列題目收集(通用9篇)_第1頁
C語言筆試系列題目收集(通用9篇)_第2頁
C語言筆試系列題目收集(通用9篇)_第3頁
C語言筆試系列題目收集(通用9篇)_第4頁
C語言筆試系列題目收集(通用9篇)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第40頁共40頁C語言筆試系列題目搜集〔通用9篇〕篇1:C語言筆試系列題目搜集C語言筆試系列題目搜集分享1.以下區(qū)域存取速度最快的是(c)A.FlashB.DRAMC.CACHED.磁盤2.哪些區(qū)域不能用來存儲變量空間A.SDRAMB.CACHE(一、二級緩存)C.DDR2D.L2SRAMDATA3.CPU中數(shù)據(jù)總線的寬度會影響(d)A.內(nèi)存容量大小B.系統(tǒng)運算速度C.指令系統(tǒng)指令數(shù)量D.存放器寬度4.不能進(jìn)步代碼執(zhí)行效率的`是(cd)A.多循環(huán)減少內(nèi)循環(huán)的次數(shù)B.將頻繁調(diào)用的小函數(shù)改為內(nèi)聯(lián)函數(shù)C.使用遞歸函數(shù)D.進(jìn)步并行性E.減少存儲器引用5.中斷響應(yīng)時間是指(d)A.從中斷處理開場,到中斷處理完畢的時間B.從中斷懇求開場,到中斷處理完畢的時間C.從中斷懇求開場,到中斷處理開場的時間D.從發(fā)出中斷懇求到進(jìn)入中斷處理所用的時間1.填寫下面程序輸出#includemain{inta[5]={1,2,3,4,5};int*ptr=(int*)(&a+1);注意printf(“%d%d”,*(a+1),*(ptr-1));}輸出是____25_________;2.填寫下面程序輸出#includemain{charp;charbuf[10]={1,2,3,4,5,6,9,8};p=(buf+1)[5];printf(“%d”,p);}輸出是_____9________;3.以下變量和函數(shù)存儲在ELF可重定位目的的哪些段總,請在注釋中寫上段名,intvalid;//__________intlast=-1;//__________inttophat(intsize,doublebrim_width);//__________printf(“How'syourexamgoing?n”);//__________(此題記憶不完好!)1.寫分配空間的程序void*getmm(intsize,intalign),分配size大小的空間,并根據(jù)align指定的字節(jié)數(shù)方式對齊。2.完成統(tǒng)計灰度圖像直方圖的函數(shù)voidgetHist(unsignedchar*img,hist[],intwidth,inthEight,intstrip);其中,img為圖像首地址,strip為每行首地址間隔下一行首地址的偏移量。圖像元素值為0-255,hist[]返回圖像直方圖。inti,j;//直方圖數(shù)組清0for(i=0;i篇2:C語言筆試題目及答案一、選擇題((1)~(10)每題2分,(11)~(50)每題1分,共60分)以下各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。(1)算法的空間復(fù)雜度是指________。A)算法程序的長度B)算法程序中的指令條數(shù)C)算法程序所占的存儲空間D)算法執(zhí)行過程中所需要的存儲空間答案:D評析:一個算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。(2)以下關(guān)于棧的表達(dá)中正確的選項是________。A)在棧中只能插入數(shù)據(jù)B)在棧中只能刪除數(shù)據(jù)C)棧是先進(jìn)先出的線性表D)棧是先進(jìn)后出的線性表答案:D評析:棧是限定在一端進(jìn)展插入與刪除的線性表。棧是按照“先進(jìn)后出”的或“后進(jìn)先出”的原那么組織數(shù)據(jù)的,因此,棧也被稱為“先進(jìn)后出”表或“后進(jìn)先出”表。(3)在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為________。A)32B)31C)16D)15答案:C評析:所謂滿二叉樹是指除最后一層外,每層上的所有結(jié)點都有兩個子結(jié)點。也就是說,在滿二叉樹中,每一層上的結(jié)點數(shù)都到達(dá)最大值,即在滿二叉樹的第K層上有2K-1個結(jié)點,且深度為m的滿二叉樹有2m個結(jié)點。在滿二叉樹中,最后一層的結(jié)點個數(shù)就是葉子結(jié)點的個數(shù),此題中深度為5,故葉子結(jié)點數(shù)為25-1=24=16。(4)對建立良好的程序設(shè)計風(fēng)格,下面描繪正確的選項是________。A)程序應(yīng)簡單、明晰、可讀性好B)符號名的命名要符合語法C)充分考慮程序的執(zhí)行效率D)程序的注釋可有可無答案:A評析:要形成良好的程序設(shè)計風(fēng)格,主要應(yīng)注重和考慮下述一些因素:符號名的命名應(yīng)具有一定的實際含義,以便于對程序功能的理解;正確的注釋可以幫助讀者理解程序;程序編寫應(yīng)優(yōu)先考慮明晰性,除非對效率有特殊要求,程序編寫要做到明晰第一,效率第二。(5)下面對對象概念描繪錯誤的選項是________。A)任何對象都必須有繼承性B)對象是屬性和方法的封裝體C)對象間的通訊靠消息傳遞D)操作是對象的動態(tài)性屬性答案:A評析:對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接的對應(yīng)關(guān)系。對象之間通過傳遞消息互相聯(lián)絡(luò),以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)絡(luò)。(6)下面不屬于軟件工程的3個要素的是________。A)512具B)過程C)方法D)環(huán)境答案:D評析:軟件工程包括3個要素,即方法、工具和過程。(7)程序流程圖(PFD)中的箭頭代表的是________。A)數(shù)據(jù)流B)控制流C)調(diào)用關(guān)系D)組成關(guān)系答案:B評析:程序流程圖(PFD)是一種傳統(tǒng)的、應(yīng)用廣泛的軟件過程設(shè)計表示工具,通常也稱為程序框圖,其箭頭代表的是控制流。(8)在數(shù)據(jù)管理技術(shù)的開展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是________。A)數(shù)據(jù)庫系統(tǒng)B)文件系統(tǒng)C)人工管理D)數(shù)據(jù)項管理答案:A評析:在數(shù)據(jù)管理技術(shù)的開展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)。(9)用樹形構(gòu)造來表示實體之間聯(lián)絡(luò)的模型稱為________。A)關(guān)系模型B)層次模型C)網(wǎng)狀模型D)數(shù)據(jù)模型答案:B評析:層次模型是最早開展出來的數(shù)據(jù)庫模型。它的根本構(gòu)造是樹形構(gòu)造,這種構(gòu)造方式在現(xiàn)實世界中很普遍,如家族構(gòu)造、行政組織機構(gòu),它們自頂向下、層次清楚。(10)關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算包括________。A)排序、索引、統(tǒng)計B)選擇、投影、連接C)關(guān)聯(lián)、更新、排序D)顯示、打印、制表答案:B評析:關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算,包括選擇運算、投影運算、連接運算。(11)以下語句中符合C語言語法的賦值語句是________。A)aC7+b+cCa+7B)a=a+7C)a=7+b,b++,a+7;D)a=7+b,c=a十7;答案:D評析:由于賦值語句是由賦值表達(dá)式加分號構(gòu)成,所以選項A、B均不是合法的賦值語句;選項c中,存在兩種運算符:逗號運算符和賦值運算符,其中賦值運算符的優(yōu)先級高,選項c也不是。篇3:c語言筆試題目及答案C語言是一門通用計算機編程語言,應(yīng)用廣泛。C語言的設(shè)計目的是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。下面是c語言筆試題目及答案,請參考。c語言筆試題目及答案一、選擇題((1)~(10)每題2分,(11)~(50)每題1分,共60分)以下各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。(1)數(shù)據(jù)的存儲構(gòu)造是指________。A)存儲在外存中的數(shù)據(jù)B)數(shù)據(jù)所占的存儲空間量C)數(shù)據(jù)在計算機中的順序存儲方式D)數(shù)據(jù)的邏輯構(gòu)造在計算機中的表示答案:D評析:數(shù)據(jù)的邏輯構(gòu)造在計算機存儲空間中的存放形式形式稱為數(shù)據(jù)的存儲構(gòu)造(也稱數(shù)據(jù)的物理構(gòu)造)。(2)以下關(guān)于棧的描繪中錯誤的選項是________。A)棧是先進(jìn)后出的線性表B)棧只能順序存儲C)棧具有記憶作用D)對棧的插入與刪除操作中,不需要改變棧底指針答案:B評析:棧是一種特殊的線性表,又稱先進(jìn)后出表(FILO―FirstInLastOut)。(3)對于長度為n的線性表,在最壞情況下,以下各排序法所對應(yīng)的比擬次數(shù)中正確的選項是________。A)冒泡排序為n2B)冒泡排序為nC)快速排序為nD)快速排序為n(n一1)/2答案:D評析:假設(shè)線性表的長度為n,那么在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后掃描和n/2遍的從后往前掃描,需要比擬次數(shù)為n(n-1)/2。快速排序法的最壞情況比擬次數(shù)也是n(n-1)/2。(4)對長度為n的線性表進(jìn)展順序查找,在最壞情況下所需要的比擬次數(shù)為________。A)log2nB)n/2C)nD)n+l答案:C評析:順序查找過程中,假如被查找的元素是線性表中的最后一個元素,或者元素不在線性表中,那么需要與線性表中所有的元素進(jìn)展比擬。對長度為n的線性表進(jìn)展順序查找,在最壞情況下需要比擬n次。(5)以下對于線性鏈表的描繪中正確的選項是________。A)存儲空間不一定是連續(xù),且各元素的存儲順序是任意的B)存儲空間不一定是連續(xù),且前件元素一定存儲在后件元素的前面C)存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面D)存儲空間必須連續(xù),且各元素的存儲順序是任意的答案:A評析:在鏈?zhǔn)酱鎯?gòu)造中,存儲數(shù)據(jù)構(gòu)造的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。(6)以下對于軟件測試的描繪中正確的選項是________。A)軟件測試的目的是證明程序是否正確B)軟件測試的目的是使程序運行結(jié)果正確C)軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤D)軟件測試的目的是使程序符合構(gòu)造化原那么答案:C評析:關(guān)于軟件測試的目的,GrenfordJ.Myers再《TheArtofSoftwareTesting》一書中給出了深入的闡述,整體來說,軟件測試的目的就是盡可能多地發(fā)現(xiàn)程序中的錯誤。(7)為了使模塊盡可能獨立,要求________。A)模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強B)模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱C)模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱D)模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強答案:B評析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)絡(luò)最少且接口簡單。軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,有利于進(jìn)步模塊的獨立性。(8)以下描繪中正確的選項是________。A)程序就是軟件B)軟件開發(fā)不受計算機系統(tǒng)的限制C)軟件既是邏輯實體,又是物理實體D)軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合答案:D評析:計算機軟件是計算機系統(tǒng)中與硬件互相依存的另一部分,是包括程序、數(shù)據(jù)及相關(guān)文檔的完好集合。(9)數(shù)據(jù)獨立性是數(shù)據(jù)庫技術(shù)的重要特點之一,所謂數(shù)據(jù)獨立性是指________。A)數(shù)據(jù)與程序獨立存放B)不同的數(shù)據(jù)被存放在不同的文件中C)不同的數(shù)據(jù)只能被對應(yīng)的應(yīng)用程序所使用D)以上三種說法都不對答案:D評析:數(shù)據(jù)獨立性是數(shù)據(jù)與程序間的互不依賴性,即數(shù)據(jù)庫中數(shù)據(jù)獨立于應(yīng)用程序而不依賴于應(yīng)用程序。也就是說,數(shù)據(jù)的邏輯構(gòu)造、存儲構(gòu)造與存取方式的改變不會影響應(yīng)用程序。選項A、B、C三種說法都是錯誤的。(10)用樹形構(gòu)造表示實體之間聯(lián)絡(luò)的模型是________。A)關(guān)系模型B)網(wǎng)狀模型C)層次模型D)以上三個都是答案:C評析:層次模型是最早開展起來的數(shù)據(jù)庫模型,它的根本構(gòu)造是樹形構(gòu)造。(11)算法具有五個特性,以下選項中不屬于算法特性的是________。A)有窮性B)簡潔性C)可行性D)確定性答案:B評析:有窮性、確定性、有零個或多個輸入、有一個或多個輸出、有效性是算法的根本特性。(12)以下選項中可作為C語言合法常量的是________。A)-80.B)-080C)-8e1.0D)-80.0e答案:A評析:c語言的常量分為整型常量、實型常量和字符型常量。選項A屬于實型常量中的十進(jìn)制小數(shù)形式的表示法,是合法的。(13)以下表達(dá)中正確的選項是________。A)用C程序?qū)崿F(xiàn)的算法必需要有輸入和輸出操作B)用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必需要輸入C)用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必需要有輸出D)用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出答案:C評析:算法的特性中包括“有零個或多個輸入”及“有一個或多個輸出”這兩個特性。一個算法得到的結(jié)果就是算法的輸出,沒有輸出的算法是沒有意義的,所以一個算法必須至少有一個輸出。(14)以下不能定義為用戶標(biāo)識符的是________。A)MainB)_0C)_intD)sizeof答案:D評析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。注意:大寫字母和小寫字母被認(rèn)為是兩個不同的字符。A中Main與主i函數(shù)名main不同。(15)以下選項中不能作為合法常量的是________。A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0答案:B評析:指數(shù)形式的實型常量要求字每e(或E)之前必需有數(shù)字,且e后面的指數(shù)必須為整數(shù),所以此題中選項B非法。(16)數(shù)字字符0的ASCII值為48,假設(shè)有以下程序main{chara=”1″,b=”2″;printf(“%c,”,b++);printf(“%d”,b-a);)程序運行后的輸出結(jié)果是________。A)3,2B)50,2C)2,2D)2,50答案:C評析l執(zhí)行語句“printf(“%c,ll,b++);”后,b的值變成字符3,執(zhí)行“printf(“%d”,b-a);”,即‘3’-‘1’。(17)有以下程序main(){intm=12,n=34;printf(“%d%d”,m++,++n);printf(“%d%d”,n++,++m);}程序運行后的輸出結(jié)果是________。A)12353514B)12353513C)12343514D)12343513答案:A評析:執(zhí)行“printf(“%d%d”m++,++n);”后,輸出的是m和n+l的值1235,接著執(zhí)行“printf(“%d%d\n”,n++,++m);”輸出n和m+l的值3514。(18)有定義語句:intb;charc[10】;,那么正確的輸入語句是________。A)scanf(“%d%s”,&b,&C);B)scanf(“%d%s”,&b,C);C)scanf(“%d%s”,b,C);D)scanf(“%d%s”,b,&C);答案:B評析:scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是地址,而不是變量名。對于變量,通過地址運算符“&”求出內(nèi)存中的地址;對于數(shù)組c[10],數(shù)組名c即為數(shù)組在內(nèi)存中的地址。(19)有以下程序main{intm,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%d\n”,m,n,p);}假設(shè)想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p中的值為789,那么正確的輸入是________。A)m。123n=456p=789B)m=123n=456p=789C)m=123,n=456,p=789D)123456789答案:A評析:根據(jù)此題的數(shù)據(jù)輸入形式“scanf(“m=%dn=%dp=%d”&m,&n,&p);”說明在輸入數(shù)據(jù)時,必須輸入“m=”、“n=”、“p=”字符,且中間不能含有空格。(20)有以下程序main{inta,b,d=25;a=d/10%9;b=a&&(-1);printf(”%d,%d\n”,a,b);}程序運行后的輸出結(jié)果是________。A)6,lB)2,lC)6,0D)2,0答案:B評析:此題中“a=d/10%9;”的值為25/10%9=2;“b=a&&(-1);”為2&&(-1)=1(注意:-1表示真,只有O才表示假),所以a,b的值分別為2,1。(21)有以下程序main{inti=1j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(“%d%d%d\n”,i,j,k);}程序運行后的輸出結(jié)果是________。A)l23B)234C)223.D)233答案:D評析:執(zhí)行“i++==1&&(++j==3‖k++==3)”時,表達(dá)式“i++==1”嗨值為真,其值為1,表達(dá)式“++j=3”的值為真,根據(jù)短路原理,右邊的表達(dá)式“k++==3”不再進(jìn)展運算。括號中表達(dá)的值為l,作與運算后整個表達(dá)式的值也為l,輸出i.j,k時,由于未執(zhí)行過k,所以它們的值分別為2,3,3。(22)假設(shè)整型變量a、b、c、d中的值依次為:1、4、3、2。那么條件表達(dá)式ay?x:y;}intf2(intx,inty){returnx>y?y:x;}main{inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=fl(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf(“%d,%d,%d\n”,e,f,g);)程序運行后的輸出結(jié)果是________。A)4,3,7B)3,4,7C)5,2,7D)2,5,7答案:A評析:函數(shù)n的功能是返回兩個數(shù)中比擬大的值,f2的功能是返回兩個數(shù)中比擬小的值。(27)已有定義:chara[]=”xyz”,b[]={’x’,’y’,’z};,以下表達(dá)中正確的選項是________。A)數(shù)組a和b的長度一樣B)a數(shù)組長度小于b數(shù)組長度C)a數(shù)組長度大于b數(shù)組長度D)上述說法都不對答案:C評析:c語言規(guī)定‘\0’為字符串完畢標(biāo)志。所以“chara[]=“xyz””的數(shù)組長度為4,而“b[]={‘x’,‘y’,‘z’};”的數(shù)組長度為3,數(shù)組長度與strlen函數(shù)所求的長度不同,此題是指數(shù)組占內(nèi)存空間的大小。(28)有以下程序Voidf(int*x,int*y){intt;t=*x;*x=*y;’*y=t;)main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p=n;iC)a[i+1]=a[i];}main{inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=O;i,那么輸出結(jié)果是________。A)產(chǎn)生錯誤信息B)l0C)l2D)l02O3020000O30答案:B評析:二維數(shù)組a,通過a[3][2]={0}將數(shù)組中的各個元素初始化為0,指針變量ptr,指向包含2個元素的一維數(shù)組。a[0][0]:l,a[1][0]=2,故此題的輸出選B。(33)有以下程序prt(int*m,intn){inti;for(i=O;i=8)break;if(a%2==1){a+=5;continue;}a-=3;)printf(“%d\n”,b);}程序運行后的輸出結(jié)果是________。A)3B)4C)5D)6答案:B評析:break和continue的區(qū)別是:continue語句只完畢本次循環(huán),而不是終止整個循環(huán)的執(zhí)行;而break語句那么是完畢整個循環(huán)過程,.不再判斷執(zhí)行的條件是否成立。(42)有以下程序main{chars[]=”l59″,*p;p=s;printf(“%c”,*p++);printf(“%c”,*p++);}程序運行后的輸出結(jié)果是________。A)15B)16C)12D)59答案:A評析:此題通過“p=s”將指針變量p指向字符數(shù)組s,在第一次輸出時,由于++和*為同一優(yōu)先級,“*p++”相于“+(p++)”。p指向s[1],輸出為s[1]的值。[c語言筆試題目及答案]篇4:C語言軟件開發(fā)筆試題目C語言軟件開發(fā)筆試題目(1)什么是預(yù)編譯,何時需要預(yù)編譯:答案:1、總是使用不經(jīng)常改動的大型代碼體。2、程序由多個模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和一樣的編譯選項。在這種情況下,可以將所有包含文件預(yù)編譯為一個預(yù)編譯頭。預(yù)編譯又稱為預(yù)處理,是做些代碼文本的交換工作。處理#開頭的指令嗎,比方拷貝#include包含的文件代碼,#define宏定義的交換,條件編譯等,就是為編譯做的預(yù)備工作的階段,主要處理#開場的預(yù)編譯指令,預(yù)編譯指令指示了在程序正式編譯前就由編譯器進(jìn)展的.操作,可以放在程序中的任何位置。c編譯系統(tǒng)在對程序進(jìn)展通常的編譯之前,先進(jìn)展預(yù)處理。c提供的預(yù)處理功能主要有以下三種:1)宏定義2)文件包含3)條件編譯。(2)char*constp,charconst*p,constchar*p上述三個有什么區(qū)別?答案:char*constp;//常量指針,p的值不可以修改charconst*p;//指向常量的指針,指向的常量值不可以改constchar*p;//和charconst*p等價(3)charstr1[]=“abc”;charstr2[]=“abc”;constcharstr3[]=“abc”;constcharstr4[]=“abc”;constchar*str5=“abc”;constchar*str6=“abc”;char*str7=“abc”;char*str8=“abc”;cout篇5:C/C筆試題目1.編寫my_strcpy函數(shù),實現(xiàn)與庫函數(shù)strcpy類似的功能,不能使用任何庫函數(shù);答:char*strcpy(char*strDest,constchar*strSrc){if(strDest==NULL||strSrc==NULL)returnNULL;if(strDest==strSrc)returnstrDest;char*tempptr=strDest;while((*strDest++=*strSrc++)!=‘’);returntempptr;}答:防止該頭文件被重復(fù)引用。3.#include與#include“file.h”的區(qū)別?答:前者編譯器從標(biāo)準(zhǔn)庫途徑開場搜索file.h,而后者編譯器從用戶的工作途徑開場搜索file.h。4.在C++程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern“C”?答:extern是C/C++語言中說明函數(shù)和全局變量作用范圍(可見性)的關(guān)鍵字,其聲明的函數(shù)和變量可以在本模塊或其它模塊中使用。通常,在模塊的頭文件中對本模塊提供應(yīng)其它模塊引用的函數(shù)和全局變量以關(guān)鍵字extern聲明。5.面向?qū)ο蟮娜齻€根本特征,并簡單表達(dá)之?答:1)封裝:將客觀事物抽象成類,每個類對自身的數(shù)據(jù)和方法實行protection(private,protected,public)2)繼承:實現(xiàn)繼承(指使用基類的屬性和方法而無需額外編碼的才能)、可視繼承(子窗體使用父窗體的外觀和實現(xiàn)代碼)、接口繼承(僅使用屬性和方法,實現(xiàn)滯后到子類實現(xiàn))。3)多態(tài):允許將子類類型的指針賦值給父類類型的指針。篇6:C/C筆試題目1.變量的聲明和定義有什么區(qū)別?答:聲明變量不分配空間,定義變量要分配空間。聲明主要是告訴編譯器,后面的引用都按聲明的格式。定義其實包含了聲明的意思,同時要分配內(nèi)存空間。2.解釋堆和棧的區(qū)別。答:堆(heap)——一般由程序員分配釋放,假設(shè)程序員不釋放,程序完畢時可能由OS回收。注意它與數(shù)據(jù)構(gòu)造中的堆是兩回事,分配方式倒是類似于鏈表。速度比擬慢,而且容易產(chǎn)生內(nèi)存碎片,不過用起來最方便。棧(stack)——由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,部分變量的值等。其操作方式類似于數(shù)據(jù)構(gòu)造中的棧。由系統(tǒng)自動分配,速度較快。但程序員是無法控制的。3.const的作用是什么?答:(1)可以定義const常量(2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強迫保護(hù),可以預(yù)防意外的變動,能進(jìn)步程序的強健性。4.以下哪兩個是等同的intb;Aconstint*a=&b;//指向常量的指針,不能通過指針改變b,但指針的地址可以改變。Bconst*inta=&b;//指針的地址不可以改變,但可以通過指針改變b的值Cconstint*consta=&b;//指針指向的值,和指針本身的地址都不能改變Dintconst*consta=&b;//與c一樣5.完成程序,實現(xiàn)對數(shù)組的降序排序#includevoidsort(intarray);intmain{intarray={45,56,76,234,1,34,23,2,3};//數(shù)字任//意給出sort(array);return0;}voidsort(intarray){____________________________________inti,j,k;for(i=1;iarray[i-1]){k=ARRAY[i];j=i-1;do{array[j+1]=array[j];j–;}while(k>array[j]&&j>=0);array[j+1]=k;}}—————————————————–}6.inti=(j=4,k=8,l=16,m=32);printf(“%d”,i);輸出是多少?答:相當(dāng)于i=j=4;i=k=8;i=l=16;i=m=32;故最后i=32;篇7:C/C筆試題目1.重載(overload)和重寫(overried,有的書也叫做“覆蓋”)的區(qū)別?答:從定義上來說:重載:是指允許存在多個同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。重寫:是指子類重新定義復(fù)類虛函數(shù)的方法。從實現(xiàn)原理上來說:重載:編譯器根據(jù)函數(shù)不同的參數(shù)表,對同名函數(shù)的名稱做修飾,然后這些同名函數(shù)就成了不同的函數(shù)。重寫:當(dāng)子類重新定義了父類的虛函數(shù)后,父類指針根據(jù)賦給它的不同的子類指針,動態(tài)的調(diào)用屬于子類的該函數(shù),這樣的函數(shù)調(diào)用在編譯期間是無法確定的(調(diào)用的子類的虛函數(shù)的地址無法給出)。2.多態(tài)的作用?答:主要是兩個:1)隱藏實現(xiàn)細(xì)節(jié),使得代碼可以模塊化;擴展代碼模塊,實現(xiàn)代碼重用;2)接口重用,為了類在繼承和派生的時候,保證使用家族中任一類的實例的某一屬性時的正確調(diào)用。3.分別寫出BOOL,int,float,指針類型的變量a與“零”的比擬語句。答:BOOL:if(!a)orif(a)int:if(a==0)float:constEXPRESSIONEXP=0.000001if(a-EXP)pointer:if(a!=NULL)orif(a==NULL)4.請說出const與#define相比,有何優(yōu)點?答案:1)const常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進(jìn)展類型平安檢查。而對后者只進(jìn)展字符交換,沒有類型平安檢查,并且在字符交換可能會產(chǎn)生意料不到的錯誤。2)有些集成化的調(diào)試工具可以對const常量進(jìn)展調(diào)試,但是不能對宏常量進(jìn)展調(diào)試。5.簡述數(shù)組與指針的區(qū)別?數(shù)組要么在靜態(tài)存儲區(qū)被創(chuàng)立(如全局?jǐn)?shù)組),要么在棧上被創(chuàng)立。指針可以隨時指向任意類型的內(nèi)存塊。(1)修改內(nèi)容上的差異chara=“hello”;a[0]=‘X’;char*p=“world”;//注意p指向常量字符串p[0]=‘X’;//編譯器不能發(fā)現(xiàn)該錯誤,運行時錯誤(2)用運算符sizeof可以計算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p為指針得到的是一個指針變量的字節(jié)數(shù),而不是p所指的內(nèi)存容量。C++/C語言沒有方法知道指針?biāo)傅膬?nèi)存容量,除非在申請內(nèi)存時記住它。注意當(dāng)數(shù)組作為函數(shù)的參數(shù)進(jìn)展傳遞時,該數(shù)組自動退化為同類型的指針。chara=“helloworld”;char*p=a;cout篇8:C筆試題目1.求下面函數(shù)的返回值(微軟)intfunc(x){intcountx=0;while(x){countx++;x=x&(x-1);}returncountx;}假定x=9999。答案:8思路:將x轉(zhuǎn)化為2進(jìn)制,看含有的1的個數(shù)。2.什么是“引用”?申明和使用“引用”要注意哪些問題?答:引用就是某個目的變量的“別名”(alias),對應(yīng)用的操作與對變量直接操作效果完全一樣。申明一個引用的時候,切記要對其進(jìn)展初始化。引用聲明完畢后,相當(dāng)于目的變量名有兩個名稱,即該目的原名稱和引用名,不能再把該引用名作為其他變量名的別名。聲明一個引用,不是新定義了一個變量,它只表示該引用名是目的變量名的一個別名,它本身不是一種數(shù)據(jù)類型,因此引用本身不占存儲單元,系統(tǒng)也不給引用分配存儲單元。不能建立數(shù)組的引用。3.將“引用”作為函數(shù)參數(shù)有哪些特點?(1)傳遞引用給函數(shù)與傳遞指針的效果是一樣的。這時,被調(diào)函數(shù)的形參就成為原來主調(diào)函數(shù)中的實參變量或?qū)ο蟮囊粋€別名來使用,所以在被調(diào)函數(shù)中對形參變量的操作就是對其相應(yīng)的目的對象(在主調(diào)函數(shù)中)的操作。(2)使用引用傳遞函數(shù)的參數(shù),在內(nèi)存中并沒有產(chǎn)生實參的副本,它是直接對實參操作;而使用一般變量傳遞函數(shù)的參數(shù),當(dāng)發(fā)生函數(shù)調(diào)用時,需要給形參分配存儲單元,形參變量是實參變量的副本;假如傳遞的是對象,還將調(diào)用拷貝構(gòu)造函數(shù)。因此,當(dāng)參數(shù)傳遞的數(shù)據(jù)較大時,用引用比用一般變量傳遞參數(shù)的效率和所占空間都好。(3)使用指針作為函數(shù)的參數(shù)雖然也能到達(dá)與使用引用的效果,但是,在被調(diào)函數(shù)中同樣要給形參分配存儲單元,且需要重復(fù)使用“*指針變量名”的形式進(jìn)展運算,這很容易產(chǎn)生錯誤且程序的閱讀性較差;另一方面,在主調(diào)函數(shù)的調(diào)用點處,必須用變量的地址作為實參。而引用更容易使用,更明晰。4.在什么時候需要使用“常引用”?假如既要利用引用進(jìn)步程序的效率,又要保護(hù)傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變,就應(yīng)使用常引用。常引用聲明方式:const類型標(biāo)識符&引用名=目的變量名;例1inta;constint&ra=a;ra=1;//錯誤a=1;//正確例2stringfoo();voidbar(string&s)//那么下面的表達(dá)式將是非法的:bar(foo());bar(“helloworld”);原因在于foo()和“helloworld”串都會產(chǎn)生一個臨時對象,而在C++中,這些臨時對象都是const類型的。因此上面的表達(dá)式就是試圖將一個const類型的對象轉(zhuǎn)換為非const類型,這是非法的。引用型參數(shù)應(yīng)該在能被定義為const的情況下,盡量定義為const。5.將“引用”作為函數(shù)返回值類型的格式、好處和需要遵守的規(guī)那么?格式:類型標(biāo)識符&函數(shù)名(形參列表及類型說明){//函數(shù)體}好處:在內(nèi)存中不產(chǎn)生被返回值的副本;(注意:正是因為這點原因,所以返回一個部分變量的引用是不可取的。因為隨著該部分變量生存期的完畢,相應(yīng)的引用也會失效,產(chǎn)生runtimeerror!注意:(1)不能返回部分變量的引用。這條可以參照EffectiveC++[1]的Item31。主要原因是部分變量會在函數(shù)返回后被銷毀,因此被返回的引用就成為了“無所指”的引用,程序會進(jìn)入未知狀態(tài)。(2)不能返回函數(shù)內(nèi)部new分配的內(nèi)存的引用(這個要注意啦,很多人沒意識到,哈哈。。。)。這條可以參照EffectiveC++[1]的Item31。雖然不存在部分變量的被動銷毀問題,可對于這種情況(返回函數(shù)內(nèi)部new分配內(nèi)存的引用),又面臨其它為難場面。例如,被函數(shù)返回的引用只是作為一個臨時變量出現(xiàn),而沒有被賦予一個實際的變量,那么這個引用所指向的空間(由new分配)就無法釋放,造成memoryleak。(3)可以返回類成員的引用,但最好是const。這條原那么可以參照EffectiveC++[1]的Item30。主要原因是當(dāng)對象的屬性是與某種業(yè)務(wù)規(guī)那么(businessrule)相關(guān)聯(lián)的時候,其賦值常常與某些其它屬性或者對象的狀態(tài)有關(guān),因此有必要將賦值操作封裝在一個業(yè)務(wù)規(guī)那么當(dāng)中。假如其它對象可以獲得該屬性的非常量引用(或指針),那么對該屬性的單純賦值就會破壞業(yè)務(wù)規(guī)那么的完好性。(4)流操作符重載返回值申明為“引用”的作用:流操作符>,這兩個操作符常常希望被連續(xù)使用,例如:cout=0&&n>、賦值操作符=的返回值、拷貝構(gòu)造函數(shù)的參數(shù)、賦值操作符=的參數(shù)、其它情況都推薦使用引用。9.構(gòu)造與結(jié)合有和區(qū)別?1.構(gòu)造和結(jié)合都是由多個不同的數(shù)據(jù)類型成員組成,但在任何同一時刻,結(jié)合中只存放了一個被選中的成員(所有成員共用一塊地址空間),而構(gòu)造的所有成員都存在(不同成員的存放地址不同)。2.對于結(jié)合的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了,而對于構(gòu)造的不同成員賦值是互不影響的。10.下面關(guān)于“結(jié)合”的題目的輸出?a)#includeunion{inti;charx[2];}a

溫馨提示

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

評論

0/150

提交評論