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

下載本文檔

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

文檔簡介

表示已有答案表示沒有處理表示答案不確定C++筆試題1.多態(tài)類中的虛函數(shù)表是Compile-Time?還是Run-Time時建立的?答案:虛擬函數(shù)表是在編譯期就建立「各個虛擬函數(shù)這時被組織成了一個虛擬函數(shù)的入口地址的數(shù)組.而對象的隱藏成員一虛擬函數(shù)表指針是在運行期ー-也就是構造函數(shù)被調用時進行初始化的,這是實現(xiàn)多態(tài)的關鍵..main主函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼?(朗訊的一道筆試題)答案:可以,可以用ー。nexit注冊ー個函數(shù),它會在main之后執(zhí)行;如果你需要加入?段在main退出后執(zhí)行的代碼,可以使用atexit。函數(shù),注冊個函數(shù)。語法:#include<stdlib.h>intatexit(void(*funciion")(void));#includc<stdlib.h>#include<stdio.h>voidfn1(void),fn2(void),fn3(void),fn4(void);intmain(void)(atexit(fnl);atexit(fn2);atexit(fn3);atexit(fn4);printf("Thisisexecutedfirst.\n");)voidfnl()(printf("next.\nM);}voidfn2(){printf("executedつ;)voidfn3()(printf("is");)voidfn4()(printf("This11);)結果:Thisisexecutedfirst.Thisisexecutednext..ー個父類寫了一個virtual函數(shù),如果子類覆蓋它的函數(shù)不加virtual,也能實現(xiàn)多態(tài)?在子類的空間里,有沒有父類的這個函數(shù),或者父類的私有變量?(華為筆試題)答案:只要基類在定義成員函數(shù)時已經(jīng)聲明/virtue關鍵字,在派生類實現(xiàn)的時候覆蓋該函數(shù)時,virtue關鍵字可加可不加,不影響多態(tài)的實現(xiàn)。子類的空間電有父類的所有變量(static除外)。.給一個字符串、例如“ababc”要求返回“ab”.因為“ab”連續(xù)重復出現(xiàn)且最長。用C/C++語言寫ー函數(shù)完成該算法,給出復雜度.對序列1、1、2、3、5、8、13 是Fab.?數(shù)列2、3、5、13...是Fab..質數(shù)數(shù)列,因為他們與自己前面的Fab...數(shù)列都互質給出k,返回第k小的Fab..質數(shù)7.101個硬幣100真、1假,真假區(qū)別在于重量。請用無硅碼天平稱兩次給出真幣重還是假幣重的結論。8.完成字符串拷貝可以使用sprintf.strcpy及memcpy函數(shù),請問這些函數(shù)有什么區(qū)別,你喜歡使用哪個,為什么?答案:這些函數(shù)的區(qū)別在于實現(xiàn)功能以及操作對象不同。1.strcpy函數(shù)操作的對象是字符串,完成從源字符串到目的字符串的拷貝功能。2.snprintf函數(shù)操作的對象不限于字符串:雖然目的對象是字符串,但是源對象可以是字符串、也可以是任意基本類型的數(shù)據(jù)。這個函數(shù)上要用來實現(xiàn)(字符串或基本數(shù)據(jù)類型)向字符串的轉換功能。如果源對象是字符串,并且指定%s格式符,也可實現(xiàn)字符串拷貝功能。3.memcpy函數(shù)顧名思義就是內存拷貝,實現(xiàn)將一個內存塊的內容復制到另ー個內存塊這ー功能。內存塊由其首地址以及長度確定。程序中出現(xiàn)的實體對象,不論是什么類型,其最終表現(xiàn)就是在內存中占據(jù)一席之地(ー個內存區(qū)間或塊)。因此,memcpy的操作對象不局限于某ー類數(shù)據(jù)類型,或者說可適用于任意數(shù)據(jù)類型,只要能給出對象的起始地址和內存長度信息、并且對象貝?有可操作性即可。鑒于memcpy函數(shù)等長拷貝的特點以及數(shù)據(jù)類型代表的物理意義,memcpy函數(shù)通常限于同種類型數(shù)據(jù)或對象之間的拷貝,其中當然也包括字符串拷貝以及基本數(shù)據(jù)類型的拷貝。對于字符串拷貝來說,用上述三個函數(shù)都可以實現(xiàn),但是其實現(xiàn)的效率和使用的方便程度不同:strcpy無疑是最合適的選擇:效率高且調用方便。snprintf要額外指定格式符并且進行格式轉化,麻煩且效率不高。memcpy雖然高效,但是需要額外提供拷貝的內存長度這一參數(shù),易錯且使用不便;并且如果長度指定過大的話(最優(yōu)長度是源字符串長度+1),還會帶來性能的ド降。其實strcpy函數(shù)ー般是在內部調用memcpy函數(shù)或者用匯編直接實現(xiàn)的,以達到高效的目的。因此,使用memcpy和strcpy拷貝字符串在性能上應該沒有什么大的差別。對于非字符串類型的數(shù)據(jù)的復制來說,strcpy和snprintf一般就無能為カ了,可是對memcpy卻沒有什么影響。但是,對于基本數(shù)據(jù)類型來說,盡管可以用memcpy進行拷貝,由于有賦值運算符可以方便且高效地進行同種或兼容類型的數(shù)據(jù)之間的拷貝,所以這種情況下memcpy幾乎不被使用。memcpy的長處是用來實現(xiàn)(通常是內部實現(xiàn)居多)對結構或者數(shù)組的拷貝,其目的是或者高效,或者使用方便,甚或兩者兼有。.變量的聲明和定義有什么區(qū)別?.請寫出ド面代碼在32位平臺上的運行結果,并說明sizeof的性質:#include<stdio.h>#include<stdlib.h>intmain(void)(chara[30];char*b=(char*)malloc(20*sizeof(char)); printf(,,%d\n,\sizeof(a));printf(M%d\n,\sizeof(b));printf(M%d\n'\sizeof(a[3]));printf(H%d\nM,sizeof(b+3));printf(M%d\nM,sizeof(*(b+4)));return0;12.請完成以下題目。注意,請勿直接調用ANSIC函數(shù)庫中的函數(shù)實現(xiàn)。a)請編寫ー個C函數(shù),該函數(shù)給出ー個字節(jié)中被置1的位的個數(shù),并請給出該題的至少ー個不同解法。第一種unsignedintTestAsOneO(charlog)

