C++筆試題打印版_第1頁
C++筆試題打印版_第2頁
C++筆試題打印版_第3頁
C++筆試題打印版_第4頁
已閱讀5頁,還剩203頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++筆試題.多態(tài)類中的虛函數(shù)表是Compile-Time,還是Run-Time時建立的?答案:虛擬函數(shù)表是在編譯期就建立了,各個虛擬函數(shù)這時被組織成了一個虛擬函數(shù)的入口地址的數(shù)組.而對象的隱藏成員一虛擬函數(shù)表指針是在運行期一也就是構(gòu)造函數(shù)被調(diào)用時進行初始化的,這是實現(xiàn)多態(tài)的關(guān)鍵.2.將一個1M-10M的文件,逆序存儲到另ー個文件,就是前ー個文件的最后ー個字符存到新文件的第一個字符,以此類推?!▽崿F(xiàn)對ー個文本文件內(nèi)容的反向顯示。#include<stdio.h>#include<stdlib.h>voidmain(){charc;FILE*fp;if((fp=fopen("test.txt","r"))==NULL)〃以讀方式打開文本文件{printf("CannotopenfileAn");exit(1);)fseek(fp,OL,2);〃定位文件尾。注意此時并不是定位到文件的最后一字符,〃而是在定位文件最后ー個字符之后的位置while((fseek(fp,-1L,1))!=-1)/Z相對當前位置退后ー個字節(jié)(c=fgetc(fp);putchar(c); 〃如果定位成功,讀取當前字符并顯示/?讀取字符成功,文件指針會自動移到下一字符位置?/if9==へ叫/?若讀入是'n字符7fseek(fp,-2L,1);/*由于DOS在文本文件中要存回車OxOd和換7/?行0x0a兩個字符,故要向前移動兩個字節(jié)7elsefseek(fp,-1L,1);/?文件指針向前移動ー個字節(jié),使文7}/?件指針定位在剛剛讀出的那個字符7fclose(fp);/*操作結(jié)朿關(guān)閉文件7)5.給ー個字符串、例如“ababc”要求返回“ab”.因為“ab”連續(xù)重復(fù)出現(xiàn)且最長。 用C/C++語言寫ー函數(shù)完成該算法,給出復(fù)雜度從對ー個字符開始,假設(shè)其為最長的串的第一個,向后查找下ー個與它相同的字符,確定單循環(huán)的長度,再驗證是否是連續(xù)出現(xiàn)的(類似于循環(huán)節(jié)),如后面不重復(fù),則向后取ー個字符,重熨開始判斷,當取得一個循環(huán)節(jié)并且后面重復(fù)時,記錄其總長度,6.對序列1、1、2、3、5、8、面的Fab..?數(shù)列都互質(zhì),給出I#include<stdio.h>#include<vector>#include<iostream>usingnamespacestd;voidfindFib(intk){vector<int>fibl;vector<int>fib2;fibl.push_back(l);fibl.push_back(l);fibl.push_back(2);fib2.push_back(2);向后開繼續(xù)判斷,如找到更長的,則輸出最長的,否則,把第一個結(jié)果輸出。13。。。。是Fab..數(shù)列,2、3、5、13...是Fab..質(zhì)數(shù)數(shù)列,因為他們與自己前r,返回比k小的Fab..質(zhì)數(shù)boolfound=false;intlen=fibl.size();intf=0;while(fib1[len-l]<k)(f=fibl[len-2]+fibl[len-1];fibl.push_back(f);len++;)for(inti=2;i<fib1.size。ーl;i++)(found=true;

)printf(An");)printf(An");}voidmain(){intk;printf('Inputk\nn);scanf("%d",&k);while(k>2)(findFib(k);printf("inputk\n");scanf("%d",&k);if(fibl[i]%fib2|j]==0)(found=false;break;}//endif}//endfor2if(found)(fib2.push_back(fibl[i]);)}//endfor1for(i=0;i<fib2.size();i++)(printf(M%dn,fib2[i]);.變量的聲明和定義有什么區(qū)別?聲明是向編譯器介紹名字ーー標識符。它告訴編譯器’’這個函數(shù)或變量在某處可找到,它的模樣象什么而定義是說:"在這里建立變量"或''在這里建立函數(shù)”。它為名字分配存儲空間。無論定義的是函數(shù)還是變量,編譯器都要為它們在定義點分配存儲空間。對于變量,編譯器確定變量的大小,然后在內(nèi)存中開辟空間來保存其數(shù)據(jù),對于函數(shù),編譯器會生成代碼,這些代碼最終也要占用一定的內(nèi)存。在C和C++中,可以在不同的地方聲明相同的變量和函數(shù),但只能有一個定義(有時這稱為ODR,單一定義規(guī)則)。。。定義也可以是聲明,如果有intx;,之前編譯器未發(fā)現(xiàn)標識符x,編譯器則把這ー標識符看成是定義并立即為它分配存儲空間。對“變量聲明”的解釋向來模糊且自相矛盾。。。函數(shù)聲明包括函數(shù)類型、函數(shù)名、參數(shù)列表和一個分號,這些信息足以編譯器認出它是一個函數(shù)聲明并可識別出這個函數(shù)的外部特征。由此推斷,變量聲明應(yīng)是類型標識后面跟ー個標識符。如inta;但這產(chǎn)生了一個矛盾,這段代碼有足夠的信息讓編譯器為之分配存儲空間,而且編譯器也確實給之分配了存儲空間。要解決這個問題,對于C和C++需要一個關(guān)鍵字來說明“這是一個聲明,它的定義在別的地方”,這個關(guān)鍵字就是extern,它表示變量是在文件以外定義的,或在文件后面定義的。在變量定義前加extern表示聲明ー個變量但不定義它,如:extern inta;extern也可用于函數(shù)聲明,如:extern intfund(int length,int width);但由于沒有函數(shù)體,編譯器必把它當成聲明而非定義,extern對于函數(shù)來說是多余的、可選的。C語言的設(shè)計者并不要求函數(shù)聲明使用extem,這可能有些令人遺憾,如果函數(shù)聲明也要求用extern,那么形式上與變量聲明更加一致了,從而減少了混亂(但這就需要更多的輸入,這也許能解種為什么不要求函數(shù)聲明使用extem的原因)。。。.請寫出下面代碼在32位平臺上的運行結(jié)果,并說明sizeof的性質(zhì):#include<stdio.h>#include<stdlib.h>intmain(void)chara[30];char*b=(char*)malloc(20*sizeof(char));TOC\o"1-5"\h\zprintf(,,%d\n,',sizeof(a)); //30printf(M%d\nn,sizeof(b)); //4printf(,'%d\n",sizeof(a[3])); //Iprintf("%d\n,',sizeof(b+3)); //4printf(H%d\nM,sizeof(*(b+4))); //Ireturn0;}sizeof就是要求一種數(shù)據(jù)(類型)所占內(nèi)存的字節(jié)數(shù).對于4.1中的s和psizeof(s)應(yīng)為6,而sizeof(p)應(yīng)為ー個"指針"的大小.13.我們需要編寫ー個圖形相關(guān)的應(yīng)用程序,需要處理大量圖形(Shape)信息,圖形有矩形(Rectangle),正方形(Square),圓形(Circle)等種類,應(yīng)用需要計算這些圖形的面積,并且可能需要在某個設(shè)備上進行顯示(使用在標準輸出上打印信息的方式做為示意)。a)請用面向?qū)ο蟮姆椒▽σ陨蠎?yīng)用進行設(shè)計,編寫可能需要的類b)請給出實現(xiàn)以上應(yīng)用功能的示例性代碼,從某處獲取圖形信息,并且進行計算和繪制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);.寫ー個程序,把ー個100以內(nèi)的自然數(shù)分解因數(shù)。(自然數(shù)分解因數(shù)就是將一個自然數(shù)分解為幾個素數(shù)的乘積,提示,由于該數(shù)不是很大,所以可以將質(zhì)數(shù)保存在數(shù)組中,以加快計算速度)分解質(zhì)因數(shù)的算法2005-03-13RainFly#include<iostream.h>ttinclude<math.h>#include<stdio.h>intmain(){inti=2,N;coutくく”請輸入ー個整數(shù):";cin?N;boolfcontinue=false;boolfound=false;while(l) 〃永遠循環(huán){intt=(int)sqrt(N);printf("sqrt(%d)=%d\n",N,t);for(;i<=sqrt(N);i++){printf("i=%d,sqrt(%d)=%d\n\n",i,N,t);if(N%i==0)〃i肯定是質(zhì)數(shù),N肯定不是質(zhì)數(shù)(fcontinue=true;〃如果找到ー個質(zhì)數(shù),則可以繼續(xù)分解printf(〃發(fā)現(xiàn)ー個質(zhì)數(shù),繼續(xù)分解、n〃);found=true;〃至少發(fā)現(xiàn)ー個質(zhì)數(shù)printf("在本次中,至少發(fā)現(xiàn)ー個質(zhì)數(shù)\n");coutくくiくく"X"くくend1;N=N/i;printfCN=%d\n”,N);break;if(i>sqrt(N))printf(*forloopisfinished'n");)if(fcontinue)(printf("跳過后面的部分,開始下一次分解\n");fcontinue=false;continue;)if(found){printf("在前面中,發(fā)現(xiàn)質(zhì)數(shù),在此輸出'n");cout<<N<<endl;)elsecoutくくNくく”是個質(zhì)數(shù),不能分解"くくendl;printf("中斷循環(huán),結(jié)束'n");break;)return0;}.編寫ー個Identify的分配、釋放的函數(shù),為1—10000之間的自然數(shù)。.分別實現(xiàn)itoa和atoi..Considerthefollowingcode:#include<stdio.h>4include<string.h>intmain(intargc,char*argv[]){inti=1;charbuf[4];strcpy(buf,"AAAA");printf("%d\n",i);return0;}Whencompiledandexecutedonx86,whydoesthisprogramusuallynotoutputwhattheprogrammerintended?在x86上為什么不能得到預(yù)期結(jié)果NameseveralwaysinwhichthesecurityproblemthatcausesthisprogramnottooutputwhattheprogrammerintendedcanbepreventedWITHOUTchangingthecode.參考:第一個問題:32位情況:x86卜,棧方向向上生長.在main的棧中,先分配i空間(4byte),然后分配4個字節(jié)的buf(地址在i的上面,比i小).strcpy越界,用〇把buf開始的第4(0開始)個字節(jié)覆蓋掉了.而x86是LSB排列順序,所以真好覆蓋了i的內(nèi)個數(shù)字1.所以顯示出數(shù)字0.16位情況同樣分析即可.第2問?20.說出結(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);}22.char*GetStr()(char*tmp;tmp="123"returntmp;)voidmain(){printf("%s",GetStr());}會輸出123嗎?123創(chuàng)建在堆上還是棧上呢?123的空間是什么時候釋放的?參考:“123”是常量字符串,存儲在全局變量區(qū),和靜態(tài)變量?起。即不在堆,也不在棧在程序結(jié)束時自動釋放4)char**p,a[16][8]:問:p=a是否會導(dǎo)致程序在以后出現(xiàn)問題?為什么?參考:這個不會導(dǎo)致出現(xiàn)問題,但是要注意p的使用,如等價的為*(*(p+l)+2)而不是?(p+11),會的,這樣會出現(xiàn)編譯錯誤正確的是:chara[5][5];char(*p)[5];p=a;如下所述的ifelse和switch語句哪個的效率髙?為什么?5)在同一個進程中,一個模塊是否可以通過指針操作破壞其它模塊的內(nèi)存,為什么?(華為)6)應(yīng)用程序在運行時的內(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ū)一般就是“堆?!薄J签`種線性結(jié)構(gòu),堆是一種鏈式結(jié)構(gòu)。進程的每個線程都有私有的“?!薄H肿兞亢挽o態(tài)變量分配在靜態(tài)數(shù)據(jù)區(qū),本地變量分配在動態(tài)數(shù)據(jù)區(qū),即堆棧中。程序通過堆棧的基地址和偏移量來訪問本地變量。24.Assignment2:PictureProcessingUseC++,Java,orsimilarlanguagesor/andanymiddlewaresuchasEJBandJ2EEtoprocessapicturewithahighresolution(3MegaPixelsforexample).Usesomemethodologiestodegradetheresolutionofthepicturetomakeitquickerforbrowsing.Thendividethedegradedpictureinto9sectorsequally.Clickanyofthe9sectorswillresultadetailedpictureforthissectorwiththesameresolutionasthatoftheoriginalpicture.Thisassignmentisdesignedforyoutodemonstrateyourabilitytohandlepictures..要開辟P1,P2,P3,P4內(nèi)存來做緩沖,大小自定,但這四個緩沖的大小要一樣,并且是連續(xù)的.有一浮點型數(shù)組ん用C語言寫ー函數(shù)實現(xiàn)對浮點數(shù)組A進行降序排序,并輸出結(jié)果,要求要以數(shù)組A作為函數(shù)的入口.(建議用冒泡排序法)voidBubbleSort(doublearr[],intn){inti,j;intexchange=1; 〃交換標志for(i=l;i<n;i++){〃最多做n-1趟排序exchanged: 〃本趟排序開始前,交換標志應(yīng)為假for(j=n-l;j>=i;j一)〃對當前無序區(qū)R[i..n]自下向上掃描if(arr[j+l]>arr[jD{〃交換記錄arr[0]=arr|j+1]; 〃R[0]不是哨兵,僅做暫存單元arr|j4-l]=arr[j];arr[j]=aiT[O];exchange=1; 〃發(fā)生了交換,故將交換標志置為真)if([exchange) 〃本趟排序未發(fā)生交換,提前終止算法return;} //endfor(外循環(huán))).找錯:Sinclude<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("name:%s\n",pBase->getName());printfC'newname:%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;mid=0;idee=0;for(i=O;i<len;i++)(if(shex[i]>='0'&&shex[i]<=,9')mid=shex[i]-'O\elseif(shex[i]>='a'&&shex[i]<=T)mid=shex[i]-'a'+10;elseif(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ù)將一條字符串分成兩部分,將前半部分按ASCII碼升序排序,后半部分不變,(如果字符串是奇數(shù)則中間的字符不變,)最后再將前后兩部分交換,然后將該字符串輸出,測試字符串“ADZDDJKJFIEJHGI”找錯#defineMAX_SRM256DSNget_SRM_no(){staticintSRMno;intI:for(I=0;I<MAX_SRM;I++)(if(MY_SRM.state==IDLE){break;})if(I>=MAX_SRM)return(NULL_SRM);elsereturnSRMno;)簡單的閱讀一下這個函數(shù),可以大概的可以猜測出這個函數(shù)的功能是分配ー個空閑的SRAM塊。方法:從上次分配的RAM塊后的RAM塊開始檢測SRAM每個RAM塊,看是否是IDLE狀態(tài),如果是IDLE則返回當前的RAM塊的號SRM-no。如果所有的RAM塊都不是IDLE狀態(tài),則意味著無法分配ー個RAM給函數(shù)調(diào)用者,返回?個表示沒有RAM可分配的標志(NULL_SRM)。經(jīng)過上面的分析,則這里可以知道,這個函竅的錯誤是for循環(huán)里面沒有給SRM_n。這個變量累加I。34.intfunc(inta){intb;switch(a){case1: b=30;b=20;b=16;b=0;)returnb;)則func(l)二035:inta[3];a[0]=0;a[l]=l;a[2]=2;int*p,*q;p=a;q=&a[2];則a[q-p]=?36.定義int**a[3][4],則變量占有的內(nèi)存空間為:—4837.編寫ー個函數(shù),要求輸入年月日時分秒,輸出該年月日時分秒的下一秒。如輸入2004年12月31日23時59分59秒,則輸出2005年1月1日〇時〇分。秒。.寫ー個函數(shù),判斷ー個int型的整數(shù)是否是2的基,即是否可以表示成2~X的形式(不可以用循環(huán))我只知道是用遞推,大概寫了一下,如下:intIsTwoPow(ints){if(s-l)returnFALSE;s=s>>1;if(s>l)IsTwoPow(s);return(s==l)?TRUE:FALSE;〃大概是這個意思,但是這一句似乎不該這么返回!)A,B從ー堆玻璃球(共100個)里向外拿球,規(guī)則如下:(DA先拿,然后一人一次交替著拿;(2)每次只能拿1個或2個或4個;(3)誰拿最后ー個球,誰就是最后的失敗者;問A,B誰將是失敗者?寫出你的判斷步驟。.已知:無序數(shù)組,折半查找,各元素值唯一。函數(shù)原型是:Binary_Seach(intarray[],intiValue,intiCount)array是數(shù)組,在里面用折半查找的方法找等于iValue的值,找到返回1否則0,iCount是元素個數(shù)41.統(tǒng)計一個字符串中字符出現(xiàn)的次數(shù)100位以上的超大整數(shù)的加法(主要考慮數(shù)據(jù)結(jié)構(gòu)和加法的實現(xiàn))對如下電文:"CASTCASTSATATATASA”給出Huffman編碼。int(*(*f)(int,int))(int)表示什么含義?afunctionpointeritpointstoafunctionthattakestwoargumentsandreturnanotherfunctionpointerthatisHint(*)(int)Mx=x+l,x+=l,x++,為這三個語句的效率排序。并說明為什么。中綴表達式A-(B+C/D)*E的后綴形式是什么?47.structS1{charc;inti;);sizeof(SI)=?classX{public:X();virtual'X();voidmyMemberFunc();staticvoidmyStaticFunc();virtualvoidmyVirtualFuncO;private:inti;char*pstr;chara;)sizeof(X)=?.找出兩個字符串中最大子字符串,如"abractyeyt","dgdsaeactyey”的最大子串為"actyet”#include"stdio.h" char*pl,*p2,*ql,*q2,*destp;char*maxsubstr(char*strl,char*str2) char*substr;{ intmax=0,len;

pl=strl;while(*pl!='')(ql=str2;while(*ql!='')(len=0;p2=pl;q2=ql;while((*p2!='')&&(*q2!=''))(if(*p2==*q2)(p2++;q2++;len++;}elsebreak;}if(len>max)(.有一百個整數(shù),其中有負數(shù),找出連續(xù)三個數(shù)之和:voidhundurd(inta[],intn)(longresult=0;inttempi=a[0]+a[l]+a[2];inttemp2;result=tempi;for(inti=2;i<n;i++){temp2=temp2-a[i-2]+a[i+1];if(temp2>tempi)(result=temp2;}tempi=temp2;)returnresult;}.寫ー程序?qū)崿F(xiàn)快速排序.假設(shè)數(shù)據(jù)輸入為ー文件快速算法描述如下AlgorithmPartitionInput:sequenceaO,...,an-lwithnelementsOutput:permutationofthesequencesuchthatsthanorequaltoal1elementsai,...,an-l(i>j)Method:choosetheelementinthemiddleofthesequeleti=0andj=n-lwhileijsearchthefirstelementaiwhichisgreasearchthelastelementajwhichislessifijexchangeaiandajleti=i+1andj=j-1max=len;destp=pl;}ql++;)max=len;destp=pl;}ql++;)pl++;)substr=(char*)malloc(sizeof(char)*max);strncpy(substr,destp,max);returnsubstr;}intmain(){char*sl="asdfghjkl”;char*s2=asdwfghjews*;char*sub;printf(*%s%s”,si,s2);sub=maxsubstr(si,s2);printflthemaxsubstringis:%s,sub);return0;)elementsaO,...,ajarelesascomparisonelementxthanorequaltoxorequaltoxthetwopartsrecursivelybyTherecursionendswheneverapartconsistsofoneelementonly..寫ー算法檢測單向鏈表中是否存在環(huán)(whetherthereisaloopinalinklist),要求算法復(fù)雜度(Algorithm'scomplexity是0(n))并只使用常數(shù)空間(spaceis0(c)).注意,你只知道一個指向單向鏈表頭的指針。鏈表的長度是不定的,而且環(huán)出現(xiàn)的地方也是不定的,環(huán)有可能在頭,有可能在中間。而且要求是檢測,不能破壞環(huán)的結(jié)構(gòu).(MOTO)答:用兩個指針來遍歷這個單向鏈表,第一個指針p1,每次走ー步;第二個指針p2,每次走兩步;當p2指針追上p1的時候,就表明鏈表當中有環(huán)路了。inttestLinkRing(Link*head)(Link*t1=head,*t2=head;while(t1->next&&t2->next){t1=t1->;next;if(NULL==(12=t2->next->next))return0;〃無環(huán)if(t1==t2)return1;)return0;}如果要定位環(huán)路在鏈表當中的開始點發(fā)現(xiàn)p2和p1重合,確定了單向鏈表有環(huán)路了。接下來,讓p2回到鏈表的頭部,重新走,P1也繼續(xù)走,每次步長都走1,那么當p1和p2再次相遇的時候,就是環(huán)路的入口了。.設(shè)下列函數(shù)已經(jīng)通過了調(diào)試boolSort_Array(ArrayType*Pinputarray,ArrayType*Poutarray);該函數(shù)在內(nèi)存中排序,能把字節(jié)數(shù)最大為100M字節(jié)的ArrayType類型的數(shù)組排序。其中ArrayType是ー個預(yù)定義的數(shù)組類型(細節(jié)無關(guān)緊要),Pinputarray,Poutarray分別為排序前的指針和排序后的指針。請用c語言的偽碼風格設(shè)計ー個算法,他調(diào)用上面給出的函數(shù)完成下列從輸入到輸出的任務(wù):輸入:排序前的大文件,名稱為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ù)公用,因此可以避免在其它源文件中引起錯誤。55..解二次方程:a*x*x+b*x+cintQuadratic(doublea,doubleb,doublec,doubleftxl,doubleftx2);返回值:解的個數(shù)用求根公式計算.最大公約數(shù)DWORDDivisor(DWORDdwFirst,DWORDdwSecond);返回值:最大公約數(shù)longDivisor(longdwFirst,longdwSecond)if(dwFirst<dwSecond)(longtemp=dwFirst;dwFirst=dwSecond;dwSecond=temp;)if(dwSecond==0){returndwFirst;)if(dwFirst%2=0){if(dwSecond%2==0)(return(Divisor(dwFirst>>1,dwSecond?1)?1);)else(returnDivisor(dwFirst?1,dwSecond);))else{if(dwSecond%2==0){returnDivisor(dwFirst,dwSecond>>1);)else{returnDivisor(dwSecond,dwFirst-dwSecond);)}}.根據(jù)蒙特卡洛算法計算圓周率doublePI(DOWRDdwCount/?測試次數(shù)?/);返回值:PI/**//*利用蒙特卡洛算法近似求圓周率PIVC++6.0ZZH*/#includeくiostream>#include<cmath>#include<ctime>^defineCOUNT500000〃循環(huán)取樣次數(shù)usingnamespacestd;boolInCircle(doublex,doubley)〃是否在1/4圓范圍之內(nèi)(if((x*x+y*y)<=1)returntrue;returnfalse;voidmain()doublex,y;intnum=0;inti;srand((unsigned)time(NULL));for(i=0;i<C0UNT;i++){x=rand()*l.0/RAND_MAX;y=rand()*1.0/RAND_MAX;if(InCircle(x,y))num++;)coutく<"PI:"〈〈(num*4.0)/C0UNT?endl;)結(jié)果:測試5次的結(jié)果顯示:3.13958,3.14041,3,13729,3,13859,3.14186.無符號整數(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;1#include"filename,h”和#includeくfilename.h>的區(qū)別?對于#include〈filename,h〉編譯器從標準庫開始搜索filename,h:對于#include"filename,h”編譯器從用戶工作路徑開始搜索filename.h2頭文件的作用是什么?ー、通過頭文件來調(diào)用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只要向用戶提供頭文件和二進制的庫即可。用戶只需要按照頭文件中的接口聲明來調(diào)用庫功能,而不必關(guān)心接口怎么實現(xiàn)的。編譯器會從庫中提取相應(yīng)的代碼。二、頭文件能加強類型安全檢查。如果某個接口被實現(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;}〃插入操作StatusListInsert_DuL(DuLinkList&L,inti,ElemType&e)|if(!(p=GetElemP_DuL(L,i)))returnERROR;if(!(s=(DuLinkList)maUoc(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個空格。include<iostream>#include<string>usingnamespacestd;intmain()(strings=',dasfas\tfdasfsdaf\tdfsdfa";intc=0;while((c=s.find(,'\t,',c+l))!=string::npos)(s.replace(c,l,H");)cout?s?endl;return0;}7Windows程序的入口是哪里?寫出Windows消息機制的流程.A:入口點是WinMain函數(shù).Windows消息機制的流程:Windows中有一個系統(tǒng)消息隊列,對于每ー個正在執(zhí)行的Windows應(yīng)用程序,系統(tǒng)為其建立一個“消息隊列”,即應(yīng)用程序隊列,用來存放該程序可能創(chuàng)建的各種窗口的消息。應(yīng)用程序中含有一段稱作“消息循環(huán)”的代碼,用來從消息隊列中檢索這些消息并把它們分發(fā)到相應(yīng)的窗口函數(shù)中。Windows為當前執(zhí)行的每個Windows程序維護ー個「消息隊列」。在發(fā)生輸入事件之后,Windows將事件轉(zhuǎn)換為ー個「消息」并將消息放入程序的消息隊列中。程序通過執(zhí)行ー塊稱之為「消息循環(huán)」的程序代碼從消息隊列中取出消息:while(GetMessage(&msg,NULL,0,0))TranslateMessage(&msg);DispatchMessage(&msg);}TranslateMessage(&msg);將msg結(jié)構(gòu)傳給Windows,進行ー些鍵盤轉(zhuǎn)換。DispatchMessage(&msg);又將msg結(jié)構(gòu)回傳給Windows。然后,Windows將該消息發(fā)送給適當?shù)拇翱谙⑻幚沓绦?讓它進行處理。SendMessage()與PostMessage()之間的區(qū)別是什么?它們兩者是用于向應(yīng)用程序發(fā)送消息的。PostMessagexO將消息宜接加入到應(yīng)用程序的消息隊列中,不等程序返回就退出;而SendMessage。則剛好相反,應(yīng)用程序處理完此消息后,它オ返回。8如何定義和實現(xiàn)ー個類的成員函數(shù)為回調(diào)函數(shù)?把成員函數(shù)申明為static就可以了。C++里面是不是所有的動作都是main。引起的?如果不是,請舉例.當然不是所有的動作都是main。引起的,只是編譯器由main。開始執(zhí)行的比如全局變量的初始化,就不是由main函數(shù)引起的靜態(tài)變量和全局變量的分配早在main之前完成內(nèi)聯(lián),模板,函數(shù)聲明,宏的擴展全是預(yù)編譯期行為,也不是main。完成的注:C++和main。邏輯上沒有必然的聯(lián)系。C++里面如何聲明constvoidf(void)函數(shù)為C程序中的庫函數(shù)(華為)extern"C"voidf(void);所以extern"C”是強迫C++編譯器對函數(shù)名進行修飾的時候采用C命名約定。11下列哪兩個是等同的intb;Aconstint*a=&b;Bconst*inta=&b;Cconstint*consta=&b;Dintconst*consta=&b;如果const關(guān)鍵字不涉及到指針,我們很好理解,下面是涉及到指針的情況:intb=500;constint*a=&b;[1]intconst*a=&b;[2]int*consta=&b;[3]constint*consta=&b;[4]如果你能區(qū)分出上述四種情況,那么,恭喜你,你已經(jīng)邁出了可喜的ー步。不知道,也沒關(guān)系,我們可以參考《Effectivec++》Item21上的做法,如果const位于星號的左側(cè),則const就是用來修飾指針所指向的變量,即指針指向為常量:如果const位于星號的右側(cè),const就是修飾指針本身,即指針本身是常量。因此,[1]和[2]的情況相同,都是指針所指向的內(nèi)容為常量(const放在變量聲明符的位置無關(guān)),這種情況下不允許對內(nèi)容進行更改操作,如不能?a=3;[3]為指針本身是常量,而指針所指向的內(nèi)容不是常量,這種情況下不能對指針本身進行更改操作,如a++是錯誤的;[4]為指針本身和指向的內(nèi)容均為常量。另外const的ー些強大的功能在于它在函數(shù)聲明中的應(yīng)用。在ー個函數(shù)聲明中,const可以修飾函數(shù)的返回值,或某個參數(shù);對于成員函數(shù),還可以修飾是整個函數(shù)。有如下幾種情況,以下會逐漸的說明用法:A&operator=(constA&a);voidfunO(constA*a);voidfunl()const;//funl()為類成員函數(shù)constAfun2();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時,不能簡單地比較。由于計算誤差,相等的概率很低。應(yīng)判斷兩數(shù)之差是否落在區(qū)間(-e,e)內(nèi)。這個e應(yīng)比浮點數(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設(shè)為頭節(jié)點(head=ps;)操作下ー個元素(ps=pe->next;)等于是依次將每個元素翻到原頭節(jié)點前面。15設(shè)計ー個重采樣系統(tǒng),說明如何anti-alias16某個程序在ー個嵌入式系統(tǒng)(200M的CPU,50M的SDRAM)中已經(jīng)最化了,換到另一個系統(tǒng)(300M的CPU,50M的SDRAM)中運行,還需要優(yōu)化嗎?.對排序算法的總結(jié):(1)若n較小(如n<50),可采用直接插入或直接選擇排序。當記錄規(guī)模較小時,直接插入排序較好;否則因為直接選擇移動的記錄數(shù)少于直接插入,應(yīng)選直接選擇排序為宜。(2)若文件初始狀態(tài)基本有序(指正序),則應(yīng)選用直接插人、冒泡或隨機的快速排序為宜;(3)若n較大,則應(yīng)采用時間復(fù)雜度為O(nlgn)的排序方法:快速排序、堆排序或歸并排序??焖倥判蚴悄壳盎诒容^的內(nèi)部排序中被認為是最好的方法,當待排序的關(guān)鍵字是隨機分布時,快速排序的平均時間最短;堆排序所需的輔助空間少于快速排序,并且不會出現(xiàn)快速排序可能出現(xiàn)的最壞情況。這兩種排序都是不穩(wěn)定的17.下面哪種排序法對12354最快aquicksortbublesort若文件初始狀態(tài)基本有序(指正序),則應(yīng)選用直接插人、冒泡或隨機的快速排序為宜;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ù)段并且在程序開始運行的時候被加載。局部變量則分配在堆棧里面。22ー些寄存器的題目,主要是尋址和內(nèi)存管理等一些知識。238086是多少位的系統(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筆試題>>.完成下列程序4include<stdio.h>#defineN8intmain(){inti;intj;intk;for(i=l;i<=N;i++)(for(j=l;j<=i;j++)(printf(〃?〃);k=0;while(k<i-1)(printf(".");k++;))printf('\n");return0;)26完成程序,實現(xiàn)對數(shù)組的降序排序ftinclude<stdio.h>voidsort( );intmain()(intarray[]={45,56,76,234,1,34,23,2,3);〃數(shù)字任〃意給出sort( );return0;2?費波那其數(shù)列,1,1,2,3,5……編寫程序求第十項??梢杂眠f歸,也可以用其他方法,但要說明你選擇的理由。#include<stdio.h>intPheponatch(int);intmain(){printf("The10this%d”,Pheponatch(10));return0;)intPheponatch(intN)28下列程序運行時會崩潰,請找出錯誤并改正,并且說明原因。ttinclude<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)I|(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)號,255,255.240.0化成二進制11111111.11111111.11110000.00000000,W12個”〇”,2A12-2=4096-2=4094a.240b.255c.4094d.6553.Whatisthedifference:betweeno(logn)ando(lognA2),wherebothlogarithems(對數(shù))havebase2.a.o(logn2)isbiggerb.o(logn)isbiggerc.nodifference.Foraclasswhatwouldhappenifwecallaclass'sconstructorfromwiththesameclass'pilationerrorb.linkingerrorc.stackoverflowd.noneoftheabove.“new”inC++isa:A.1ibraryfunction1ikemallocincB.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ù)。.Whichofthefollowinginformationisnotcontainedinaninode.a.fileownerb.filesizec.filenamed.diskaddress.Whafsthenumberofcomparisonsintheworstcasetomergetwosortedlistscontainingnelementseach.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.n*2 d.nn.ThenumberofTsinthebinaryrepresentationof3*4096+15*256+5*16+3aa.8 b.9 c.10 d.12.設(shè)計函數(shù)intatoi(char*s)i=(j=4,k=8,l=16,m=32);printf(u%d,,5i);輸出是多少?.解釋局部變量、全局變量和靜態(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分配,需要手工釋放,不然會導(dǎo)致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ù)就有。.以下三條輸出語句分別輸出什么?[C易]charstrl[] = "abc";charstr2[]="abc";constcharstr3[]=abc”;constcharstr4[]=abc;constchar*str5="abc;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++內(nèi)建型別A和B,在哪幾種情況下B能隱式轉(zhuǎn)化為A?[C++中等]答:class B : publicA { } // B公有繼承自A,可以是間接繼承的class B { operator A( ) ; } // B實現(xiàn)了隱式轉(zhuǎn)化為A的轉(zhuǎn)化class A { A(const B& ); } // A實現(xiàn)了non-explicit的參數(shù)為B(可以有其他帶默認值的參數(shù))構(gòu)造函數(shù)d.A&operator=(constA&);〃賦值操作,雖不是正宗的隱式類型轉(zhuǎn)換,但也可以勉強算ー個.以下代碼中的兩個sizeof用法有問題嗎?[C易]voidUppercase(charstr[])//將str中的小寫字母轉(zhuǎn)換成大寫字母(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?"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+'0';if(ch>'9')ch+=('A'9'-1);charcl=c%0xl0+'O';if(cl>'9')cl+=('A'9'-1);cout?ch<<cl?'';)charstr[]="Ilove中國”;for(size_ti=0;i<strlen(str);++i)char2Hex(str[i]);cout<<endl;.以下代碼有什么問題?[C++易]structTestTest(int)TestO{}voidfun()voidmain(void)Testa(l);a.fun();Testb();b.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];答:str2定義出錯,size2非編譯器期間常量,而數(shù)組定義要求長度必須為編譯期常量。.以下代碼中的輸出語句輸出。嗎,為什么?[C++易]structCLS(intmi;CLS(inti):m_i(i){}CLS()(CLS(O);));CLSobj:cout?obj.m_i?endl;答:不能。在默認構(gòu)造函數(shù)內(nèi)部再調(diào)用帶參的構(gòu)造函數(shù)屬用戶行為而非編譯器行為,亦即僅執(zhí)行函數(shù)調(diào)用,而不會執(zhí)行其后的初始化表達式。只有在生成對象時,初始化表達式オ會隨相應(yīng)的構(gòu)造函數(shù)一起調(diào)用。.C++中的空類,默認產(chǎn)生哪些類成員函數(shù)?[C++易]答:classEmpty{public:Empty(); /Z缺省構(gòu)造函數(shù)Empty(constEmpty&); /Z拷貝構(gòu)造函數(shù)"Empty(); /Z析構(gòu)函數(shù)Empty&operator=(constEmpty&);/Z賦值運算符Empty*operator&(); /Z取址運算符constEmpty*operators()const;/Z取址運算符const);.以下兩條輸出語句分別輸出什么?[C++難]floata=1.Of;cout<<(int)a<<endl;cout<<(int&)a?endl;cout<<boolalpha<<((int)a==(int&)a)?endl;/Z輸出什么?floatb=0.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,pushback(2);array.push_back(3);for(vector::size_typei=array.size()-1;i>=0;-i)/Z反向遍丿カarray數(shù)組cout?array[i]?endl;答:首先數(shù)組定義有誤,應(yīng)加上類型參數(shù):vector<int>array〇其欠vector::size_type被定義為unsignedint,即無符號數(shù),這樣做為循環(huán)變量的i為0時再減1就會變成最大的整數(shù),導(dǎo)致循加失去控制。.以下代碼有什么問題?[STL易]typedefvectorIntArray;IntArrayarray;array.push_back(1);array.push_back(2);array.push_back(2);array.push_back(3);/Z刪除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)容會自動往前移,導(dǎo)致迭代漏項,應(yīng)在刪除ー項后使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!=-1;―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)絡(luò)結(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和protectedI結(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::AdditionalFunction(ClassAa,ClassBb);則可以在AdditionalPunction(ClassAx,ClassBy)的實現(xiàn)部分(函數(shù)功能體內(nèi)部)出現(xiàn)的合法的表達是最全的是:x.PrivateFunc();x.PublicFuncO;y.PrivateFunc();y.PublicFunc();x.PrivateFunc();x.PublicFuncO;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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論