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

下載本文檔

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

文檔簡介

表示已有答案表示沒有處理表示答案不確定C++筆試題1.多態(tài)類中的虛函數(shù)表是Compile-Time,還是Run-Time時建立的?答案:虛擬函數(shù)表是在編譯期就建立了,各個虛擬函數(shù)這時被組織成了一個虛擬函數(shù)的入口地址的數(shù)組.而對象的隱藏成員一虛擬函數(shù)表指針是在運行期一也就是構(gòu)造函數(shù)被調(diào)用時進行初始化的,這是實現(xiàn)多態(tài)的關(guān)鍵..main主函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼?(朗訊的一道筆試題)答案:可以,可以用onexit注冊一個函數(shù),它會在main之后執(zhí)行;如果你需要加入一段在main退出后執(zhí)行的代碼,可以使用atexit()函數(shù),注冊一個函數(shù)。語法:4include<stdlib.h>intatexit(void("function")(void));ttinclude<stdlib.h>#include<stdio.h>voidfnl(void),fn2(void),fn3(void),fn4(void);intmain(void)(atexit(fnl);atexit(fr)2);atexit(fn3);atexit(fn4);printf("Thisisexecutedfirst.\n*);}voidfnl()(printf("next.\n");}voidfn2()(printf("executed");}voidfn3()(printf("is");Jvoidfn4()(printf("This");}結(jié)果:Thisisexecutedfirst.Thisisexecutednext..一個父類寫了一^virtual函數(shù),如果子類覆蓋它的函數(shù)不加virtual,也能實現(xiàn)多態(tài)?在子類的空間里,有沒有父類的這個函數(shù),或者父類的私有變量?(華為筆試題)答案:只要基類在定義成員函數(shù)時已經(jīng)聲明了virtue關(guān)鍵'九在派生類實現(xiàn)的時候覆蓋該函數(shù)時,virtue關(guān)罐字可加可不加,不影響多態(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..質(zhì)數(shù)數(shù)列,因為他們與自己前面的Fab...數(shù)列都互質(zhì)給出k,返回第k小的Fab..質(zhì)數(shù).101個硬幣100真、1假,真假區(qū)別在于重量。請用無祛碼天平稱兩次給出真幣重還是假幣重的結(jié)論。.完成字符串拷貝可以使用sprintf、strcpy及memcpy函數(shù),請問這些函數(shù)有什么區(qū)別,你喜歡使用哪個,為什么?答案:這些函數(shù)的區(qū)別在于實現(xiàn)功能以及操作對象不同。strcpy函數(shù)操作的對象是字符串,完成從源字符串到目的字符串的拷貝功能。snprintf函數(shù)操作的對象不限于字符串:雖然目的對象是字符串,但是源對象可以是字符串、也可以是任意基本類型的數(shù)據(jù)。這個函數(shù)主要用來實現(xiàn)(字符串或基本數(shù)據(jù)類型)向字符串的轉(zhuǎn)換功能。如果源對象是字符串,并且指定%s格式符,也可實現(xiàn)字符串拷貝功能。memcpy函數(shù)顧名思義就是內(nèi)存拷貝,實現(xiàn)將一個內(nèi)存塊的內(nèi)容復制到另一個內(nèi)存塊這?功能。內(nèi)存塊山其首地址以及長度確定。程序中出現(xiàn)的實體對象,不論是什么類型,其最終表現(xiàn)就是在內(nèi)存中占據(jù)一席之地(一個內(nèi)存區(qū)間或塊)。因此,memcpy的操作對象不局限于某一類數(shù)據(jù)類型,或者說可適用于任意數(shù)據(jù)類型,只要能給出對象的起始地址和內(nèi)存長度信息、并且對象具有可操作性即可。鑒于memcpy函數(shù)等長拷貝的特點以及數(shù)據(jù)類型代表的物理意義,memcpy函數(shù)通常限于同種類型數(shù)據(jù)或?qū)ο笾g的拷貝,其中當然也包括字符串拷貝以及基本數(shù)據(jù)類型的拷貝.對于字符串拷貝來說,用上述三個函數(shù)都可以實現(xiàn),但是其實現(xiàn)的效率和使用的方便程度不同:strcpy無疑是最合適的選擇:效率高且調(diào)用方便。snprintf要額外指定格式符并且進行格式轉(zhuǎn)化,麻煩且效率不高。memcpy雖然高效,但是需要額外提供拷貝的內(nèi)存長度這一參數(shù),易錯且使用不便;并且如果長度指定過大的話(最優(yōu)長度是源字符串長度+1),還會帶來性能的下降。其實strcpy函數(shù)?般是在內(nèi)部調(diào)用memcpy函數(shù)或者用匯編直接實現(xiàn)的,以達到高效的目的。因此,使用memcpy和strcpy拷貝字符串在性能上應該沒有什么大的差別。對于非字符串類型的數(shù)據(jù)的復制來說,strcpy和snprintf一般就無能為力了,可是對memcpy卻沒有什么影響。但是,對于基本數(shù)據(jù)類型來說,盡管可以用memcpy進行拷貝,由于有賦值運算符可以方便且高效地進行同種或兼容類型的數(shù)據(jù)之間的拷貝,所以這種情況下memcpy幾乎不被使用。memcpy的長處是用來實現(xiàn)(通常是內(nèi)部實現(xiàn)居多)對■結(jié)構(gòu)或者數(shù)組的拷貝,其H的是或者高效,或者使用方便,甚或兩者兼有。.變錄的聲明和定義有什么區(qū)別?.請寫出下面代碼在32位平臺上的運行結(jié)果,并說明sizeof的性質(zhì):#include<stdio.h>9include<stdlib.h>intmain(void)chara[30];printf(飛d\n”,sizeof(a));char*b=printf(飛d\n”,sizeof(a));printf("%d\n”,sizeof(b));printf("%d\n”,sizeof(a[3]));printf("%d\n”,sizeof(b+3));printf("%d\n",sizeof(*(b+4)));return0;.請完成以下題目。注意,請勿直接調(diào)用ANSIC函數(shù)庫中的函數(shù)實現(xiàn)。a)請編寫一個C函數(shù),該函數(shù)給出一個字節(jié)中被置1的位的個數(shù),并請給出該題的至少一個不同解法。第,種unsignedintTestAsOneO(charlog)(inti;unsigned int num=0, val;for(i=0; i<8; i++)(val=log?i;〃移位val &二 0x01;〃與1相與if(val)num++;}returnnum;)第二種unsignedintTestAsOnel(charlog)(inti;unsignedintnum=0,val;for(i=0; i<8; i++)(val= Clog) ?i;〃反碼?val &= 0x00; 〃與。相與if(!val)num++;}returnnum;)b)請編寫一個c函數(shù),該函數(shù)將給定的一個字符串轉(zhuǎn)換成整數(shù)。intInvert(char*str)(intnum=0;while(*str!=,\0*)(intdigital=*str-48;num=num*10+digital;str=str+l;)returnnum;}c)請編寫一個C函數(shù),該函數(shù)將給定的一個整數(shù)轉(zhuǎn)換成字符串。void IntToCharChange(int num,char*pval)charstrval[100];inti,j;intvalO=0;intvail=o;valO=num;for(i=0;i<100; i++)(vail=valO% 10;//取余valO=valO/ 10;〃取整strval[i]=vail+48;〃數(shù)字一字符if(val0< 10)(i++;strval[i]=valO+48;break;}}for(j=0;j<=i; j++)〃倒置(pval[j]=strval[i-j];}pval[j]=,\0';d)請編寫一個C函數(shù),該函數(shù)將一個字符串逆序。void AntitoneValue(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<j;i++)(child[i] = source[j-i-l]; 〃反序}child[i] = '\0';e)請編寫一個C函數(shù),該函數(shù)在給定的內(nèi)存區(qū)域搜索給定的字符,并返回該字符所在位置索引值。intsearch(char*cpSource,intn,charch)〃起始地址,搜索長度,目標字符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=l,len=0,maxlen=l;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+l;len=0;}else{len=0;)i++;j++;returnmaxlen;)給出演示上述函數(shù)功能的一個簡單程序,并請編寫對應的Makefile文件.我們需要編寫一個圖形相關(guān)的應用程序,需要處理大量圖形(Shape)信息,圖形有矩形(Rectangle),正方形(Square),圓形(Circle)等種類,應用需要計算這些圖形的面積,并且可能需要在某個設備上進行顯示(使用在標準輸出上打印信息的方式做為示意)。a)請用面向?qū)ο蟮姆椒▽σ陨蠎眠M行設計,編寫可能需要的類b)請給出實現(xiàn)以上應用功能的示例性代碼,從某處獲取圖形信息,并且進行計算和繪制c)如果你的Square繼承自Rectangle,請給出理山,如果不是,請給出理由,并且請比較兩種方式的優(yōu)劣d)請問你所編寫的類,在如下代碼中會有何表現(xiàn),請解釋voidtestrectanglearea(Rectangle&r)r.set_width(10);r.set_height(15);assert(r.areaO==150);.假設現(xiàn)有一個單向的鏈表,但是只知道只有一個指向該節(jié)點的指針p,并且假設這個節(jié)點不是尾節(jié)點,試編程實現(xiàn)刪除此節(jié)點參考:將卜一個節(jié)點的內(nèi)容復制到本節(jié)點上,然后刪除下一個節(jié)點;.寫一個程序,把一個100以內(nèi)的自然數(shù)分解因數(shù)。(自然數(shù)分解因數(shù)就是將一個自然數(shù)分解為幾個素數(shù)的乘積,提示,由于該數(shù)不是很大,所以可以將質(zhì)數(shù)保存在數(shù)組中,以加快計算速度).編寫一個Identify的分配、釋放的函數(shù),為1一10000之間的自然數(shù)。.分別實現(xiàn)itoa和atoi..Considerthefollowingcode:#include<stdio.h>ttinclude<string.h>intmain(intargc,char*argv[]){inti=1;charbuf[4];strcpy(buf,"AAAA");printf("%d\n",i);return0;}Whencompiledandexecutedonx86,whydoesthisprogramusuallynotoutputwhattheprogrammerintended?在x86上為什么不能得到預期結(jié)果NameseveralwaysinwhichthesecurityproblemthatcausesthisprogramnottooutputwhattheprogrammerintendedcanbepreventedWITHOUTchangingthecode.參考:第一個問題:32位情況:x86下,棧方向向上生長.在main的棧中,先分配i空間(4byte),然后分配4個字節(jié)的buf(地址在i的上面,比i小).strcpy越界,用0把buf開始的第4(0開始)個字節(jié)覆蓋掉了.而x86是LSB排列順序,所以真好覆蓋了i的內(nèi)個數(shù)字1.所以顯示出數(shù)字0.16位情況同樣分析即可.第2問?.intw=l,x=2,y=3,z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<2)?m:z;printfm); 說出結(jié)果答案:1.說出結(jié)果 ???#include<stdio.h>main()FILE*fp;inti,a[4]={l,2,3,4},b;fp=fopen("data.dat","wb");〃這里幫忙解釋一下for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);〃這里也幫忙看一下fclose(fp);fp二fopen("data.dat","rb");fseek(fp,-2L*sizeof(int),SEEK_END);〃還有這里fread(&b,sizeof(int),1,fp);〃這里還有也看一下fclose(fp);printf("b=%d\n”,b);}.有雙向循環(huán)鏈表結(jié)點:(華為面試題)typedefstructnode{intdate;structnode*front,*next;}_Node;有兩個雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請寫一函數(shù)將兩上鏈表中date值相同的結(jié)點刪除參考算法:.取出A的一個元素d.收集B中有相同元素d的結(jié)點到垃圾箱,并從B里刪除.收集A中有相同元素d的結(jié)點到垃圾箱,并從A里刪除.刪除垃圾箱中的所有元素.A鏈的指針指向下一個.重復廣5,直到A鏈循環(huán)到頭了注意的是第3步,在2步執(zhí)行后垃圾箱不為空時才執(zhí)行。上述算法還可以做一點點優(yōu)化:1.加入兩個變量cA, cB,分別記錄當前A中和B中的元素個數(shù)每次從較長者中取出一個元素來,先從較小者中找起若沒有,則不必在較長者中浪費時間了#include<iostream.h> ?structNODE{intdate;NODE*front,*next;);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?*deleteB:*?paa->date?*if(pb==bhead)(boy=l;pb->front->next=pb->next;pb->next->front=pb->front;bhead=bhead->next;pbb=pb;pb=pb->next;deletepbb;)else(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==l)(if(paa->date==boys)(cout<<*deleteA:*<<paa->date?>rif(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); 〃調(diào)用函數(shù)刪除相同結(jié)點!)22.char*GetStr()(char*tmp;tmp="123"returntmp;printf("%s”,GetStr());)會輸出123嗎?123創(chuàng)建在堆上還是棧上呢?123的空間是什么時候釋放的?參考:"123”是常量字符串,存儲在全局變量區(qū),和靜態(tài)變量一起。即不在堆,也不在棧在程序結(jié)束時自動釋放23.1)字符指針、浮點數(shù)指針、以及函數(shù)指針這三種類型的變量哪個占用的內(nèi)存最大?為什么?答案:指針變量也占用內(nèi)存單元,而且所有指針變量占用內(nèi)存單元的數(shù)量都是相同的。就是說,不管是指向何種對象的指針變量,它們占用內(nèi)存的字節(jié)數(shù)都是?樣的,并且要足夠把程序中所能用到的最大地址表示出來(通常是一個機器字長)。2)類ClassB從ClassA派生,那么ClassA*a=newClassB(…);試問該表達是否合法?為什么?答案:派生類的指針指向基類的對象是錯誤的,不能通過編譯的;基類的指針可以指向派生類的對象,調(diào)用派生類的函數(shù)雞是動物,沒錯。(動物的指針指向雞的實例)雞可以執(zhí)行所有動物都具有的方法,例如“死亡”反過來,動物一定是雞嗎?(雞的指針指向動物或者動物的某個派生類的實例)動物都能執(zhí)行雞的某個方法嗎?比如說“下蛋”?3)如果ClassA中定義并實現(xiàn)虛函數(shù)intfunc(void),ClassB中也實現(xiàn)該函數(shù),那么上述變量a->func()將調(diào)用哪個類里面的函數(shù)?如果intfunc(void)不是虛函數(shù),情況又如何?為什么?答案:第一問調(diào)用的是B的。第二問調(diào)用A的。虛函數(shù)的一個典型應用,虛函數(shù)只能借助于指針或者引用來達到多態(tài)的效果如果沒有定義成虛函數(shù): classA{public:voidprint(){cout<<wThisisAM?endl;});classB:publicA{public:voidprint(){cout<<wThisisB**?endl;});intmain(){ //為了在以后便于區(qū)分,我這段main。代碼叫做mainlAa;Bb;A*pl=&a;A*p2=&b:pl->print();p2->print();)結(jié)果是兩個ThisisA如果定義成虛函數(shù): classA{public:virtualvoidprint(){cout?wThisisAw?endl:}〃現(xiàn)在成了虛函數(shù)了);classB:publicA(public:voidprint(){cout?wThisisBM?endl;}〃這里不需要在前面加上關(guān)犍字virtual,只需在把基類的成員函數(shù)設為virtual,其派生類的相應的函數(shù)也會自動變?yōu)樘摵瘮?shù));再運行main輸出的結(jié)果就是ThisisA和ThisisB測試:char**p,a[16][8];問:p=a是否會導致程序在以后出現(xiàn)問題?為什么?參考:這個不會導致出現(xiàn)問題,但是要注意P的使用,如a[l][2]等價的為*(*(p+l)+2)而不是*(p+ll),會的,這樣會出現(xiàn)編譯錯誤正確的是:chara[5][5];char(*p)[5];p=a;如下所述的ifelse和switch語句哪個的效率高?為什么?5)在同?個進程中,?個模塊是否可以通過指針操作破壞其它模塊的內(nèi)存,為什么?(華為)6)應用程序在運行時的內(nèi)存包括代碼區(qū)和數(shù)據(jù)區(qū),其中數(shù)據(jù)區(qū)又包括哪些部分?參考:對于一個進程的內(nèi)存空間而言,可以在邏輯上分成3個部份:代碼區(qū),靜態(tài)數(shù)據(jù)區(qū)和動態(tài)數(shù)據(jù)區(qū)。動態(tài)數(shù)據(jù)區(qū)一般就是“堆?!眔棧是一種線性結(jié)構(gòu),堆是一種鏈式結(jié)構(gòu)。進程的每個線程都有私有的“棧”。全局變量和靜態(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)&0xff00;c=(a?8)&0x00ff;d=b c;printf('\n%x”,b);printf("\n%x”,c);printf('\n%x”,d);return0;}結(jié)果是CDAB2倆個字節(jié)是16位前八位為高位后八位為低位然后結(jié)合.要開辟Pl,P2,P3,P4內(nèi)存來做緩沖,大小自定,但這四個緩沖的大小要一樣,并且是連續(xù)的.有一浮點型數(shù)組A,用C語言寫一函數(shù)實現(xiàn)對浮點數(shù)組A進行降序排序,并輸出結(jié)果,要求要以數(shù)組A作為函數(shù)的入口.(建議用冒泡排序法)voidBubbleSort(doublearr[],intn){inti,j;intexchange= 1;〃交換標志for(i=l;i<n;i++){〃最多做n-l趟排序exchanged; 〃本趟排序開始前,交換標志應為假for(j=n-l;j>=i;j—) 〃對當前無序區(qū)R[i..n]自下向上掃描if(arr[j+l]>air[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〃,base,name);));classSubclass:publicBase{public:Subclass(char*className):Base(className)intmain()Base*pBase=newSubclass("test");Base::print(*pBase);printf(,zname:%s\n”,pBase->getName());printf(zznewname:%s\n〃,pBase->copyName());return0;.編寫一個函數(shù),函數(shù)接收一個字符串,是由十六進制數(shù)組成的一組字符串,函數(shù)的功能是把接到的這組字符串轉(zhuǎn)換成十進制數(shù)字.并將十進制數(shù)字返回.答案:BOOLHexToDec(LPCTSTRshex,int&idee)(inti,mid;intlen=lstrlen(shex);if(len>8)returnFALSE;TOC\o"1-5"\h\zmid= 0;idee= 0;for( i=0;i<len;i++ ){if( shex[i]>='O'&&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-1)?2); //移位表示變?yōu)?的n次方倍idee=idc+mid;)returnTRUE;).編寫一個函數(shù)將一條字符串分成兩部分,將前半部分按ASCH碼升序排序,后半部分不變,(如果字符串是奇數(shù)則中間的字符不變,)最后再將前后兩部分交換,然后將該字符串輸出,測試字符串“ADZDDJKJFIEJHGI”.找錯Voidtestl(){charstring[10];char*strl="0123456789”;strepy(string,strl);)Voidtest2(){charstring[10],strl[10];for(1=0;K10;I++){strl[i]='a';}strepy(string,strl):Voidtest3(char*strl){charstring[10];if(strlen(strl)<=10){strcpy(string,strl);).找錯#defineMAX_SRM256DSNget_SRM_no(){staticintSRMno;intI;for(1=0;I{SRM_no%=MAX_SRM;if(MY_SRM.state==IDLE){break;})if(I>=MAX_SRM)return(NULL_SRM);elsereturnSRM_no;. 寫出程序運行結(jié)果intsum(inta){autointc=0;staticintb=3;c+=l;b+=2;return(a+b+C);}voidmain(){intI;inta=2;for(I=0;I<5;I++){printf(*%d, sum(a));}}.intfunc(inta){intb;switch(a){case1:30;20;16;default:0}returnb;則func⑴=?:inta[3];a[0]=0;a[l]=l;a[2]=2;int*p,*q;P=a;q=&a⑵;則a[q-p]=?.定義int**a[3][4],則變量占有的內(nèi)存空間為:.編寫一個函數(shù),要求輸入年月日時分秒,輸出該年月日時分秒的下一秒。如輸入2004年12月31日23時59分59秒,則輸出2005年1月1日0時0分0秒。.寫一個函數(shù),判斷一個int型的整數(shù)是否是2的事,即是否可以表示成2cx的形式(不可以用循環(huán)) 我只知道是用遞推,大概寫了一下,如下:intIsTwoPow(ints){if(s==l)returnFALSE;s=s?l;if(s>l)IsTwoPow(s);return(s=l)?TRUE:FALSE;〃大概是這個意思,但是這一句似乎不該這么返回!A,B從一堆玻璃球(共100個)里向外拿球,規(guī)則如下:(1)A先拿,然后一人一次交替著拿;(2)每次只能拿1個或2個或4個;(3)誰拿最后一個球,誰就是最后的失敗者;問A,B誰將是失敗者?寫出你的判斷步驟。.已知:無序數(shù)組,折半查找,各元素值唯一。函數(shù)原型是:Binary_Seach(intarray[],intiValue,intiCount)array是數(shù)組,在里面用折半查找的方法找等于iValue的值,找到返回1否則0,iCount是元素個數(shù).統(tǒng)計一個字符串中字符出現(xiàn)的次數(shù).100位以上的超大整數(shù)的加法(主要考慮數(shù)據(jù)結(jié)構(gòu)和加法的實現(xiàn)).對如下電文:"CASTCASTSATATATASA”給出Huffman編碼。.int(*(*f)(int,int))(int)表示什么含義?.x=x+l,x+=l,x++,為這三個語句的效率排序。并說明為什么。.中綴表達式A-(B+C/D)*E的后綴形式是什么?.structS1{charc;inti;);sizeof(SI)=?classX{public:X();virtual?X();voidmyMemberFunc();staticvoidmyStaticFunc();virtualvoidmyVirtualFunc0;private:inti;char*pstr;chara;}sizeof(X)=?.找出兩個字符串中最大子字符串,如"abractyeyt","dgdsaeactyey”的最大子串為"actyet*.有一百個整數(shù),其中有負數(shù),找出連續(xù)三個數(shù)之和最大的部分..寫一程序?qū)崿F(xiàn)快速排序,假設數(shù)據(jù)輸入為一文件快速算法描述如下AlgorithmPartitionInput:sequenceaO,...,an-lwithnelementsOutput:permutationofthesequencesuchthatallelementsaO,...,ajarelessthanorequaltoallelementsai,...,an-l(i>j)Method:choosetheelementinthemiddleofthesequenceascomparisonelementxleti=0andj=nTwhileijsearchthefirstelementaiwhichisgreaterthanorequaltoxsearchthelastelementajwhichislessthanorequaltoxifijexchangeaiandajleti=i+1andj=j-1Afterpartitioningthesequence,Quicksorttreatsthetwopartsrecursivelybythesameprocedure.Therecursionendswheneverapartconsistsofoneelementonly..寫一算法檢測單向鏈表中是否存在環(huán)(whetherthereisaloopinalinklist),要求算法復雜度(Algorithm'scomplexity是。(n))并只使用常數(shù)空間(spaceis0(c)).注意,你只知道一個指向單向鏈表頭的指針。鏈表的長度是不定的,而且環(huán)出現(xiàn)的地方也是不定的,環(huán)有可能在頭,有可能在中間。而且要求是檢測,不能破壞環(huán)的結(jié)構(gòu).(M0T0)答:用兩個指針來遍歷這個單向鏈表,第一個指針P1,每次走一步;第二個指針P2,每次走兩步;當P2指針追hpl的時候,就表明鏈表當中有環(huán)路了。inttestLinkRing(Link*head)(Link*tl=head,*t2=head;while(tl->next&&t2->next)tl=tl->;next;if(NULL—(t2=t2->next->next))return0;〃無環(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)通過了調(diào)試boolSortArray(ArrayType*Pinputarray,ArrayType*Poutarray);該函數(shù)在內(nèi)存中排序,能把字節(jié)數(shù)最大為100M字節(jié)的ArrayType類型的數(shù)組排序。其中ArrayType是一個預定義的數(shù)組類型(細節(jié)無關(guān)緊要),Pinputarray,Poutarray分別為排序前的指針和排序后的指針。請用c語言的偽碼風格設計?個算法,他調(diào)用上面給出的函數(shù)完成下列從輸入到輸出的任務輸入:排序前的大文件,名稱為char*pinoutfilename,其內(nèi)容為用分號分隔的ArrayType類型的數(shù)組元素,可裝滿4個100M字節(jié)的數(shù)組。輸出:排序后的大文件char*poutoutfilenameo.用最有效率的方法算出2乘以8等於幾?移位.選擇題.錯誤的轉(zhuǎn)義字符是(a)A.'\091'B.'\\'C.''0'D.'\''Strings—、”";//s=*charc=';〃c=''是轉(zhuǎn)移字符.若數(shù)組名作實參而指針變量作形參,函數(shù)調(diào)用實參傳給形參的是(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)全局變量則限制了其作用域,即只在定義該變量的源文件內(nèi)有效,在同一源程序的其它源文件中不能使用它。山于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用,因此可以避免在其它源文件中引起錯誤。.解二次方程:a*x*x+b*x+cintQuadratic(doublea,doubleb,doublec,double&xl,doubleftx2);返回值:解的個數(shù).最大公約數(shù)DWORDDivisor(DWORDdwFirst,DWORDdwSecond):返回值:最大公約數(shù).根據(jù)蒙特卡洛算法計算圓周率doublePI(DOWRDdwCount/*測試次數(shù)*/);返回值:PI.無符號整數(shù)乘法,乘數(shù)為32bit,結(jié)果為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:1.cinta[10]={0};file:2.cintmain(){externint*a;printf("%d\n",a[0]);return0;)ftinclude"filename,h"和#include〈filename.h>的區(qū)別?對于#include<filename.h〉編譯器從標準庫開始搜索filename,h;對于#include**filename,h”編譯器從用戶工作路徑開始搜索filename.h2頭文件的作用是什么?一、通過頭文件來調(diào)用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只要向用戶提供頭文件和二進制的庫即可。用戶只需要按照頭文件中的接口聲明來調(diào)用庫功能,而不必關(guān)心接口怎么實現(xiàn)的。編譯器會從庫中提取相應的代碼。二、頭文件能加強類型安全檢查。如果某個接口被實現(xiàn)或被使用時,其方式與頭文件中的聲明不一致,編譯器就會指出錯誤,這一簡單的規(guī)則能大大減輕程序員調(diào)試、改錯的負擔。3C++函數(shù)中值的傳遞方式有哪幾種?C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。4內(nèi)存的分配方式的分配方式有幾種?答:一、從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在。例如全局變量。二、在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。三、從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運行的時候用malloc或new申請任意多少的內(nèi)存,程序員自己負責在何時用free或delete釋放內(nèi)存。動態(tài)內(nè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;}〃插入操作StatusListinsertDuL(DuLinkList&L,inti,ElemType&e){if(!(p=GetElemP_DuL(L,i)))returnERROR;if(!(s=(DuLinkList)malloc(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都轉(zhuǎn)換成4個空格。7Windows程序的入口是哪里?寫出Windows消息機制的流程.8如何定義和實現(xiàn)一個類的成員函數(shù)為回調(diào)函數(shù)?C++里面是不是所有的動作都是main。引起的?如果不是,請舉例.比如全局變量的初始化,就不是由main函數(shù)引起的舉例:classA{};Aa;//a的構(gòu)造函數(shù)限執(zhí)行intmain(){}C++里面如何聲明constvoidf(void)函數(shù)為C程序中的庫函數(shù)(華為)11下列哪兩個是等同的intb;Aconstint*a=&b;Bconst*inta=&b;Cconstint*consta=&b;Dintconst*consta=&b;12內(nèi)聯(lián)函數(shù)在編譯時是否做參數(shù)類型檢查內(nèi)聯(lián)函數(shù)要做參數(shù)類型檢查, 這是內(nèi)聯(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)內(nèi)。這個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設計一個重采樣系統(tǒng),說明如何anti-alias16某個程序在一個嵌入式系統(tǒng)(200M的CPU,50M的SDRAM)中已經(jīng)最化了,換到另一個系統(tǒng)(300M的CPU,50M的SDRAM)中運行,還需要優(yōu)化嗎?17.下面哪種排序法對12354最快aquicksortb.bublesortc.mergesort18.哪種結(jié)構(gòu),平均來講,獲取一個值最快binarytreehashtablestack19請問C++的類和C里面的struct有什么區(qū)別?class中默認的成員訪問權(quán)限是private的,而struct中則是public的20請講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用?析構(gòu)函數(shù)是特殊的類成員函數(shù),它沒有返回類型,沒有參數(shù),不能隨意調(diào)用,也沒有重載,只有在類對象的生命期結(jié)束的時候,由系統(tǒng)自動調(diào)用。有適放內(nèi)存空間的做用。虛函數(shù)是C++多態(tài)的一種表現(xiàn),使用虛函數(shù),我們可以靈活的進行動態(tài)綁定,當然是以一定的開銷為代價。21全局變量和局部變量有什么區(qū)別?實怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?生命周期不同:全局變量隨主:程序創(chuàng)建和創(chuàng)建,隨生程序銷毀而銷毀