inti;unsignedint num=O, val;for(i=0;i<8; i++)(val= log? i; 〃移位val&=0x01;〃與1相與if(val)num++;)returnnum;}_第二種unsignedintlestAsOne1(charlog)(inti;unsignedintnum=0, val;for(i=0;i<8; i++){val=(?log)?i;〃反碼?val&=0x00; 〃與〇相與if(!val)num++;)returnnum;)b)請編寫ー個c函數(shù),該函數(shù)將給定的ー個字符串轉換成整數(shù)。intInvert(char*str)(intnum=0;while(*str!=、0')(intdigital=*str-48;num=num*lO+digital;str=str+1;)returnnum;)c)請編寫ー個C函數(shù),該函數(shù)將給定的ー個整數(shù)轉換成字符串。voidIntTbCharChange(intnum,char*pval)(charstrval[100];inti,j;int valO = 0;int val1 = 0;valO=num;for(i=0;i<100;i++){vail = valO % 10;〃取余valO = valO / 10; 〃取整strval[i]=vail+48;〃數(shù)字一字符if(valO<10)(i++;strval[i]=valO+48;break;)}for(j=0;j<=i;j++)〃倒置(pval[jj=strval[i-j];ヘ〇';pval[j]ヘ〇';)d)請編寫一個C函數(shù),該函數(shù)將一個字符串逆序。voidAntitoneValue(char*father,char*child)(inti;charsource1100];intj=0;while(father[j]) 〃放入source,5為長度(source[j]=father[j];j++;if(j>99)(return;))source[j]=ヘ〇’;for(i=0;i<j;i++)(childfi] = source|j-i-l]; 〃反序)child[i] = W;)e)請編寫ー個C函數(shù),該函數(shù)在給定的內存區(qū)域搜索給定的字符,并返回該字符所在位置索引值。intsearch(char*cpSource,intn,charch)〃起始地址,搜索長度,目標字符(inti;for(i=0;i<n&&*(cpSource+i)!=ch;++i);returni;}f)請編寫ー個C函數(shù),該函數(shù)在ー個字符串中找到可能的最長的子字符串,該字符串是由同一字符組成的。intChildString(char*p)〃自己寫(Char*q=p;intstringlen=O,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++;)else|if(len>maxlen) 〃統(tǒng)計最大子串長度(maxlen=len+l;len=0;)else{len=0;}i++;j++;returnmaxlen;)給出演示上述函數(shù)功能的一個簡単程序,并請編寫對應的Makefile文件.我們需要編寫ー個圖形相關的應用程序,需要處理大量圖形(Shape)信息,圖形有矩形(Rectangle),正方形(Square),圓形(Circle)等種類,應用需要計算這些圖形的面積,并且可能需要在某個設備上進行顯示(使用在標準輸出上打印信息的方式做為示意)。a)請用面向對象的方法對以上應用進行設計,編寫可能需要的類b)請給出實現(xiàn)以上應用功能的示例性代碼,從某處獲取圖形信息,并且進行計算和繪制c)如果你的Square繼承自Rectangle,請給出理山,如果不是,請給出理由,并且請比較兩種方式的優(yōu)劣d)請問你所編寫的類,在如下代碼中會有何表現(xiàn),請解釋voidtest_rectangle_area(Rectangle&r){r.set_width(10);r.set_height(15);assert(r.area()==150);.假設現(xiàn)有一個單向的鏈表,但是只知道只有一個指向該節(jié)點的指針p,并且假設這個節(jié)點不是尾節(jié)點,試編程實現(xiàn)刪除此節(jié)點參考:將下一個節(jié)點的內容復制到本節(jié)點上,然后刪除下ー個節(jié)點;.寫ー個程序,把ー個100以內的自然數(shù)分解因數(shù)。(自然數(shù)分解因數(shù)就是將一個自然數(shù)分解為幾個素數(shù)的乘積,提示,由于該數(shù)不是很大,所以可以將質數(shù)保存在數(shù)組中,以加快計算速度).編寫ー個Identify的分配、釋放的函數(shù),為1-10000之間的自然數(shù)。.分別實現(xiàn)itoa和atoi..Considerthefollowingcode:#include<stdio.h>#include<string.h>intmain(intargc,char*argv[]){inti=1;charbuf[4];strcpy(buf,nAAAAn);printf(',%d\n,\i);return0;Whencompiledandexecutedonx86,whydoesthisprogramusuallynotoutputwhattheprogrammerintended?在x86上為什么不能得到預期結果NameseveralwaysinwhichthesecurityproblemthatcausesthisprogramnottooutputwhattheprogrammerintendedcanbepreventedWITHOUTchangingthecode.參考:第一個問題:32位情況:x86下,棧方向向上生長.在main的棧中,先分配i空間(4byte),然后分配4個字節(jié)的buf(地址在i的上面,比i小).strcpy越界,用0把buf開始的第4(0開始)個字節(jié)覆蓋掉了.而x86是LSB排列順序,所以真好覆蓋了i的內個數(shù)字1.所以顯示出數(shù)字〇.16位情況同樣分析即可.第2問?19.intw=l,x=2,y=3,z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<2)?m:z;printf("m=%d",m);說出結果答案:1.說出結果 ???#include<stdio.h>main(){FILE*fp;inti,a[4]={l,2t3,4),b;fp=fopen("data.dar‘Jwb");//這里幫忙解釋一下for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),l,fp);〃這里也幫忙看一下fclose(fp);fp=fopen(,'data.datn,,,rbM);fseek(fp,-2L*sizeof(int),SEEK_END)ル還有這里fread(&b,sizeof(int),1,fp),這里還有也看一下fclose(fp);printf(',b=%d\nn,b);).有雙向循環(huán)鏈表結點:(華為面試題)typedefstructnode(intdate;structnode*front,*next;}_Node;看兩個雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請寫ー函數(shù)將兩上鏈表中date值相同的結點刪除參考算法:.取出A的ー個元素d.收集B中有相同元素d的結點到垃圾箱,并從B里刪除.收集A中有相同元素d的結點到垃圾箱,并從A里刪除.刪除垃圾箱中的所有元素.A鏈的指針指向下ー個.重復1?5,直到A鏈循環(huán)到頭了注意的是第3步,在2步執(zhí)行后垃圾箱不為空時オ執(zhí)行。上述算法還可以做一點點優(yōu)化:1.加入兩個變量cA,cB,分別記錄當前A中和B中的元素個數(shù)每次從較長者中取出ー個元素來,先從較小者中找起若沒有,則不必在較長者中浪費時間了#include<iostream.h>?structNODE(intdate;NODE*front,*next;1;voidredel(NODE*&ahead,NODE*&bhead){intboy=0;NODE*pa二ahead,*pb二bhead,*paa,*paaa,*paaaa,*pbb;while(pa->next!=ahead)intboys=pa->date;〃取pa中一個值paaaa=pa;paa=pa;pb=bhead;while(pb->next!=bhead){if(boys==pb->date)〃如果pa,pb中有值相同{cout?endl;cout?"delete B:n?paa->date?n "if(pb==bhead){boy=l;pb->front->next=pb->next;pb->next->front=pb->front;bhead=bhead->next;pbb=pb;pb=pb->next;deletepbb;boy=l;pb->front->next=pb->next;pb->next->front=pb->front;pbb=pb;pb=pb->next;deletepbb;})elsepb=pb->next;}while(paa->next!=ahead &&boy==1){if(paa->date==boys)!cout?MdeleteA:n?paa->date?Hif(paa=pa){pa=pa->next;ahead=pa;paa->front->next=paa->next;paa->next->front=paa->front;paaa=paa;paa=paa->next;deletepaaa;)else{paa->front->next=paa->next;paa->next->front=paa->front;paaa=paa;paa=paa->next;deletepaaa;elsepaa=paa->next;)}boy=0;if(paaaa=pa)pa=pa->next;)cout?endl;}intmain()(NODE*A,*pHeadA,*B,*pHeadB;A=newNODE;B=newNODE;pHeadA=A;pHeadB=B;for(inti=l;i<21;++i) 〃生成鏈表A,并賦初值!(A->date=i;A->next=newNODE;A->next->front=A;A=A->next;)A=A->front;deleteA->next;A->next=pHeadA;pHeadA->front=A;for(inti=l;i<33;i+=2)〃生成鏈表B,并賦初值!(B->date=i;B->next=newNODE;B->next->front=B;B=B->next;}B=B->front;deleteB->next;B->next=pHeadB;pHeadB->front=B;redel(pHeadA,pHeadB);〃調用函數(shù)刪除相同結點!}22.char*GetStr()(char*tmp;tmp=n123nreturntmp;}voidmain()(printf("%s",GetStrO);}會輸出123嗎?123創(chuàng)建在堆上還是棧上呢?123的空間是什么時候釋放的?參考一:"123"是常量字符串,存儲在全局變量區(qū),和靜態(tài)變量一起。即不在堆,也不在棧在程序結束時け動釋放23.1)字符指針、浮點數(shù)指針、以及函數(shù)指針這三種類型的變量哪個占用的內存最大?為什么?答案:指針變量也占用內存單元,而且所有指針變量占用內存單元的數(shù)量都是相同的。就是說,不管是指向何種對象的指針變量,它們占用內存的字節(jié)數(shù)都是ー樣的,并且要足夠把程序中所能用到的最大地址表示出來(通常是ー個機器字長)。2)類ClassB從ClassA派生,那么ClassA*a=newClassB(…);試問該表達是否合法?為什么?答案:派生類的指針指向基類的對象是錯誤的,不能通過編譯的;基類的指針可以指向派生類的對象,調用派生類的函數(shù)雞是動物,沒錯。(動物的指針指向雞的實例)雞可以執(zhí)行所有動物都具有的方法,例如“死亡”反過來,動物一定是雞嗎?(雞的指針指向動物或者動物的某個派生類的實例)動物都能執(zhí)行雞的某個方法嗎?比如說“下蛋”?3)如果ClassA中定義并實現(xiàn)虛函數(shù)intfunc(void),ClassB中也實現(xiàn)該函數(shù),那么上述變量a->func()將調用哪個類里面的函數(shù)?如果intfunc(void)不是虛函數(shù),情況又如何?為什么?答案:第一問調用的是B的。第二問調用A的。虛函數(shù)的ー個典型應用,虛函數(shù)只能借助于指針或者引用來達到多態(tài)的效果如果沒有定義成虛函數(shù):一ーclassA{public:voidprint(){coutvv'ThisisA"vvendl;}};classB:publicA{public:voidprint(){cout?''ThisisBM?endl;}intmain(){〃為了在以后便于區(qū)分,我這段main。代碼叫做main1Aa;Bb;A*pl=&a;A*p2=&b;pl->print();p2->print();)結果是兩個ThisisA如果定義成虛函數(shù): classA{public:virtualvoidprint(){coutv<FhisisA”vvendl;}〃現(xiàn)在成了虛函數(shù)了};classB:publicA{public:voidprint(){coutvv”ThisisB”vvendl;}〃這里不需要在前面加上關鍵字virtual?只需在把基類的成員函數(shù)設為virtual,其派生類的相應的函數(shù)也會自動變?yōu)樘摵瘮?shù));再運行main輸出的結果就是ThisisA和ThisisB測試:4)char**p,a[16][8];問:p=a是否會導致程序在以后出現(xiàn)問題?為什么?參考:這個不會導致出現(xiàn)問題,但是要注意p的使用,如a[l][2]等價的為*(*8+1)+2)而不是?爐+11),會的,這樣會出現(xiàn)編譯錯誤正確的是:chara[5][5];char(*p)[5];p=a;如下所述的ifelse和switch語句哪個的效率髙?為什么?5)在同?個進程中,イ模塊是否可以通過指針操作破壞其它模塊的內存,為什么?(華為)6)應用程序在運行時的內存包括代碼區(qū)和數(shù)據(jù)區(qū),其中數(shù)據(jù)區(qū)又包括哪些部分?參考:對于ー個進程的內存空間而言,可以在邏輯上分成3個部份:代碼區(qū),靜態(tài)數(shù)據(jù)區(qū)和動態(tài)數(shù)據(jù)區(qū)。動態(tài)數(shù)據(jù)區(qū)一般就是“堆棧”。棧是ー種線性結構,堆是一種鏈式結構。進程的每個線程都有私有的“棧”。全局變量和靜態(tài)變量分配在靜態(tài)數(shù)據(jù)區(qū),本地變量分配在動態(tài)數(shù)據(jù)區(qū),即堆棧中。程序通過堆棧的基地址和偏移量來訪問本地變量。.Assignment2:PictureProcessingUseC++,Java,orsimilarlanguagesor/andanymiddlewaresuchasEJBandJ2EEtoprocessapicturewithahighresolution(3MegaPixelsforexample).Usesomemethodologiestodegradetheresolutionofthepicturetomakeitquickerforbrowsing.Thendividethedegradedpictureinto9sectorsequally.Clickanyofthe9sectorswillresultadetailedpictureforthissectorwiththesameresolutionasthatoftheoriginalpicture.Thisassignmentisdesignedforyoutodemonstrateyourabilitytohandlepictures..用《,>>」,&實現(xiàn)ー個WORD(2個字節(jié))的高低位交換!!intmain()(unsigned short a = OxABCD;TOC\o"1-5"\h\zunsigned short b ;unsigned short c ,d;b = (a ? 8)&OxffOO;c = (a ? 8)&0x00ff;d = b Ic;printf(,,\n%x,,,b);printf(,,\n%x,,,c);printf("\n%x”,d);return0;}結果是CDAB2倆個字節(jié)是16位前八位為高位后八位為低位然后結合.要開辟P1,P2,P3,P4內存來做緩沖,大小自定,但這四個緩沖的大小要一樣,并且是連續(xù)的.有一浮點型數(shù)組A,用C語言寫ー函數(shù)實現(xiàn)對浮點數(shù)組A進行降序排序,并輸出結果,要求要以數(shù)組A作為函數(shù)的入口.(建議用冒泡排序法)voidBubbleSort(doublearr[],intn){inti,j;intexchange=I; 〃交換標志for(i=l;ivn;i++){〃最多做n?l趟排序exchangedJ 〃本趟排序開始前,交換標志應為假for(j=n-l;j>=i;j-) 〃對當前無序區(qū)R[i..n]自下向上掃描if(arr[j+l]>arr(j]){〃交換記錄arr[0]=arr[j+1]; 〃R[0]不是哨兵,僅做暫存単元arr[j+l]=arr[j];arr[j]=arr[0];exchange=l;〃發(fā)生了交換,故將交換標志置為真if(!exchange)〃本趟排序未發(fā)生交換,提前終止算法return;} 〃endfor(外循環(huán))).找錯:#include<string.h>#include<stdio.h>classBase{private:char*name;public:Base(char*className){name=newchar[strlen(className)];strcpy(name,className);)?Base。{deletename;}char*copyName(){charnewname[256];strcpy(newname,name);returnnewname;|char*getName(){returnname;}staticvoidprint(Basebase){printf("name:%s\n",);));classSubclass:publicBase{public:Subclass(char*className):Base(className)(1);intmain()(Base*pBase=newSubclass(,,testn);Base::print(*pBase);printf("name:%s\nM,pBase->getName());printf("newname:%s\n",pBase->copyName());return0;.編寫一個函數(shù),函數(shù)接收ー個字符串,是由十六進制數(shù)組成的ー組字符串,函數(shù)的功能是把接到的這組字符串轉換成十進制數(shù)字,并將十進制數(shù)字返回.答案:BOOLHexToDec(LPCTSTRshex,int&idee)(inti,mid;intlen=lstrlen(shex);if(len>8)returnFALSE;mid=0;idee=0;for(i=0;i<len;i++)(if(shex[iJ>='0'&&shex[i]<=,9')mid=shex[i]-O;else if( shex[i]>='a,&&shex[i]<='f )mid = shex[i] -'a' +10;else if( shex[i]>=A,&&shex[i]<='F')mid = shex[i] -'A,+10;elsereturnFALSE;mid?=((len-i-l)?2);/Z移位表示變?yōu)?的n次方倍idee=idc+mid;returnTRUE;.編寫ー個函數(shù)將一條字符串分成兩部分,將前半部分按ASCH碼升序排序,后半部分不變,(如果字符串是奇數(shù)則中間的字符不變,)最后再將前后兩部分交換,然后將該字符串輸出,測試字符串“ADZDDJKJFIEJHGI”.找錯Voidtest1(){charstring[10];char*strl="0123456789";strcpy(string,strl);}Voidtest2(){charstring[10],strl[10];for(I=0;I<10;I++){strl[i]=ar;}strcpy(string,strl);1’Voidtest3(char*strl){charstring!10];if(strlen(strl)<=10){strcpy(string,strl);}.找錯#defineMAX.SRM256DSNget_SRM_no(){staticintSRM_no;intI;for(I=0;I{SRM__no%=MAX_SRM;if(MY_SRM.state==IDLE){break;}}if(I>=MAX_SRM)return(NULL.SRM);elsereturnSRM_no;}. 寫出程序運行結果intsum(inta){autointc=0;staticintb=3;c+=l;b+=2;retum(a+b+C);レvoidmain(){intI;inta=2;for(I=0;I<5;l++){primf("%dj,sum(a));}.intfunc(inta){intb;switch(a){case1:30;20;16;default:0)returnb;)則func(l)=?inta(3];a[0]=0;a[l]=l;a[2]=2;int*p,*q;p=a;q=&a[2];則a[q-p]=?定義int**a[3][4],則變量占有的內存空間為:編寫ー個函數(shù),要求輸入年月日時分秒,輸出該年月日時分秒的下一秒。如輸入2004年12月31日23時59分59秒,則輸出2005年1月1日〇時〇分〇秒。寫ー個函數(shù),判斷ー個int型的整數(shù)是否是2的基,即是否可以表示成2八X的形式(不可以用循環(huán)) 我只知道是用遞推,大概寫了一下,如下:intIsTwoPow(ints){if(s==l)retumFALSE;s=s?l;if(s>1)IsTwoPow(s);return(s==l)?TRUE:FALSE;〃大概是這個意思,但是這一句似乎不該這么返回!39A,B從ー堆玻璃球(共100個)里向外拿球,規(guī)則如下:(DA先拿,然后一人一次交替著拿;(2)每次只能拿1個或2個或4個;(3)誰拿最后ー個球,誰就是最后的失敗者;問A,B誰將是失敗者?寫出你的判斷步驟。.已知;無序數(shù)組,折半查找,各元素值唯一。函數(shù)原型是;Binary_Seach(intarraylJ,intiValue,intiCount)array是數(shù)組,在里面用折半查找的方法找等于iValue的值,找到返冋1否則0,iCount是元.統(tǒng)計ー個字符串中字符出現(xiàn)的次數(shù).100位以上的超大整數(shù)的加法(主要考慮數(shù)據(jù)結構和加法的實現(xiàn)).對如下電文:"CASTCASTSATATATASA”給出Huffman編碼。int(*(*f)(int,int))(int)表示什么含義?.x=x+l,x+=l,x++?為這三個語句的效率排序。并說明為什么。.中綴表達式A-(B+C/D)*E的后綴形式是什么?47.structS1{charc;inti;};sizeof(Sl)=?classX{public:X();virtual-X();voidmyMemberFunc();staticvoidmyStaticFunc();virtualvoidmyVirtualFunc();private:inti;char*pstr;chara;}sizeof(X)=?.找出兩個字符串中最大子字符串,如“abractyeyt'/dgdsaeactyey”的最大子串為“actyet".有一百個整數(shù),其中有負數(shù),找出連續(xù)三個數(shù)之和最大的部分..寫一程序實現(xiàn)快速排序,假設數(shù)據(jù)輸入為ー文件快速算法描述如下AlgorithmPartitionInput:sequenceaO,...,an-1withnelementsOutput:permutationofthesequencesuchthatallelementsaO,...,ajarelessthanorequaltoallelementsai,...,an-1(i>j)Method:choosetheelementinthemiddleofthesequenceascomparisonelementxleti=0andj=n-1whileijsearchthefirstelementaiwhichisgreaterthanorequaltoxsearchthelastelementajwhichislessthanorequaltoxifijexchangeaiandajleti=i+landj=j-1Afterpartitioningthesequence,Quicksorttreatsthetwopartsrecursivelybythesameprocedure.Therecursionendswheneverapartconsistsofoneelementonly..寫ー算法檢測單向鏈表中是否存在環(huán)(whetherthereisaloopinalinklist),要求算法復雜度(Algorithm^complexity是O(n))并只使用常數(shù)空間(spaceisO(c)).注意,你只知道一個指向單向鏈表頭的指針。鏈表的長度是不定的,而且環(huán)出現(xiàn)的地方也是不定的,環(huán)有可能在頭,有可能在中間。而且要求是檢測,不能破壞環(huán)的結構.(MOTO)答:用兩個指針來遍歷這個單向鏈表,第一個指針pl,毎次走ー步;第二個指針P2,每次走兩步;當P2指針追上pl的時候,就表明鏈表當中有環(huán)路了。inttestLinkRing(Link*head){Link*t1=head,*t2=head;while(t1->ncxt&&t2->next){tl=tl->;next;if(NULL==(t2=t2->next->next))return0J〃無環(huán)if(tl==t2)return1;)return0;)如果要定位環(huán)路在鏈表當中的開始點發(fā)現(xiàn)p2和pl市合,確定了單向鏈表有環(huán)路了。接下來,讓p2回到鏈表的頭部,電新走,P1也繼續(xù)走,每次步長都走1,那么當pl和p2再次相遇的時候,就是環(huán)路的入口了。.設下列函數(shù)已經(jīng)通過了調試boolSort_Array(ArrayType*Pinputarray,ArrayType*Poutarray);該函數(shù)在內存中排序,能把字節(jié)數(shù)最大為100M字節(jié)的ArrayType類型的數(shù)組排序。其中ArrayType是一個預定義的數(shù)組類型(細節(jié)無關緊要),Pinputarray,Poutarray分別為排序前的指針和排序后的指針。請用c語言的偽碼風格設計ー個算法,他調用上面給岀的函數(shù)完成下列從輸入到輸出的任務輸入:排序前的大文件,名稱為char*pinoutfilename,其內容為用分號分隔的ArrayType類型的數(shù)組元素,可裝滿4個100M字節(jié)的數(shù)組。臉出:排序后的大文件char*poutoutfilename。.用最有效率的方法算出2乘以8等於幾?移位.選擇題.錯誤的轉義字符是(a)A.ヽ091'BAYCAO'DA"Strings="\""; //s="charc=V;//c='、是轉移字符.若數(shù)組名作實參而指針變量作形參,函數(shù)調用實參傳給形參的是(d)A.數(shù)組的長度B.數(shù)組第一個元素的值C.數(shù)組所有元素的值D.數(shù)組第一個元素的地址.變量的指針含意是指變量的(b)A.值B.地址C.存儲D.名字5.某文件中定義的靜態(tài)全局變量(或稱靜態(tài)外部變量)其作用域是(d)??A.只限某個函數(shù)B.本文件C.跨文件D.不限制作用域靜態(tài)全局變量則限制了其作用域,即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。山于靜態(tài)全局變量的作用域局限于ー個源文件內,只能為該源文件內的函數(shù)公用,因此可以避免在其它源文件中引起錯誤。55..解二次方程:a*x*x+b*x+cintQuadratic(doublea,doubleb,doublec,double&x1,double&x2);返回值:解的個數(shù).最大公約數(shù)DWORDDivisor(DWORDdwFirst,DWORDdwSecond);返回值:最大公約數(shù).根據(jù)蒙特卡洛算法計算圓周率doublePI(DOWRDdwCount/?測試次數(shù)*ハ;返回值:PI.無符號整數(shù)乘法,乘數(shù)為32bit,結果為64bit提示:32bit整數(shù)分解為16bit相乘voidMultiply(DWORDdwFirst,DWORDdwSecond,DWORD&dwHigh,DWORD&dwLower);.鏈表排序(從小到大)節(jié)點定義為:structNode{intnValue;structNode*pNext;};最后一個節(jié)點的pNext=NULL.Node*SortChain(Node*pHead);返回值:鏈表頭冒泡排序,插入排序等。為避免繁瑣可以不交換指針,只交換值:也可以將值存入數(shù)組,對數(shù)組排序,再存入鏈表中。改錯并說明原因file:l.cinta[10]={0};file:2.cintmain(){externint*a;printf("%d\nM,a[0]);return0;}1#include"filename.h”和#include〈filename.h>的區(qū)另リ?對于#include<filename.h>編譯器從標準庫開始搜索filename.h:對于#include“filename.h”編譯器從用戶工作路徑開始搜索filename.h2頭文件的作用是什么?ー、通過頭文件來調用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只要向用戶提供頭文件和二進制的庫即可。用戶只需耍按照頭文件中的接口聲明來調用庫功能,而不必關心接口怎么實現(xiàn)的。編譯器會從庫中提取相應的代碼。二、頭文件能加強類型安全檢査。如果某個接口被實現(xiàn)或被使用時.,其方式與頭文件中的聲明不一致,編譯器就會指出錯誤,這一簡單的規(guī)則能大大減輕程序員調試、改錯的負擔。3C++函數(shù)中值的傳遞方式有哪幾種?C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。4內存的分配方式的分配方式有幾種?答:ー、從靜態(tài)存儲區(qū)域分配。內存在程序編譯的時候就已經(jīng)分配好,這塊內存在程序的整個運行期間都存在。例如全局變量。二、在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結束時這些存儲單元自動被釋放。棧內存分配運算內置于處理器的指令集中,效率很高,但是分配的內存容量有限。三、從堆ヒ分配,亦稱動態(tài)內存分配。程序在運行的時候用malloc或new申請任意多少的內存,程序員自己負責在何時用free或delete釋放內存。動態(tài)內存的生存期山我們決定,使用非常靈活,但問題也最多。5實現(xiàn)雙向鏈表刪除ー個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數(shù);〃刪除操作StatusListDelete_DuL(DuLinkList&L,inti,ElemType&e){if(!(p=GetElemP.DuL(L,i)))〃此處得到i位置的節(jié)點指針,如果有需要也得寫出具體函數(shù)實現(xiàn)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)maHoc(sizeof(DuLNode))))〃生成新節(jié)點returnERROR;s->data=e;s->prior=p;p->next->prior=s;p->next=s;s->next=p->next->next;returnOK;6寫ー個函數(shù),將其中的\t都轉換成4個空格。7Windows程序的入口是哪里?寫HlWindows消息機制的流程.8如何定義和實現(xiàn)ー個類的成員函數(shù)為回調函數(shù)?C++里面是不是所有的動作都是main。引起的?如果不是,請舉例.比如全局變量的初始化,就不是由main函數(shù)引起的舉例:classA{};Aa;//a的構造函數(shù)限執(zhí)行intmain(){)C++里面如何聲明constvoidf(void)函數(shù)為C程序中的庫函數(shù)(華為)11下列哪兩個是等同的intb;Aconstint*a=&b;Bconst*inta=&b;Cconstint*consta=&b;Dintconst*consta=&b;12內聯(lián)函數(shù)在編譯時是否做參數(shù)類型檢查內聯(lián)函數(shù)要做參數(shù)類型檢查,這是內聯(lián)函數(shù)跟宏相比的優(yōu)勢13三個float:a,b,c問值(a+b)+c==(b+a)+c (a+b)+c==(a+c)+b兩者都不行。在比較float或double時,不能簡單地比較。由于計算誤差,相等的概率很低。應判斷兩數(shù)之差是否落在區(qū)間(?e,e)內。這個e應比浮點數(shù)的精度大一個數(shù)量級。14把一個鏈表反向填空(lucent)voidreverse(test*head)(test*pe=head;test*ps=head->next;while(ps){pe->next=ps->next;ps->next=head;head=ps;ps=pe->next;}}從第一個元素開始,ps指向他,將他(ps)指向頭節(jié)點(ps->next=head),將ps設為頭節(jié)點(head=ps;)操作下ー個元素(ps=pe->next;)等于是依次將每個元素翻到原頭節(jié)點前面。15設id?個重采樣系統(tǒng),說明如何anti-alias16某個程序在ー個嵌入式系統(tǒng)(200M的CPU,50M的SDRAM)中已經(jīng)最化了,換到另ー個系統(tǒng)(300M的CPU,50M的SDRAM)中運行,還需要優(yōu)化嗎?.下面哪種排序法對12354最快aquicksortb.bublesortc.mergesort.哪種結構,平均來講,獲取ー個值最快binarytreehashtablestack19請問C++的類和C里面的struct有什么區(qū)別?class屮默認的成員訪問權限是private的,而struct中則是public的20請講ー講析構函數(shù)和虛函數(shù)的用法和作用?析構函數(shù)是特殊的類成員函數(shù),它沒有返回類型,沒有參數(shù),不能隨意調用,也沒有堂載,只有在類對象的生命期結束的時候,由系統(tǒng)自動調用。有適放內存空間的做用。虛函數(shù)是C++多態(tài)的?種表現(xiàn),使用虛函數(shù),我們可以靈活的進行動態(tài)綁定,當然是以一定的開銷為代價。21全局變量和局部變量有什么區(qū)別?實怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?生命周期不同:全局變量隨主程序創(chuàng)建和創(chuàng)建,隨主程序銷毀而銷毀局部變量在局部函數(shù)內部,甚至局部循環(huán)體等內部存在,退出就不存在;內存中分配在全局數(shù)據(jù)區(qū)使用方式不同:通過聲明后全局變量程序的各個部分都可以用到局部變量只能在局部使用:分配在棧區(qū)操作系統(tǒng)和編譯器通過內存分配的位置來知道的,全局變量分配在全局數(shù)據(jù)段并且在程序開始運行的時候被加載。局部變量則分配在堆棧里面。22ー些寄存器的題目,主要是尋址和內存管理等ー些知識。238086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?24多態(tài)。overload和override的區(qū)別。overload是重載,重載是ー種參數(shù)多態(tài)機制,即代碼通過參數(shù)的類型或個數(shù)不同而實現(xiàn)的多態(tài)機制。是ー種靜態(tài)的綁定機制(在編譯時己經(jīng)知道具體執(zhí)行的是哪個代碼段)。override是覆蓋。覆蓋是ー種動態(tài)綁定的多態(tài)機制。即在父類和子類中同名元素(如成員函數(shù))有不同的實現(xiàn)代碼。執(zhí)行的是哪個代碼是根據(jù)運行時實際情況而定的。重載Overload特點publicboolwithdraw(doubleamt,stringname)publicdoublewithdraw(doubleamt)1、方法名必須相同2、參數(shù)列表必須不相同3、返回值類型可以不相同注意:override存在于繼繼承的關系類中。覆寫Override特點(三相同):publicoverrideboolwithdraw(...)1、方法名相同2、參數(shù)列表相同3、返回值類型相同注意:存在于同?類中,但是只有虛方法和抽象方法才能被覆寫.?Sony筆試題>>25.完成下列程序#include<stdio.h>#defineN8intmain(){inti;intj;intk;return0;26完成程序,實現(xiàn)對數(shù)組的降序排序#include<stdio.h>TOC\o"1-5"\h\zvoidsort( );intmain()(intarray[卜{45,56,76,234,1,34,23,2,3);〃數(shù)字任〃意給出sort( );return0;)voidsort( )27費波那其數(shù)列,1,L2,3,5……編寫程序求第十項??梢杂眠f歸,也可以用其他方法,但要說明你選擇的理由。#include<stdio.h>intPheponatch(int);intmain(){printf("The10this%du,Pheponatch(10));return0;}intPheponatch(intN))28下列程序運行時會崩潰,請找出錯誤并改正,并且說明原因。#include<stdio.h>#include<malloc.h>typedefstruct{TNode*left;TNode*right;intvalue;}TNode;TNode*root=NULL;voidappend(intN);intmain(){append(63);append(45);append(32);append(77);append(96);append(21);append(l7);//Again,數(shù)字任意給出}voidappend(intN){TNode*NewNode=(TNode*)malloc(sizeof(TNode));NewNode->value=N;if(root==NULL){root=NewNode;return;)else{TNode*temp;temp=root;while((N>=temp.value&&temp.left!=NULL)II(N<temp.value&&temp,right!=NULL))(while(N>=temp.value&&temp.left!=NULL)temp=temp.left;while(N<temp.value&&temp.right!=NULL)temp=temp.right;}if(N>=temp.value)temp.left=NewNode;elsetemp.right=NewNode;return;}}.AclassBnetworkontheinternethasasubnetmaskof,whatisthemaximumnumberofhostspersubnet.■B類地址的子網(wǎng)掩碼是,問每個子網(wǎng)內的最大主機數(shù)子網(wǎng)掩碼與iP相與得到子網(wǎng)號,255.255.2400化成二進制11111111.11111111.11110000.00000000,即有12個”〇”,2A12-2=4096-2=4094a.240b.255c.4094d.6553.Whatisthedifference:betweeno(logn)ando(lognA2),wherebothlogarithems(對數(shù))havebase2.a.o(lognA2)isbiggerb.o(logn)isbiggerc.nodifference.Foraclasswhatwouldhappenifwecallaclass'sconstructorfromwiththesameclass'pilationerrorb.linkingerrorc.stackoverflowd.noneoftheabove.unew"inC++isa:A.libraryfunctionlikemallocincB.keywordC.operatorD.noneoftheabovemalloc是庫函數(shù),不在編譯器控制范圍之內;new是運算符,在編譯器控制范圍之內。調用malloc時,從堆中申請內存;調用new時,從堆中申請內存并為內存調用構造函數(shù)。.Whichofthefollowinginformationisnotcontainedinaninode.a.fileownerb.filesizec.filenamed.diskaddress.What'sthenumberofcomparisonsintheworstcasetomergetwosortedlistscontainingnelementseach.a.2n b.2n-l c.2n+l d.2n-2.TimecomplexityofnalgorithmT(n),wherenistheinputsize,isT(n)=T(n-l)+l/nifn>lotherwise1theorderofthisalgorithmis.a.log(n)b.n c.nA2 d.nAn.ThenumberofVsinthebinaryrepresentationof3*4096+15*256+5*16+3are.

