C、C++筆試題基礎(chǔ)概念、算法及編程_第1頁
C、C++筆試題基礎(chǔ)概念、算法及編程_第2頁
C、C++筆試題基礎(chǔ)概念、算法及編程_第3頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、編寫my_strcpy 函數(shù),實(shí)現(xiàn)與庫函數(shù)strcpy 答:char *strcpy(char *strDest, const char *strSrc)if ( strDest = NULL | strSrc = NULL) return NULL ;if ( strDest = strSrc) returnstrDest ;char *tempptr = strDest ;while( (*strDest+ = *strSrc+) != ); returntempptr ;頭文件中的ifndef/define/endif 答:防止該頭文件被重復(fù)引用。i nclude 與i nclude “

2、file.h”的區(qū)別?答:前者編譯器從標(biāo)準(zhǔn)庫路徑開始搜索 file.h,而后者編譯器從用戶的工作路徑開始搜索file.h。C+ 程序中調(diào)用被C 編譯器編譯后的函數(shù),為什么要加extern“C”?答:extern C/C+語言中表明函數(shù)和全局變量作用范圍(可見性)函數(shù)和變量可以在本模塊或其它模塊中使用。通常,在模塊的頭文件中對(duì)本模塊提供給其它模塊引用的函數(shù)和全局變量以關(guān)鍵字 extern聲明。面向?qū)ο蟮娜齻€(gè)基本特征,并簡單敘述之?答:1)封裝:將客觀事物抽象成類,每個(gè)類對(duì)自身的數(shù)據(jù)和方法實(shí)行 protection(private, protected,public)繼承:實(shí)現(xiàn)繼承(指使用基類的屬

3、性和方法而無需額外編碼的能力、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼、接口繼承(僅使用屬性和方法,實(shí)現(xiàn)滯后到子類實(shí)現(xiàn)。多態(tài):允許將子類類型的指針賦值給父類類型的指針。”)答:從定義上來說:(數(shù)類型不同,或許兩者都不同。重寫:是指子類重新定義復(fù)類虛函數(shù)的方法。從實(shí)現(xiàn)原理上來說:不同的函數(shù)。(地址無法給出。多態(tài)的作用?2)接口重用,為了類在繼承和派生的時(shí)候,保證使用家族中任一類的實(shí)例的某一屬性時(shí)的 正確調(diào)用。分別寫出BOOL,int,float,指針類型的變量a 答:BOOL :if ( !a ) or if(a)int :if ( a =0)float :const EXPRESSION E

4、XP = 0.000001 if ( a -EXP)pointer : if ( a != NULL) or if(a = NULL)const #define 相比,有何優(yōu)點(diǎn)? const 2) 有些集成化的調(diào)試工具可以對(duì)const 常量進(jìn)行調(diào)試,但是不能對(duì)宏常量進(jìn)行調(diào)試。簡述數(shù)組與指針的區(qū)別?數(shù)組要么在靜態(tài)存儲(chǔ)區(qū)被創(chuàng)建(如全局?jǐn)?shù)組類型的內(nèi)存塊。char a = “hello”;a0 = X;char *p = “world”; / 注意 p 指向常量字符串p0 = X; / 編譯器不能發(fā)現(xiàn)該錯(cuò)誤,運(yùn)行時(shí)錯(cuò)誤用運(yùn)算符sizeof 可以計(jì)算出數(shù)組的容量(字節(jié)數(shù)sizeof(p),p 為指針得到

5、的是一個(gè)指針變量的字節(jié)數(shù),而不是pC+/Cchar a = “hello world”; char *p = a;coutendl;= 12= 字節(jié)coutendl;= 4= 字節(jié)計(jì)算數(shù)組和指針的內(nèi)存容量voidFunc(char a100)coutendl;= 4= 100= 字節(jié)變量的聲明和定義有什么區(qū)別?答:聲明變量不分配空間,定義變量要分配空間。聲明主要是告訴編譯器,后面的引用都按聲明的格式。定義其實(shí)包含了聲明的意思,同時(shí)要分配內(nèi)存空間。解釋堆和棧的區(qū)別。答:堆(heap)一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由 OS ,不過用起來最方便。式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。由系統(tǒng)自

6、動(dòng)分配,速度較快。但程序員是無法控制的。const?1)可以定義const 常量(2)constconst到強(qiáng)制保護(hù),可以預(yù)防意外的變動(dòng),能提高程序的健壯性。下列哪兩個(gè)是等同的int b;A constint* a = &b; /指向常量的指針,不能通過指針改變b,但指針的地址可以改變。B const* int a = &b;/ 指針的地址不可以改變,但可以通過指針改變b 的值C constint* const a = &b; /指針指向的值,和指針本身的地址都不能改變D intconst* const a = &b;/與 c 相同完成程序,實(shí)現(xiàn)對(duì)數(shù)組的降序排序#includevoid sor

7、t(int array int main()int array=45,56,76,234,1,34,23,2,3; /數(shù)字任/意給出sort( array );return 0;void sort( int array ) inti,j,k;for(i=1;iarrayi-1) k=ARRAYi;j=i-1; doarrayj+1=arrayj; j;while(karrayj&j=0); arrayj+1=k;16. int i=(j=4,k=8,l=16,m=32); i); i=j=4;i=k=8;i=l=16;i=m=32; 故最后i=32;17. 請(qǐng)簡述以下兩個(gè)for 循環(huán)的優(yōu)缺點(diǎn)(

8、5分) 1)for (i=0; iif (condition) DoSomething(); else DoOtherthing();if (condition)for (i=0; i DoSomething();elsefor (i=0; i 0)*psTo+ = *psFrom+;returnpvTo;.C+里面如何聲明const void f(void)函數(shù)為C程序中的庫函數(shù)?答:在該函數(shù)前添加extern “C”聲明。由于編譯后的名字不同,C+程序不能直接調(diào)用 C函數(shù)。32 位平臺(tái)上的運(yùn)行結(jié)果,并說明sizeof#include#includeint main(void)char a3

9、0;char *b = (char *)malloc(20 * sizeof(char); printf(“%dn”, sizeof(a);printf(“%dn”, sizeof(b);printf(“%dn”, sizeof(a3); printf(“%dn”, sizeof(b+3); printf(“%dn”, sizeof(*(b+4); return 0 ;3位系統(tǒng)下(如WIN323a 3是字符型。因此輸出: 30、4、1、4、1C+中,關(guān)鍵字structclass 的區(qū)別僅僅在于:struct 定義的類的缺省成員為公有的,而class 定義的類的缺省成員為私有的;?答:1)通過頭

10、文件來調(diào)用庫功能。2)頭文件能加強(qiáng)類型安全檢查。C+?答:C+函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。?個(gè)運(yùn)行期間都存在。例如全局變量。 2)從堆上分配,亦稱動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc 或 new 申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用free 或 delete 使用非常靈活,但問題也最多。設(shè)計(jì)函數(shù)intatoi(char答:intatoi (char *s)int i = 0,sum = 0,sign; /輸入的數(shù)前面可能還有空格或制表符應(yīng)加判斷while(*s=”|*s=t) i+;sign = (*s=-)?-1:1;if(*s=-| *s=+) i+;w

11、hile(*s!=0)sum = *s-0+sum*10; i+;return sign*sum;strcat (6分)已知 strcat 函數(shù)的原型是char *strcat (char *strDest, const char *strSrc);其中 strDest 是目的字符串,strSrc 是源字符串。不調(diào)用C+/C 的字符串庫函數(shù),請(qǐng)編寫函數(shù)strcat答:char *cdeclstrcat(char * dst, const char * src)char * cp = dst; while( *cp )cp+; /* find end of dst */while( *cp+ =

12、 *src+ ) ; /* Copy src to end of dst */ return(dst ); /* return dst */strcat能把strSrc的內(nèi)容連接到strDest,為什么還要char * 類型的返回值? 答:方便賦值給其他變量。MFC 中CString是類型安全類么?答:不是,其它數(shù)據(jù)類型轉(zhuǎn)換到CString 可以使用CString 的成員函數(shù)Format 來轉(zhuǎn)換函數(shù)模板與類模板有什么區(qū)別?由程序員在程序中顯式地指定。寫一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。#define MIN(A,B) (A) = (B) ? (A) : (B)宏的副作用

13、(與某些函數(shù)的混淆least = MIN(*p+, b)#define MIN(A,B) (A)(B)(A)(B)MIN(*p+, b)的作用結(jié)果是:(*p+) = (b) ? (*p+) : (*p+)嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用C 答:while(1)或者for(;)用變量a 給出下面的定義一個(gè)整型數(shù) integer)一個(gè)指向整型數(shù)的指針 pointer to an 一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)pointertoapointertoan integer)一個(gè)有10個(gè)整型數(shù)的數(shù)組 array of 10 integers)一個(gè)有10個(gè)指針的數(shù)組,該指針是指

14、向一個(gè)整型數(shù)的( An array of 10 pointers integers)10個(gè)整型數(shù)數(shù)組的指針 pointer to an array of 10 (Apointertoafunction that takes an integer as an argument and returns an 10數(shù) ( An array of ten pointers to functions that take an integer argument and return an integer )答案是:int a; / An integerint *a; / A pointer to an i

15、ntegerint *a; / A pointer to a pointer to an integerint a10; / An array of 10 integersint *a10; / An array of 10 pointers to integersint (*a)10; / A pointer to an array of 10 integersint (*a)(int); / A pointer to a function a that takes an integer argument and returns an integerint (*a10)(int); / An

16、 array of 10 pointers to functions that take an integer argument and return an integer1)關(guān)鍵字static 的作用是什么?答()()()于函數(shù)。2)關(guān)鍵字const 有什么含意?答:表示常量不可以修改的變量。如何判斷一段程序是由C 編譯程序還是由C+編譯程序編譯的答案:#ifdefcpluspluscoutc+; #else coutc; #endif數(shù)組 aN至 N-1字.時(shí)間復(fù)雜度必須為o(N)函數(shù)原型:intdo_dup(int a,int N)1N-1,那么求出aN1N-1(S = N * (N-1

17、) / 2;int i;int s = 0; for(i=0;is += ai;int res = s S;情況下,可以將所有包含文件預(yù)編譯為一個(gè)預(yù)編譯頭。char * const p; charconst * p const char *p上述三個(gè)有什么區(qū)別?答:char * const p; /常量指針,p 的值不可以修改char const * p;/指向常量的指針,指向的常量值不可以改const char *p; / 和 char const *p有1,2,.n 的無序數(shù)組,求排序算法,O(n),O(1),而且一次只能交換兩個(gè)數(shù)。#include int main()int a = 1

18、0,6,9,5,2,8,4,7,1,3;intlen = sizeof(a) / sizeof(int); int temp;for(int i = 0; itemp = aai 1;aai 1 = ai; ai = temp;if ( ai = i + 1) i+;for (int j = 0; j cout,; return 0;寫一個(gè)函數(shù)比較兩個(gè)字符串str1和str20,若str1大于str2str1小于str2intstrcmp ( const char * src,const char * dst)int ret = 0 ;while( ! (ret = *(unsigned ch

19、ar *)src *(unsigned char *)dst) & *dst)/字符之差為整型+src;+dst;if ( ret 0 ret = 1 ;return( ret );#define 年中有多少秒(忽略閏年問題#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)ULTypedef C 器做類似的事。例如,思考一下下面的例子:#definedPSstruct s* typedefstruct s * 以上兩種情況的意圖都是要定義dPS tPS 作為一個(gè)指向結(jié)構(gòu)s 指針。哪種方法更好呢?(如果有的話)為什么?答:typedef 更好。思考下面的例子:dPS p1,p2;tPS p3,p4;第一個(gè)擴(kuò)展為:struct s * p1, p2;上面的代碼定義 p1二個(gè)例子正確地定義了p3 p4 兩個(gè)指針。C ,下面的結(jié)構(gòu)是合法的嗎,如果是它做些什么?inta=5,b=7,c =a+b;答:上面的代碼被處理成:c = a+ + b;因此, 這段代碼持行后a = 6, b = 7, c = 12。41. char* ss = “0123456789;sizeof(ss) 4 /ss sizeof(*ss) 1 /*ss 是第一個(gè)字符char ss = “0123456789;sizeof(ss) 結(jié)果 11 /ss 0size

溫馨提示

  • 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)論