局部變量在局部函數(shù)內(nèi)部,甚至局部循環(huán)體等內(nèi)部存在,退出就不存在;內(nèi)存中分配在全局數(shù)據(jù)區(qū)使用方式不同:通過聲明后全局變量程序的各個部分都可以用到局部變量只能在局部使用;分配在棧區(qū)操作系統(tǒng)和編譯器通過內(nèi)存分配的位置來知道的,全局變量分配在全局數(shù)據(jù)段并且在程序開始運行的時候被加載。局部變量則分配在堆棧里面。一些寄存器的題目,主要是尋址和內(nèi)存管理等一些知識。8086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?多態(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存在于繼繼承的關(guān)系類中。覆寫Override特點(三相同):publicoverrideboolwithdraw(...)1、方法名相同2、參數(shù)列表相同3、返回值類型相同注意:存在于同一類中,但是只有虛方法和抽象方法才能被覆寫.?Sony筆試題>>25.完成下列程序**.*.Sinclude<stdio.h>#defineN8intmain(){inti;intj;intk;

return0;26完成程序,實現(xiàn)對數(shù)組的降序排序ttinclude<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ù)列,L1,2,3,5……編寫程序求第十項??梢杂眠f歸,也可以用其他方法,但要說明你選擇的理由。#include<stdio.h>intPheponatch(int);intmain(){printf(*The10this%d/z,Pheponatch(lO));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(17);//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)||(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)內(nèi)的最大主機數(shù)子網(wǎng)掩碼與iP相與得到子網(wǎng)號,化成二進制11111111.11111111.11110000.00000000,即有12個"0〃,2^12-2=4096-2=4094a.240b.255c.4094d.6553Whatisthedifference:betweeno(logn)ando(logn*2),wherebothlogarithems(對數(shù))havebase2.a.o(logn*2)isbiggerb.o(logn)isbiggerc.nodifferenceForaclasswhatwouldhappenifwecallaclass,sconstructorfromwiththesameclass'pilationerrorb.linkingerrorc.stackoverflowd.noneoftheabove"new“inc++isa:A.libraryfunctionlikemallocincB.keywordC.operatorD.noneoftheabovemalloc是庫函數(shù),不在編譯器控制范圍之內(nèi):new是運算符,在編譯器控制范圍之內(nèi)。調(diào)用malloc時,從堆中申請內(nèi)存;調(diào)用new時,從堆中申請內(nèi)存并為內(nèi)存調(diào)用構(gòu)造函數(shù)。