a.8b.9c.10d.12a.8b.9c.10d.12.設計函數(shù)intatoi(char*s)?.inti=(j=4,k=8,1=16,m=32);printf("%d”,i);輸出是多少?.解釋局部變量、全局變量和靜態(tài)變量的含義。.解釋堆和棧的區(qū)別。在傳統(tǒng)的C中堆和棧實際是ー塊物理內存,堆主要用來動態(tài)分配內存,從堆棧內存的低端向上分配;而棧主要用來傳遞函數(shù)參數(shù)、返冋值和局部參數(shù)內存分配,是從堆棧內存的高端向下分配,俗稱壓棧和出棧;堆是動態(tài)分配,比如用new,malloc分配,需要手工釋放,不然會導致memoryleak,棧是靜態(tài)分配,比如函數(shù)調用是需要分配堆棧,但堆棧能自動釋放..論述含參數(shù)的宏與函數(shù)的優(yōu)缺點。宏是編譯期的,函數(shù)是運行期的:宏不是實體,而函數(shù)是ー個可尋址的實體:宏只是編譯期替換,在程序里毎遇到S(a,b),就用a*b代替,a和b兩個實體并沒有由宏實際產(chǎn)生,而函數(shù)S會在棧屮定義兩個對象a和b。宏沒有生存期、作用域之類的概念,而函數(shù)就有。.以下三條輸出語句分別輸出什么?《易]charstrl[] =f'abc";charstr2[] ="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5="abcM;constchar*str6="abc";cout?boolalpha?(strl==str2)?endl;/Z輸出什么?cout?boolalpha?(str3==str4)?endl;/Z輸出什么?cout?boolalpha?(str5==str6)?endl;/Z輸出什么?答:分別輸出false,false,true。strl和str2都是字符數(shù)組,每個都有其自己的存儲區(qū),它們的值則是各存儲區(qū)首地址,不等;str3和str4同上,只是按const語義,它們所指向的數(shù)據(jù)區(qū)不能修改。str5和str6并非數(shù)組而是字符指針,并不分配存儲區(qū),其后的“abc”以常量形式存于靜態(tài)數(shù)據(jù)區(qū),而它們自己僅是指向該區(qū)首地址的指針,相等。.非C++內建型別A和B,在哪幾種情況下B能隱式轉化為A?[C++中等]答:classB:publicA{ }〃B公有繼承自A,可以是間接繼承的classB{operatorA();}//B實現(xiàn)了隱式轉化為A的轉化classA{A(constB&);}//A實現(xiàn)了non-explicit的參數(shù)為B(可以有其他帶默認值的參數(shù))構造函數(shù)A&operator(constA&);//賦值操作,雖不是正宗的隱式類型轉換,但也可以勉強算ー個.以下代碼中的兩個sizeof用法有問題嗎?[C易]voidUpperCase(charstr[])//將str中的小寫字母箱換成大寫字母(for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)if(*a'<=str[i]&&str[i]<=,z,)str[i]-=('a'?'A');}charstr[]="aBcDe',;cout?Mstr字符長度為:"vvsizeof(str)/sizeof(str(0])?endl;UpperCase(str);cout?str?endl;答:函數(shù)內的sizeof有問題。根據(jù)語法,sizeof如用于數(shù)組,只能測出靜態(tài)數(shù)組的大小,無法檢測動態(tài)分配的或外部數(shù)組大小。函數(shù)外的str是ー個靜態(tài)定義的數(shù)組,因此其大小為6,函數(shù)內的str實際只是一個指向字符串的指針,沒有任何額外的與數(shù)組相關的信息,因此sizeof作用于上只將其當指針看,ー個指針為4個字節(jié),因此返回4。.以下代碼有什么問題?[C難]voidchar2Hex(charc)//將字符以16進制表示(charch=c/0xl0+if(ch>'9')ch+=CA'-V-l);charcl=c%0xl0+'O';if(cl>'9')cl+=('Aゆ1);cout?ch?cl?'}charstr[]="Ilove中國”;for(size_ti=0;i<strlen(str);++i)char2Hex(str[i]);cout?endl;.以下代碼有什么問題?[C++易]structTest(Test(int){}Test(){)voidfun(){}};voidmain(void){Testa(l);a.fun();Testb();b.fun();}答:變量b定義出錯。按默認構造函數(shù)定義對象,不需要加括號。.以下代碼有什么問題?[C++易]cout?(true?l:"l")?endl;答:三元表達式“?:”問號后面的兩個操作數(shù)必須為同一類型。8.以下代碼能夠編譯通過嗎,為什么?[C++易]unsignedintconstsizel=2;charstrl[sizel];unsignedinttemp=0;cin?temp;unsignedintconstsize2=temp;charstr2[size2];答:str2定義出錯,size2非編譯器期間常量,而數(shù)組定義要求長度必須為編譯期常量。48.以下代碼中的輸出語句輸出。嗎,為什么?[C++易]structCLS{intm_i;CLS(inti):m_i(i){}CLS()(CLS(O);)};CLSobj;cout?obj.m_i?endl;答:不能。た默認構造函數(shù)內部再調用帶參的構造函數(shù)屬用戶行為而非編譯器行為,亦即僅執(zhí)行函數(shù)調用,而不會執(zhí)行其后的初始化表達式。只有在生成對象時,初始化表達式オ會隨相應的構造函數(shù)一起調用。C++中的空類,默認產(chǎn)生哪些類成員函數(shù)?[C++易]答:classEmptypublic:EmptyO; //缺省構造函數(shù)Empty(constEmpty&); /Z拷貝構造函數(shù)?Empty。; 〃析構函數(shù)Empty&operator=(constEmpty&);/Z賦值運算符Empty*operator&(); /Z取址運算符constEmpty*operator&()const;/Z取址運算符const};.以下兩條輸出語句分別輸出什么?[C++難]floata=l.Of;cout?(int)a?endl;cout?(int&)a?endl;cout?boolalpha?((int)a==(int&)a)?endl;/Z輸出什么?floatb=O.Of;cout?(int)b?endl;cout?(int&)b?endl;cout?boolalpha?((int)b==(int&)b)?endl;/Z輸出什么.以下反向遍歷array數(shù)組的方法有什么錯誤?[STL易]vectorarray;array.push_back(1);array.push_back(2);array.push_back(3);for(vector::size_typei=array.size()-l;i>=0;-i)/Z反冋遍歷array數(shù)組(cout?array[i]?endl;}答:首先數(shù)組定義有誤,應加上類型參數(shù):vector<int>array。其次vector::size」ype被定義為unsignedint,即無符號數(shù),這樣做為循環(huán)變量的i為0時再減1就會變成最大的整數(shù),導致循環(huán)失去控制。.以下代碼有什么問題?[STL易]typedefvectorIntArray;IntArrayarray;array,push_back(1);array.push_back(2);array.push_back(2);array.push_back(3);〃刪除array數(shù)組中所有的2for(IntArray:iteratoritor=array.begin();itor!=array.end();++itor)(if(2==*itor)array.erase(itor);}答:同樣有缺少類型參數(shù)的問題。另外,每次調用“array.erase(itor);”,被刪除元素之后的內容會自動往前移,導致迭代漏項,應在刪除ー項后使itor-,使之從已經(jīng)前移的下ー個元素起繼續(xù)遍歷。.寫ー個函數(shù),完成內存之間的拷貝。[考慮問題是否全面]答:void*mymemcpy(void*dest,constvoid*src,size_tcount)(char*pdest=static_cast<char*>(dest);constchar*psrc=static_cast<constchar*>(src);if(pdest>psrc&&pdest<psrc+cout)能考慮到這種情況就行了for(size_ti=count-l;i!=-l;-i)pdest[i]=psrc[i];}else{fbr(size_ti=0;i<count;++i)pdest[i]=psrc[i];}returndest;}intmain(void){charstrロ="0123456789”;mymemcpy(str+1,str+O,9);cout?str?endl;system("Pause");return0;}54線程與進程的區(qū)別55;請你分別劃劃OSI的七層網(wǎng)絡結構圖,和TCP/IP的五層結構圖?56:請你詳細的解釋一下IP協(xié)議的定義,在哪個層上面,主要有什么作用?TCP與UDP呢?57:請問交換機和路由器分別的實現(xiàn)原理是什么?分別在哪個層次上面實現(xiàn)的?58:請問C++的類和C里面的struct有什么區(qū)別?59:請講ー講析構函數(shù)和虛函數(shù)的用法和作用?60:全局變量和局部變量有什么區(qū)別?實怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?61:一些寄存器的題目,主要是尋址和內存管理等ー些知識。62:8086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?73對于C++中類(class)與結構(struct)的描述正確的為:A,類中的成員默認是private的,當是可以聲明為public,private和protected,結構中定義的成員默認的都是public;B,結構中不允許定義成員函數(shù),當是類中可以定義成員函數(shù);C,結構實例使用malloc()動態(tài)創(chuàng)建,類對象使用new操作符動態(tài)分配內存;D,結構和類對象都必須使用new創(chuàng)建;E,結構中不可以定義虛函數(shù),當是類中可以定義虛函數(shù).F,結構不可以存在繼承關系,當是類可以存在繼承關系.答:A,D,F74,兩個互相獨立的類:ClassA和ClassB,都各自定義了非景泰的公有成員函數(shù)PublicFunc()和非靜態(tài)的私有成員函數(shù)PrivateFunc();現(xiàn)在要在ClassA中增加定義ー個成員函數(shù)ClassA::AdditionalPunction(ClassAa,ClassBb);則可以在AdditionalPunction(ClassAx,ClassBy)的實現(xiàn)部分(函數(shù)功能體內部)出現(xiàn)的合法的表達是最全的是:A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();B,x.PrivateFunc();x.PublicFunc();y.PublicFunc();C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc();D,x.PublicFunc();y.PublicFunc();答:B75,C++程序下列說法正確的有:A,對調用的虛函數(shù)和模板類都進行遲后編譯.B,基類與子類中函數(shù)如果要構成虛函數(shù),除了要求在基類中用virtual聲名,而且必須名字相同且參數(shù)類型相同返回類型相同C,重教的類成員函數(shù)都必須要:或者返回類型不同,或者參數(shù)數(shù)目不同,或者參數(shù)序列的類型不同.D,靜態(tài)成員函數(shù)和內聯(lián)函數(shù)不能是虛函數(shù),友員函數(shù)和構造函數(shù)也不能是虛函數(shù),但是析構函數(shù)可以是虛函數(shù).答:A76,C++中的類與結構的區(qū)別?77,構造函數(shù)和析構函數(shù)是否可以被重載,為什么?78,ー個類的構造函數(shù)和析構函數(shù)什么時候被調用,是否需要手工調用?幾道題目及自做答案熱忱期待高手的答案,我不怕丑!ー天做幾個,把答案貼出來,請高手指正!1#include"fHename.h”和#include〈filename.h>的區(qū)別?答:#inclu加“filename.ビ表明該文件是用戶提供的頭文件,查找該文件時從當前文件目錄開始;#include<filename.h>表明這個文件是ー個工程或標準頭文件,查找過程會檢查預定義的目錄。2頭文件的作用是什么?答:ー、通過頭文件來調用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只要向用戶提供頭文件和二進制的庫即可。用戶只需要按照頭文件中的接口聲明來調用庫功能,而不必關心接口怎么實現(xiàn)的。編譯器會從庫中提取相應的代碼。二、頭文件能加強類型安全檢查。如果某個接口被實現(xiàn)或被使用時,其方式與頭文件中的聲明不一致,編譯器就會指出錯誤,這?簡單的規(guī)則能大大減輕程序員調試、改錯的負擔3C++函數(shù)中值的傳遞方式

溫馨提示

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

評論

0/150

提交評論