




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
c語言面試題目100及最佳答案c語言面試題目100及最佳答案1、請?zhí)顚慴ool,float,指針變量與“零值”比較的if語句。提示:這里“零值”可以是0,0.0,FALSE或者“空指針”。例如int變量n與“零值”比較的if語句為:if(n==0)if(n!=0)以此類推。(1)請寫出boolflag與“零值”比較的if語句:【標準答案】if(flag)if(!flag)100條經(jīng)典C語言筆試題目(2)請寫出floatx與“零值”比較的if語句:【標準答案】constfloatEPSINON=0.00001;if((x>=-EPSINON)&&(x<=EPSINON)不可將浮點變量用“==”或“!=”與數(shù)字比較,應該設法轉(zhuǎn)化成“>=”或“<=”此類形式。100條經(jīng)典C語言筆試題目(3)請寫出char*p與“零值”比較的if語句【標準答案】if(p==NULL)if(p!=NULL)2、以下為Linux下的32位C程序,請計算sizeof的值。charstr[]=“Hello”;char*p=str;intn=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個指針的數(shù)組,該指針是指向一個整型數(shù)的;f)一個指向有10個整型數(shù)數(shù)組的指針;g)一個指向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù);h)一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù);【標準答案】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));的執(zhí)行結(jié)果是:_____【標準答案】DATE是一個union,變量公用空間.里面最大的變量類型是int[5],占用20個字節(jié).所以它的大小是20data是一個struct,每個變量分開占用空間.依次為int4+DATE20+double8=32.所以結(jié)果是20+32=52.當然...在某些16位編輯器下,int可能是2字節(jié),那么結(jié)果是int2+DATE10+double8=206、請問以下代碼有什么問題:intmain(){chara;char*str=&astrcpy(str,"hello");printf(str);return0;}【標準答案】沒有為str分配內(nèi)存空間,將會發(fā)生異常問題出在將一個字符串復制進一個字符變量指針所指地址。雖然可以正確輸出結(jié)果,但因為越界進行內(nèi)在讀寫而導致程序崩潰。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)函數(shù)指針數(shù)組,每個指針指向一個intfunc(intparam)的函數(shù)。9、c和c++中的struct有什么不同?【標準答案】c和c++中struct的主要區(qū)別是c中的struct不可以含有成員函數(shù),而c++中的struct可以。c++中struct和class的主要區(qū)別在于默認的存取權(quán)限不同,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;}會出現(xiàn)什么問題?【標準答案】程序崩潰,getmemory中的malloc不能返回動態(tài)內(nèi)存,free()對str操作很危險。11、charszstr[10];strcpy(szstr,"0123456789");產(chǎn)生什么結(jié)果?為什么?【標準答案】長度不一樣,出現(xiàn)段錯誤。100條經(jīng)典C語言筆試題目12、數(shù)組和鏈表的區(qū)別?【標準答案】數(shù)組:數(shù)據(jù)順序存儲,固定大??;鏈表:數(shù)據(jù)可以隨機存儲,大小可動態(tài)改變13、voidmain(){charaa[10];printf(“%d”,strlen(aa));}會出現(xiàn)什么問題?打印結(jié)果是是多少?【標準答案】sizeof()和初不初始化,沒有關(guān)系,strlen()和初始化有關(guān),打印結(jié)果值未知。14、給定結(jié)構(gòu)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為野指針(指向一個已刪除的對象或未申請訪問受限內(nèi)存區(qū)域的指針)19、(void*)ptr和(*(void**))ptr的結(jié)果是否相同?其中ptr為同一個指針?!緲藴蚀鸢浮?void*)ptr和(*(void**))ptr值是相同的20、要對絕對地址0x100000賦值,我們可以用(unsignedint*)0x100000=1234;那么要是想讓程序跳轉(zhuǎn)到絕對地址是0x100000去執(zhí)行,應該怎么做?【標準答案】*((void(*)())0x100000)();首先要將0x100000強制轉(zhuǎn)換成函數(shù)指針,即:(void(*)())0x100000然后再調(diào)用它:*((void(*)())0x100000)();22、關(guān)于內(nèi)存的思考題(1)你能看出有什么問題?23、關(guān)于內(nèi)存的思考題(2)你能看出有什么問題?25、關(guān)于內(nèi)存的思考題(3)你能看出有什么問題?26、關(guān)于內(nèi)存的思考題(4)你能看出有什么問題?27、關(guān)鍵字volatile有什么含意?并給出三個不同的例子?!緟⒖即鸢浮恳粋€定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個例子:1).并行設備的硬件寄存器(如:狀態(tài)寄存器)2).一個中斷服務子程序中會訪問到的非自動變量(Non-automaticvariables)3).多線程應用中被幾個任務共享的變量28、嵌入式系統(tǒng)經(jīng)常具有要求程序員去訪問某特定的內(nèi)存位置的特點。在某工程中,要求設置一絕對地址為0x67a9的整型變量的值為0xaa66。編譯器是一個純粹的ANSI編譯器。寫代碼去完成這一任務?!緟⒖即鸢浮窟@一問題測試你是否知道為了訪問一絕對地址把一個整型數(shù)強制轉(zhuǎn)換(typecast)為一指針是合法的。這一問題的實現(xiàn)方式隨著個人風格不同而不同。典型的類似代碼如下:int*ptr;ptr=(int*)0x67a9;*ptr=0xaa55;29、頭文件中的ifndef/define/endif干什么用?【標準答案】防止該頭文件被重復引用。30、#include和#include“filename.h”有什么區(qū)別?【標準答案】對于#include,編譯器從標準庫路徑開始搜索filename.h;對于#include“filename.h”,編譯器從用戶的工作路徑開始搜索filename.h。31、const有什么用途?(請至少說明兩種)【標準答案】:(1)可以定義const常量(2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程序的健壯性。32、static有什么用途?(請至少說明兩種)【標準答案】1.限制變量的作用域(static全局變量);2.設置變量的存儲域(static局部變量)。33、堆棧溢出一般是由什么原因?qū)е碌??【標準答案】沒有回收垃圾資源。34、如何引用一個已經(jīng)定義過的全局變量?【標準答案】可以用引用頭文件的方式,也可以用extern關(guān)鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變量寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。35、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?【標準答案】可以,在不同的C文件中以static形式來聲明同名全局變量??梢栽诓煌腃文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯。36、隊列和棧有什么區(qū)別?【標準答案】隊列先進先出,棧后進先出。37、Heap與stack的差別。【標準答案】Heap是堆,stack是棧。Stack的空間由操作系統(tǒng)自動分配/釋放,Heap上的空間手動分配/釋放。Stack空間有限,Heap是很大的自由存儲區(qū)C中的malloc函數(shù)分配的內(nèi)存空間即在堆上,C++中對應的是new操作符。程序在編譯期對變量和函數(shù)分配內(nèi)存都在棧上進行,且程序運行過程中函數(shù)調(diào)用時參數(shù)的傳遞也在棧上進行。38、用宏定義寫出swap(x,y),即交換兩數(shù)。【標準答案】#defineswap(x,y)(x)=(x)+(y);(y)=(x)–(y);(x)=(x)–(y);39、寫一個“標準”宏,這個宏輸入兩個參數(shù)并返回較小的一個?!緲藴蚀鸢浮?defineMin(X,Y)((X)>(Y)?(Y):(X))//結(jié)尾沒有;40、帶參宏與帶參函數(shù)的區(qū)別(至少說出5點)?【標準答案】帶參宏帶參函數(shù)處理時間編譯時運行時參數(shù)類型無需定義程序長度變長不變占用存儲空間否是運行時間不占運行時間調(diào)用和返回時占41、關(guān)鍵字volatile有什么含意?【標準答案】提示編譯器對象的值可能在編譯器未監(jiān)測到的情況下改變。42、intmain(){intx=3;printf("%d",x);return1;}問函數(shù)既然不會被其它函數(shù)調(diào)用,為什么要返回1?【標準答案】mian中,c標準認為0表示成功,非0表示錯誤。具體的值是某中具體出錯信息。43、已知一個數(shù)組table,用一個宏定義,求出數(shù)據(jù)的元素個數(shù)?!緲藴蚀鸢浮?defineNTBL(table)(sizeof(table)/sizeof(table[0]))44、A.c和B.c兩個c文件中使用了兩個相同名字的static變量,編譯的時候會不會有問題?這兩個static變量會保存到哪里(棧還是堆或者其他的)?【標準答案】static的全局變量,表明這個變量僅在本模塊中有意義,不會影響其他模塊。他們都放在靜態(tài)數(shù)據(jù)區(qū),但是編譯器對他們的命名是不同的。如果要使變量在其他模塊也有意義的話,需要使用extern關(guān)鍵字。45、static全局變量與普通的全局變量有什么區(qū)別?【標準答案】static全局變量只初使化一次,防止在其他文件單元中被引用;46、static局部變量和普通局部變量有什么區(qū)別【標準答案】static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;47、static函數(shù)與普通函數(shù)有什么區(qū)別?【標準答案】static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中維持一份拷貝關(guān)于45-47的參考文章全局變量(外部變量)的說明之前再冠以static就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存儲方式。這兩者在存儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域,即只在定義該變量的源文件內(nèi)有效,在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用,因此可以避免在其它源文件中引起錯誤。從以上分析可以看出,把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。static函數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當前源文件中使用的函數(shù)應該說明為內(nèi)部函數(shù)(static),內(nèi)部函數(shù)應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數(shù),應該在一個頭文件中說明,要使用這些函數(shù)的源文件要包含這個頭文件。48、程序的局部變量存在于___中,全局變量存在于____中,動態(tài)申請數(shù)據(jù)存在于___中。【標準答案】程序的局部變量存在于棧(stack)中,全局變量存在于靜態(tài)數(shù)據(jù)區(qū)中,動態(tài)申請數(shù)據(jù)存在于堆(heap)中。49、什么是預編譯,何時需要預編譯:【標準答案】1、總是使用不經(jīng)常改動的大型代碼體。2、程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯為一個預編譯頭。50、用兩個棧實現(xiàn)一個隊列的功能?要求給出算法和思路!【參考答案】設2個棧為A,B,一開始均為空.入隊:將新元素push入棧A;出隊:(1)判斷棧B是否為空;(2)如果不為空,則將棧A中所有元素依次pop出并push到棧B;(3)將棧B的棧頂元素pop出;51、對于一個頻繁使用的短小函數(shù),在C語言中應用什么實現(xiàn),在C++中應用什么實現(xiàn)?【標準答案】c用宏定義,c++用inline52、1.用預處理指令#define聲明一個常數(shù),用以表明1年中有多少秒(忽略閏年問題)【參考答案】#defineSECONDS_PER_YEAR(60*60*24*365)UL53、Typedef在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子:#definedPSstructs*typedefstructs*tPS;以上兩種情況的意圖都是要定義dPS和tPS作為一個指向結(jié)構(gòu)s指針。哪種方法更好呢?(如果有的話)為什么?【參考答案】這是一個非常微妙的問題,任何人答對這個問題(正當?shù)脑颍┦菓敱还驳摹4鸢甘牵簍ypedef更好。思考下面的例子:dPSp1,p2;tPSp3,p4;第一個擴展為structs*p1,p2;上面的代碼定義p1為一個指向結(jié)構(gòu)的指,p2為一個實際的結(jié)構(gòu),這也許不是你想要的。第二個例子正確地定義了p3和p4兩個指針。54、在C++程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern“C”?【標準答案】C++語言支持函數(shù)重載,C語言不支持函數(shù)重載。函數(shù)被C++編譯后在庫中的名字與C語言的不同。假設某個函數(shù)的原型為:voidfoo(intx,inty);該函數(shù)被C編譯器編譯后在庫中的名字為_foo,而C++編譯器則會產(chǎn)生像_foo_int_int之類的名字。C++提供了C連接交換指定符號extern“C”來解決名字匹配問題。55、請簡述以下兩個for循環(huán)的優(yōu)缺點。【標準答案】56、語句for(;1;)有什么問題?它是什么意思?【標準答案】死循環(huán),和while(1)相同。57、do……while和while……do有什么區(qū)別?【標準答案】前一個循環(huán)一遍再判斷,后一個判斷以后再循環(huán)。58、請寫出下列代碼的輸出內(nèi)容#includeintmain(){inta,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf("b,c,d:%d,%d,%d",b,c,d);return0;}【標準答案】10,12,12059、unsignedchar*p1;unsignedlong*p2;p1=(unsignedchar*)0x801000;p2=(unsignedlong*)0x810000;請問p1+5=;p2+5=;【標準答案】0x801005、0x81002060、main(){inta[5]={1,2,3,4,5};int*ptr=(int*)(&a+1);printf(“%d,%d”,*(a+1),*(ptr-1));}請問輸出:【標準答案】2,561、請問下面程序有什么錯誤?inta[60][250][1000],i,j,k;for(k=0;k<=1000;k++)for(j=0;j<250;j++)for(i=0;i<60;i++)a[i][j][k]=0;【標準答案】把循環(huán)語句內(nèi)外換一下。62、以下是求一個數(shù)的平方的程序,請找出錯誤:#defineSQUARE(a)((a)*(a))inta=5;intb;b=SQUARE(a++);【標準答案】宏在預編譯時會以替換的形式展開,僅僅會替換。涉及到宏的地方,不要用++--,標準中對此沒有規(guī)定,因此最終結(jié)果將會依賴于不同的編譯器。執(zhí)行程序的答案可能是25、也有可能是36。63、#defineMax_CB500voidLmiQueryCSmd(StructMSgCB*pmsg){unsignedcharucCmdNum;......for(ucCmdNum=0;ucCmdNum<=""p="">um++){......;}}這段代碼執(zhí)行有什么問題?【標準答案】死循環(huán)unsignedchar//無符號字符型表示范圍0~255char//有符號字符型表示范圍-128~12764、嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么用C編寫死循環(huán)?!緲藴蚀鸢浮縲hile(1){}或者for(;;)100條經(jīng)典C語言筆試題目65、程序輸出結(jié)果是?【標準答案】8,10,12,14,1666、【標準答案】1667、intmodifyvalue(){return(x+=10);}intchangevalue(intx){return(x+=1);}voidmain(){intx=10;x++;changevalue(x);x++;modifyvalue();printf("Firstoutput:%dn",x);x++;changevalue(x);printf("Secondoutput:%dn",x);modifyvalue();printf("Thirdoutput:%dn",x);}輸出?【標準答案】12、13、1368、不能做switch()的參數(shù)類型是:【標準答案】switch的參數(shù)不能為實型。69、請寫出下列代碼的輸出內(nèi)容#includemain(){inta,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf("b,c,d:%d,%d,%d",b,c,d);return0;}【標準答案】10,12,12070、找出程序的錯誤?!緲藴蚀鸢浮?1、一語句實現(xiàn)x是否為2的若干次冪的判斷?!緟⒖即鸢浮縱oidmain(){inta;scanf(“%d”,&a);printf(“%c”,(a)&(a-1)?’n’:’y’);//若是打印y,否則n}72、中斷是嵌入式系統(tǒng)中重要的組成部分,這導致了很多編譯開發(fā)商提供一種擴展—讓標準C支持中斷。具代表事實是,產(chǎn)生了一個新的關(guān)鍵字__interrupt。下面的代碼就使用了__interrupt關(guān)鍵字去定義了一個中斷服務子程序(ISR),請評論一下這段代碼的。__interruptdoublecompute_area(doubleradius){doublearea=PI*radius*radius;printf("Area=%f",area);returnarea;}【參考答案】這個函數(shù)有太多的錯誤了,以至讓人不知從何說起了:1).ISR不能返回一個值。如果你不懂這個,那么你不會被雇用的。2).ISR不能傳遞參數(shù)。如果你沒有看到這一點,你被雇用的機會等同第一項。3).在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的寄存器入棧,有些處理器/編譯器就是不允許在ISR中做浮點運算。此外,ISR應該是短而有效率的,在ISR中做浮點運算是不明智的。4).與第三點一脈相承,printf()經(jīng)常有重入和性能上的問題。如果你丟掉了第三和第四點,我不會太為難你的。不用說,如果你能得到后兩點,那么你的被雇用前景越來越光明了。73、下面的代碼輸出是什么,為什么?voidfoo(void){unsignedinta=6;intb=-20;(a+b>6)?puts(">6"):puts("<=6");}【參考答案】這個問題測試你是否懂得C語言中的整數(shù)自動轉(zhuǎn)換原則,我發(fā)現(xiàn)有些開發(fā)者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是“>6”。原因是當表達式中存在有符號類型和無符號類型時所有的數(shù)都自動轉(zhuǎn)換為無符號類型。因此-20變成了一個非常大的正整數(shù),所以該表達式計算出的結(jié)果大于6。這一點對于應當頻繁用到無符號數(shù)據(jù)類型的嵌入式系統(tǒng)來說是豐常重要的。如果你答錯了這個問題,你也就到了得不到這份工作的邊緣。74、評價下面的代碼片斷:unsignedintzero=0;unsignedintcompzero=0xFFFF;/*1‘scomplementofzero*/【參考答案】對于一個int型不是16位的處理器為說,上面的代碼是不正確的。應編寫如下:unsignedintcompzero=~0;這一問題真正能揭露出應試者是否懂得處理器字長的重要性。在我的經(jīng)驗里,好的嵌入式程序員非常準確地明白硬件的細節(jié)和它的局限,然而PC機程序往往把硬件作為一個無法避免的煩惱。到了這個階段,應試者或者完全垂頭喪氣了或者信心滿滿志在必得。如果顯然應試者不是很好,那么這個測試就在這里結(jié)束了。但如果顯然應試者做得不錯,那么我就扔出下面的追加問題,這些問題是比較難的,我想僅僅非常優(yōu)秀的應試者能做得不錯。提出這些問題,我希望更多看到應試者應付問題的方法,而不是答案。不管如何,你就當是這個娛樂吧…75、下面的代碼片段的輸出是什么,為什么?char*ptr;if((ptr=(char*)malloc(0))==NULL)puts("Gotanullpointer");elseputs("Gotavalidpointer");【參考答案】這個你可以先大膽猜測下,然后再用你的編譯器嘗試著編譯下~~100條經(jīng)典C語言筆試題目歡迎進入C語言程序筆試面試,編寫程序代碼單元。76、編寫strcpy函數(shù)已知strcpy函數(shù)的原型是char*strcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不調(diào)用C++/C的字符串庫函數(shù),請編寫函數(shù)strcpy。(2)strcpy能把strSrc的內(nèi)容復制到strDest,為什么還要char*類型的返回值?77、寫出二分查找的代碼?!緟⒖即鸢浮縤ntbinary_search(int*arr,intkey,intn){intlow=0;inthigh=n-1;intmid;while(low<=high){mid=(high+low)/2;if(arr[mid]>k)high=mid-1;elseif(arr[mid]<k)low=mid+1;elsereturnmid;}return-1;}78、請編寫一個C函數(shù),該函數(shù)給出一個字節(jié)中被置1的位的個數(shù)?!緟⒖即鸢浮縰nsignedintTestAsOne0(charlog){inti;unsignedintnum=0,val;for(i=0;i<8;i++){val=log>>i;//移位val&=0x01;//與1相與if(val)num++;}returnnum;}79、請編寫一個C函數(shù),該函數(shù)將給定的一個字符串轉(zhuǎn)換成整數(shù)?!緟⒖即鸢浮縤ntInvert(char*str){intnum=0;while(*str!='\0'){intdigital=*str-48;num=num*10+digital;str=str+1;}returnnum;}80、請編寫一個C函數(shù),該函數(shù)將給定的一個整數(shù)轉(zhuǎn)換成字符串?!緟⒖即鸢浮縱oidIntToCharChange(intnum,char*pval){charstrval[100];inti,j;intval0=0;intval1=0;val0=num;for(i=0;i<100;i++){val1=val0%10;//取余val0=val0/10;//取整strval[i]=val1+48;//數(shù)字—字符if(val0<10){i++;strval[i]=val0+48;break;}}for(j=0;j<=i;j++)//倒置pval[j]=strval[i-j];pval[j]='\0';}81、實現(xiàn)strcmp函數(shù)?!緟⒖即鸢浮縤ntmystrcmp(constchar*str1,constchar*str2){assert((str1!=NULL)&&(str2!=NULL));intret=0;while(!(ret=*(unsignedchar*)str1-*(unsignedchar*)str2)&&*str2){str1++;str2++;}if(ret>0)ret=1;elseif(ret<0)ret=-1;returnret;}82、請編寫一個C函數(shù),該函數(shù)將一個字符串逆序?!緟⒖即鸢浮縱oidAntitoneValue(char*father,char*child){inti;charsource[100];intj=0;while(father[j])//放入source,[j]為長度{source[j]=father[j];j++;if(j>99)return;}source[j]='\0';for(i=0;i<=""p="">child[i]=source[j-i-1];//反序child[i]='\0';}83、請編寫一個C函數(shù),該函數(shù)在給定的內(nèi)存區(qū)域搜索給定的字符,并返回該字符所在位置索引值?!緟⒖即鸢浮縤ntsearch(char*cpSource,intn,charch)//起始地址,搜索長度,目標字符{inti;for(i=0;i<=""p=""return="">}84、請編寫一個C函數(shù),該函數(shù)在一個字符串中找到可能的最長的子字符串,該字符串是由同一字符組成的。【參考答案】intChildString(char*p)//自己寫{char*q=p;intstringlen=0,i=0,j=1,len=0,maxlen=1;while(*q!=’\0’)//不能用strlen,求得長度stringlen{Stringlen++;q++;}while(i<Stringlen){if(*(p+i)==*(p+j)&&j<Stringlen){len++;//統(tǒng)計子串長度i++;j++;}else{if(len>maxlen)//統(tǒng)計最大子串長度{maxlen=len+1;len=0;}elselen=0;i++;j++;}}returnmaxlen;}85、華為面試題:怎么判斷鏈表中是否有環(huán)?【參考答案】答:用兩個指針來遍歷這個單向鏈表,第一個指針p1,每次走一步;第二個指針p2,每次走兩步;當p2指針追上p1的時候,就表明鏈表當中有環(huán)路了。inttestLinkRing(Link*head){Link*t1=head,*t2=head;while(t1->next&&t2->next){t1=t1->next;if(NULL==(t2=t2->next->next))return0;//無環(huán)if(t1==t2)return1;}return0;}86、有一浮點型數(shù)組A,用C語言寫一函數(shù)實現(xiàn)對浮點數(shù)組A進行降序排序,并輸出結(jié)果,要求要以數(shù)組A作為函數(shù)的入口.(建議用冒泡排序法)【參考答案】voidBubbleSort(doublearr[],intn){inti,j;intexchange=1;//交換標志for(i=1;i<n;i++)<p="">{//最多做n-1趟排序exchange=0;//本趟排序開始前,交換標志應為假for(j=n-1;j>=i;j--)//對當前無序區(qū)R[i..n]自下向上掃描if(arr[j+1]>arr[j]){//交換記錄arr[0]=arr[j+1];//R[0]不是哨兵,僅做暫存單元arr[j+1]=arr[j];arr[j]=arr[0];exchange=1;//發(fā)生了交換,故將交換標志置為真}if(!exchange)//本趟排序未發(fā)生交換,提前終止算法return;}//endfor(外循環(huán))}87、實現(xiàn)雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數(shù)?!緟⒖即鸢浮?/刪除操作StatusListDelete_DuL(DuLinkList&L,inti,ElemType&e){if(!(p=GetElemP_DuL(L,i)))returnERROR;e=p->data;p->prior->next=p->next;p->next->prior=p->pror;free(p);returnOK;}//插入操作StatusListInsert_DuL(DuLinkList&L,inti,ElemType&e){if(!(p=GetElemP_DuL(L,i)))returnERROR;if(!(s=(DuLinkList)malloc(sizeof(DuLNode))))returnERROR;s->data=e;s->prior=p;p->next->prior=s;p->next=s;s->next=p->next->next;returnOK;}88、把一個鏈表反向?!緟⒖即鸢浮繌牡谝粋€元素開始,ps指向他,將他(ps)指向頭節(jié)點(ps->next=head),將ps設為頭節(jié)點(head=ps;)操作下一個元素(ps=pe->next;)等于是依次將每個元素翻到原頭節(jié)點前面。voidreverse(test*head){test*pe=head;test*ps=head->next;while(ps){pe->next=ps->next;ps->next=head;head=ps;ps=pe->next;}}89、將二維數(shù)組行列元素互換,存到另一個數(shù)組中?!緟⒖即鸢浮?includemain(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf("arraya:\n");for(i=0;i<=1;i++){for(j=0;j<=2;j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}printf("arrayb:\n");for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}}90、輸入一行字符,統(tǒng)計其中有多少個單詞?!緟⒖即鸢浮?includemain(){charstring[81];inti,num=0,word=0;charc;gets(string);for(i=0;(c=string[i])!='\0';i++)if(c=='')word=0;elseif(word==0){word=1;num++;}printf("Thereare%dwordsintheline\n",num);}91、寫一個內(nèi)存拷貝函數(shù),不用任何庫函數(shù).就是前些時候本版討論的那個問題?!緟⒖即鸢浮縱oid*memcpy(void*pvTo,constvoid*pvFrom,size_tsize){assert((pvTo!=NULL)&&(pvFrom!=NULL));byte*pbTo=pvTo;byte*pbFrom=pbFrom;while(size-->0){*pbTo++=*pbFrom++;}returnpvTo;}92、有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復數(shù)字的三位數(shù)?都是多少?【參考答案】#include"stdio.h"#include"conio.h"main(){inti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六年級下冊數(shù)學教學設計-總復習 雞兔同籠|北師大版
- 三年級下冊數(shù)學教案-6.1 面積的初步認識 丨蘇教版
- 六年級下冊數(shù)學教案-1.2 百分數(shù)和分數(shù)、小數(shù)的互化 ︳西師大版
- 2025年學習雷鋒精神62周年主題活動方案 合計3份
- 2024年槽鋼項目資金需求報告代可行性研究報告
- 2025年河北司法警官職業(yè)學院單招職業(yè)技能測試題庫完美版
- 專題21 信息的傳遞-2025年中考《物理》一輪復習知識清單與解題方法
- 2025年廣西自然資源職業(yè)技術(shù)學院單招職業(yè)傾向性測試題庫參考答案
- 2025年度代養(yǎng)大型豬群養(yǎng)殖基地合作協(xié)議
- 2025年度專業(yè)瓷磚鋪貼班組勞務合同
- 蘇科版七年級數(shù)學下冊期末復習+10(專題-幾何圖形的證明)
- 人人都是產(chǎn)品經(jīng)理2 0:寫給泛產(chǎn)品經(jīng)理
- 西方經(jīng)濟學(第二版)完整整套教學課件
- 振動振動測試基礎知識培訓課件
- 《云南瀾滄鉛礦有限公司勐濱煤礦采礦權(quán)價款退還計算說明》
- sbl-ep16高低壓開關(guān)柜培訓中法文kyn6140.5安裝使用說明書
- GB/T 9113.1-2000平面、突面整體鋼制管法蘭
- GB/T 8947-1998復合塑料編織袋
- PALL 頗爾過濾器 -乙烯系統(tǒng)培訓
- 2021年湖北師范學院專升本C語言程序設計試卷
- CB/T 3136-1995船體建造精度標準
評論
0/150
提交評論