Whichofthefollowinginformationisnotcontainedinaninodea.fileownerb.filesizec.filenamed.diskaddresstomergetwosortedlid.2n-2What'sthenumberofcomparisonsintheworstcasestscontainingntomergetwosortedlid.2n-2a.2n b.2n-l c.2n+lTimecomplexityofnalgorithmT(n),wherenistheinputsize,isT(n)=T(n-l)+l/nifn>lotherwise1theorderofthisalgorithmis.a.log(n)b.n c.n2 d.n*nThenumberofPsinthebinaryrepresentationof3*4096+15*256+5*16+3a8910 d.128910 d.12設計函數(shù)intatoi(char*s)ointi=(j=4,k=8,1=16,m=32);printf(“%d”,i);輸出是多少?解釋局部變量、全局變量和靜態(tài)變量的含義。解釋堆和棧的區(qū)別。在傳統(tǒng)的C中堆和棧實際是塊物理內(nèi)存,堆主要用來動態(tài)分配內(nèi)存,從堆棧內(nèi)存的低端向上分配;而棧主要用來傳遞函數(shù)參數(shù)、返回值和局部參數(shù)內(nèi)存分配,是從堆棧內(nèi)存的高端向下分配,俗稱壓棧和出棧;堆是動態(tài)分配,比如用new,malloc分配,需要手工釋放,不然會導致memoryleak,棧是靜態(tài)分配,比如函數(shù)調(diào)用是需要分配堆棧,但堆棧能自動釋放.論述含參數(shù)的宏與函數(shù)的優(yōu)缺點。宏是編譯期的,函數(shù)是運行期的;宏不是實體,而函數(shù)是一個可尋址的實體;宏只是編譯期替換,在程序里每遇到S(a,b),就用a*b代替,a和b兩個實體并沒有山宏實際產(chǎn)生,而函數(shù)S會在棧中定義兩個對象a和b。宏沒有生存期、作用域之類的概念,而函數(shù)就有。42.以下三條輸出語句分別輸出什么?[C易]charstrl[]〃 i 〃=abc;charstr2[]=abc;constcharstr3[]=abc;constcharstr4[]-abc;constchar*str5=abc;constchar*str6=abc;cout?boolalpha?(strl==str2)?endl;//輸出什么?cout?boolalpha?(str3==str4)?endl;//輸出什么?cout<<boolalpha<<(str5==str6)?endl;//輸出什么?答:分別輸出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ū)首地址的指針,相等。43.非C++內(nèi)建型別A和B,在哪幾種情況下B能隱式轉(zhuǎn)化為A?[C++中等]答:classB : publicA { } //B公有繼承自A,可以是間接繼承的classB { operator A( ); } //B實現(xiàn)了隱式轉(zhuǎn)化為A的轉(zhuǎn)化classA { A(const B& ); } //A實現(xiàn)了non-explicit的參數(shù)為B(可以有其他帶默認值的參數(shù))構(gòu)造函數(shù)A&operator=(constA&);//賦值操作,雖不是正宗的隱式類型轉(zhuǎn)換,但也可以勉強算一個44.以下代碼中的兩個sizeof用法有問題嗎?[C易]voidUppercase(charstr[])//將str中的小寫字母轉(zhuǎn)換成大寫字母(for(sizeti=0;i<sizeof(str)/sizeof(str[0]);++i)if(fa<=str[i]&&str[i]<=,z*)str[i]-=('a'」A');)charstr[]="aBcDe”;cout?"str字符長度為:"<<sizeof(str)/sizeof(str[0])<<endl;Uppercase(str);cout?str<<endl;答:函數(shù)內(nèi)的sizeof有問題。根據(jù)語法,sizeof如用于數(shù)組,只能測出靜態(tài)數(shù)組的大小,無法檢測動態(tài)分配的或外部數(shù)組大小。函數(shù)外的str是一個靜態(tài)定義的數(shù)組,因此其大小為6,函數(shù)內(nèi)的str實際只是一個指向字符串的指針,沒有任何額外的與數(shù)組相關(guān)的信息,因此sizeof作用于上只將其當指針看,一個指針為4個字節(jié),因此返回4。.以下代碼有什么問題?[C難]voidchar2Hex(charc)//將字符以16進制表示(charch=c/0xl0+'O';if(ch〉'9')ch+=('A',9'T);charcl=c%0xl0+'O';if(cl>'9')cl+=('A'-'9'T);cout?ch?cl?*';}charstr[]=Tlove中國”;for(size_ti=0;i<strlen(str);++i)char2Hex(str[i]);cout?endl;.以下代碼有什么問題?[C++易]structTest{Test(int){}TestO{)voidfun(){});voidmain(void)(Testa(l);fun();Testb();fun();)答:變量b定義出錯。按默認構(gòu)造函數(shù)定義對象,不需要加括號。.以下代碼有什么問題?[C++易]cout?(true?l:*l*)?endl;答:三元表達式“?:”問號后面的兩個操作數(shù)必須為同一類型。8.以下代碼能夠編譯通過嗎,為什么?[C++易]unsignedintconstsizel=2;charstrl[sizel];unsignedinttemp=0;cin?temp;unsignedintconstsize2=temp;charstr2[size2];答:定義出倡,si/7II編if器期間常;七而數(shù)組定義要求長度必須為編譯期常.以下代碼中的輸出語句輸出0嗎,為什么?[C++易]structCLS{intm_i;CLS(inti):m_i(i){}CLS()(CLS(O);});CLSobj;cout?obj.mi?endl;答:不能。在歐認構(gòu)造函數(shù)內(nèi)部再調(diào)用帶參的構(gòu)造函數(shù)屬用戶行為而非編譯器行為,亦即僅執(zhí)行函數(shù)調(diào)用,而不會執(zhí)行其后的初始化表達式。只有在生成對象時,初始化表達式才會隨相應的構(gòu)造函數(shù)一起調(diào)用。.C++中的空類,默認產(chǎn)生哪些類成員函數(shù)?[C++易]答:classEmpty(public:Empty(); 〃缺省構(gòu)造函數(shù)Empty(constEmpty&); //拷貝構(gòu)造函數(shù)"Empty(); 〃析構(gòu)函數(shù)Emptyfeoperator=(constEmptyfe);//賦值運算符Empty*operator&(); //取址運算符constEmpty*operator&()const; //取址運算符const};.以下兩條輸出語句分別輸出什么?[C++難]floata=1.Of;cout?(int)a<<endl;cout?(int&)a<<endl;cout?boolalpha?((int)a==(int&)a)?endl;//輸出什么?floatb=0.Of;cout?(int)b<<endl;cout?(int&)b<<endl;cout?boolalpha?((int)b==(int&)b)?endl;//輸出什么.以下反向遍歷array數(shù)組的方法有什么錯誤?[STL易]vectorarray;array.push_back(1);array,pushback(2);array.push_back(3);for(vector::size_typei=array.size()-1;i>=0;-i)//反向遍歷array數(shù)組(cout?array[i]?endl;答:首先數(shù)組定義有誤,應加上類型參數(shù):vector《int》array。其次vector::size_type被定義為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,pushback(3);〃刪除array數(shù)組中所有的2for(IntArray::iteratoritor=array,begin。;itor!=array.end();++itor)(if(2==*itor)array,erase(itor);)答:同樣有缺少類型參數(shù)的問題。另外,每次調(diào)用"array,erase(itor);",被刪除元素之后的內(nèi)容會自動往前移,導致迭代漏項,應在刪除一項后使itor一,使之從已經(jīng)前移的下一個元素起繼續(xù)遍歷。.寫一個函數(shù),完成內(nèi)存之間的拷貝。[考慮問題是否全面]答: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-1;i!=-l;-i)

pdest[i]=psrc[i];}else(for(size_ti=0;i<count;++i)pdest[i]=psrc[i];}returndest;)intmain(void)(charstr[]="0123456789”;mymemcpy(str+1,str+0,9);cout?str<<endl;system("Pause");return0;54線程與進程的區(qū)別55:請你分別劃劃OSI的七層網(wǎng)絡結(jié)構(gòu)圖,和TCP/IP的五層結(jié)構(gòu)圖?56:請你詳細的解釋一下IP協(xié)議的定義,在哪個層上面,主要有什么作用?TCP與UDP呢?57:請問交換機和路由器分別的實現(xiàn)原理是什么?分別在哪個層次上面實現(xiàn)的?58:請問C++的類和C里面的struct有什么區(qū)別?59:請講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用?60:全局變量和局部變量有什么區(qū)別?實怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?61:一些寄存器的題目,主要是尋址和內(nèi)存管理等一些知識。62:8086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?73對于C++中類(class)與結(jié)構(gòu)(struct)的描述正確的為:A,類中的成員默認是private的,當是可以聲明為public,private和protected,結(jié)構(gòu)中定義的成員默認的都是public;B,結(jié)構(gòu)中不允許定義成員函數(shù),當是類中可以定義成員函數(shù);C,結(jié)構(gòu)實例使用mallocO動態(tài)創(chuàng)建,類對象使用new操作符動態(tài)分配內(nèi)存;D,結(jié)構(gòu)和類對象都必須使用new創(chuàng)建;E,結(jié)構(gòu)中不可以定義虛函數(shù),當是類中可以定義虛函數(shù).F,結(jié)構(gòu)不可以存在繼承關(guān)系,當是類可以存在繼承關(guān)系.答:A,D.F74,兩個互相獨立的類:ClassA和ClassB,都各自定義了非景泰的公有成員函數(shù)PublicFunc()和非靜態(tài)的私有成員函數(shù)PrivateFuncO;現(xiàn)在要在ClassA中增加定義一個成員函數(shù)ClassA::AdditionalPunction(ClassAa,ClassBb);則可以在AdditionalPunction(ClassAx,ClassBy)的實現(xiàn)部分(函數(shù)功能體內(nèi)部)出現(xiàn)的合法的表達是最全的是:x.PrivateFunc();x.PublicFunc();y.PrivateFuncO;y.PublicFunc();x.PrivateFunc();x.PublicFunc();y.PublicFunc();x.PrivateFunc();y.PrivateFunc();y.PublicFunc();x.PublicFunc();y.PublicFunc();答:BC++程序下列說法正確的有:A,對調(diào)用的虛函數(shù)和模板類都進行遲后編譯.B,基類與子類中函數(shù)如果要構(gòu)成虛函數(shù),除了要求在基類中用virtual聲名,而且必須名字相同且參數(shù)類型相同返回類型相同C,重載的類成員函數(shù)都必須要:或者返回類型不同,或者參數(shù)數(shù)目不同,或者參數(shù)序列的類型不同.D,靜態(tài)成員函數(shù)和內(nèi)聯(lián)函數(shù)不能是虛函數(shù),友員函數(shù)和構(gòu)造函數(shù)也不能是虛函數(shù),但是析構(gòu)函數(shù)可以是虛函數(shù).答:AC++中的類與結(jié)構(gòu)的區(qū)別?77,構(gòu)造函數(shù)和析構(gòu)函數(shù)是否可以被重載,為什么?78,一個類的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時候被調(diào)用,是否需要手工調(diào)用?幾道題目及自做答案熱忱期待高手的答案,我不怕丑!一天做幾個,把答案貼出來,請高手指正!1#include"filename.hw和#include〈filename.h>的區(qū)別?答:ttinclude“filename,h”表明該文件是用戶提供的頭文件,查找該文件時從當前文件目錄開始;#include〈filename』》表明這

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論