




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
國家二級C++機試(選擇題)模擬試卷25(共9套)(共222題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共20題,每題1.0分,共20分。)1、下列語句中,錯誤的是()。A、constintbuffel"=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);標準答案:B知識點解析:此題考查的是符號常量的概念。符號常量必須在聲明的同時賦初值,故選項B錯誤;選項C定義的是一個指向常量的指針變量,即通過指針不能改變它所指向的內(nèi)容,而它自己的內(nèi)容是可以改變的,C選項正確。2、下列字符串中,不可以用做C++標識符的是()。A、y2006B、_TEST_HC、ReturnD、switch標準答案:D知識點解析:本題考查c++標識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標識符不能使用C++已有的關鍵字;③大、小寫字母表示不同意義,即代表不同的標識符。選項C中雖然return是關鍵字,但因首字母大、小寫不同,也可用于標識符,但不建議使用。故答案為D。3、在面向?qū)ο蠓椒ㄖ校粚儆凇皩ο蟆被咎攸c的是()。A、一致性B、分類性C、多態(tài)性D、標識唯一性標準答案:A知識點解析:對象具有如下特征:標識惟一性、分類性、多態(tài)性、封裝性、模塊獨立性。4、下面程序輸出的結(jié)果為()。#tnclude<iostream.h>voidfun(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=1;n=2;fun(m,n);cout<<m<<""<<n<<endl;}A、12B、21C、22D、程序有錯誤標準答案:A知識點解析:函數(shù)fun中定義的參數(shù)a和b為形式參數(shù),它們并不是實際存在的數(shù)據(jù),只有在發(fā)生函數(shù)調(diào)用時才被分配內(nèi)存空間,結(jié)束后,形參所占有的內(nèi)存單元也被釋放。并且函數(shù)fun沒有返回值,它做的交換操作,并不能影響實際參數(shù)m和n。所以輸出值保持不變,仍然是1和2,即輸出:12。5、軟件需求規(guī)格說明書的作用不包括()。A、軟件驗收的依據(jù)B、用戶與開發(fā)人員對軟件要做什么的共同理解C、軟件設計的依據(jù)D、軟件可行性研究的依據(jù)標準答案:D知識點解析:軟件規(guī)格說明書主要有三個作用:①用戶和軟件開發(fā)人員之間的合同;②開發(fā)人員進行設計和編程的依據(jù);③軟件工程項目驗收的依據(jù)。6、一般情況下,當對關系R和S進行自然連接時,要求R和S含有一個或者多個共有的()。A、記錄B、行C、屬性D、元組標準答案:C知識點解析:自然連接要滿足兩個條件:一是兩關系之間有公共域。二是通過共域的相等值進行連接。7、下列描述中,不屬于面向?qū)ο笏枷胫饕卣鞯氖?)。A、封裝性B、跨平臺性C、繼承性D、多態(tài)性標準答案:B知識點解析:封裝性、繼承性和多態(tài)性是面向?qū)ο蟪绦蛟O計的三個基本特征??缙脚_性不是面向?qū)ο蟪绦蛟O計的特征。8、下面是類shape的定義:classShape{public:VirtualvoidDraw()=0;};下列關于Shape類的描述中,正確的是()。A、類Shape是虛基類B、類Shape是抽象類C、類Shape中的Draw函數(shù)聲明有誤D、語句“Shapes;”能夠建立Shape的一個對象S標準答案:B知識點解析:因為類Shape中包含純虛函數(shù)Draw(),所以類Shape是抽象類。9、有如下程序段:inti=4;intj=1;intmain(){inti=8,j=i;cout<<i<<j<<end1;}運行時的輸出結(jié)果是()。A、44B、41C、88D、81標準答案:C知識點解析:這個程序定義了全局整型對象i和j,其值分別等于4和1。而在主函數(shù)中定義了局部整型對象i和j,i值賦予8,再把i值賦給j,接著輸出i和j的值,所以其結(jié)果為88。這個題目要注意的一點是,全局整型對象i和j和主函數(shù)中定義了局部整型對象i和j,在計算機內(nèi)存中表示的是不同的存儲單元。它們的值是獨自存放的,互相不同。10、計算斐波那契數(shù)列第n項的函數(shù)定義如下:intfib(intn){if(n==0)return1;elseif(n=1)return2;elseretumfib(n一1)+fib(n一2);}若執(zhí)行函數(shù)調(diào)用表達式fib(2),函數(shù)fib被調(diào)用的次數(shù)是()。A、1B、2C、3D、4標準答案:B知識點解析:斐波那契數(shù)列是遞歸函數(shù),所以fib(2)=fib(1)+fib(0)=2+1=3。因而執(zhí)行函數(shù)調(diào)用表達式fib(2)時,函數(shù)fib被調(diào)用的次是2次。11、有如下程序段:inti=5;while(inti=0){cout<<’*’;i--;}運行時輸出’’*’’的個數(shù)是()。A、0B、1C、5D、無窮標準答案:A知識點解析:因為while循環(huán)中,因為i的值等于0,所以while循環(huán)體一次也不執(zhí)行。因而運行時輸出“*”的個數(shù)是0。12、語句ofstreamf("SALARY.DAT",ios_base∷app);的功能是建立流對象f,并試圖打開文件SALARYDAT與f關聯(lián),而且()。A、若文件存在,將其置為空文件;若文件不存在,打開失敗B、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D、若文件存在,打開失?。喝粑募淮嬖?,建立一個新文件標準答案:B知識點解析:此題考查的是文件打開模式。文件打開模式iso_base∷app是為添加數(shù)據(jù)而打開(總是在尾部寫),故只有選項B說法正確。13、下列關于類成員對象構(gòu)造函數(shù)調(diào)用順序的敘述中,正確的是()。A、與它們在初始化列表中的順序相同B、與它們在類中聲明的順序相同C、與析構(gòu)函數(shù)的調(diào)用順序相同D、順序不確定標準答案:B知識點解析:類成員對象構(gòu)造函數(shù)的調(diào)用是按照在類中定義的順序進行的,而不是按照構(gòu)造函數(shù)說明后的冒號順序進行構(gòu)造的。14、有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA::b=0;intmain(){XAd1(4),d2(5);cout<<d1.getA()+d2.getA()+XA::b+d1.b<<endl;returnO;}運行這個程序的輸出結(jié)果是()。A、9B、11C、13D、15標準答案:C知識點解析:在類XA的構(gòu)造函數(shù)中,定義了用成員變量a的值初始化變量髓,同時靜態(tài)成員變量b值加1。所以當在主main函數(shù)中定義類XA的對象d1(4)后,變量b的等于1,定義對象d2(5)后,變量b的值等于2,所以表達式d1.getA()+d.2.getA()+XA::b+d1.b等于4+5+1+2+1=13。15、己知類Myclass的定義如下classMyclass{public:voidfunctionl(Myclass&c){cout<<c.data;)staticvoidfunction2(Myclass&c){cout<<c.data;}voidfunction3(){cout<<data;}staricvoidfunction4(){cout<<data;}private:intdata;};其中有編譯錯誤的函數(shù)是()。A、functionlB、function2C、function3D、function4標準答案:D知識點解析:funcyion4()函數(shù)作為類的靜態(tài)成員函數(shù),不能直接訪問類中說明的非靜態(tài)成員,即cout<<data在編譯時會出錯。16、如果派生類以protected方式繼承基類,則原基類的protected成員和public成員在派生類中的訪問屬性分別是()。A、public和publicB、public和protectedC、protected和publicD、protected和protected標準答案:D知識點解析:此題考查的是基類成員在派生類中的訪問屬性。派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。派生類從基類公有繼承時,基類的公有成員和保護成員在派生類中仍然是公有成員和保護成員;派生類從基類私有繼承時,基類的公有成員和保護成員在派生類中都變成私有成員;派生類從基類保護繼承時,基類的公有成員在派生類中變成保護成員,基類的保護成員在派生類中仍然是保護成員。17、有如下程序:#includeusingnamespacestd;classAA{intk;protected:intn;voidsetK(intk){this->k=k;}public:voidsetN(intn){this->n=n;}};classBB:publicAA{/*類體略*/};intmain(){BBx;x.n=1://1x.setN(2);//2x.k=3;//3x.setK(4);//4return0;}在標注號碼的四條語句中正確的是()。A、1B、2C、3D、4標準答案:B知識點解析:因為類BB公有繼承自類AA,所以AA中的保護成員和公有成員在類BB中仍是保護成員和公有成員。在選項B中調(diào)用了公有成員函數(shù)setN(intn){this->n=n;},對保護成員n進行賦值操作。18、下列關于運算符重載的描述中,正確的是()。A、運算符重載為成員函數(shù)時,若參數(shù)表中無參數(shù),重載的是一元運算符B、一元運算符只能作為成員函數(shù)重載C、二元運算符重載為非成員函數(shù)時,參數(shù)表中有一個參數(shù)D、C++中可以重載所有的運算符標準答案:A知識點解析:此題考查的是運算符的重載。運算符重載為成員函數(shù)時,形參個數(shù)一般為運算符元數(shù)減1;重載為非成員函數(shù)時,形參個數(shù)一般和運算符元數(shù)相等。所以二元運算符重載為非成員函數(shù)時,參數(shù)表中應有兩個參數(shù),C選項錯誤:運算符重載為成員函數(shù),若參數(shù)表中無參數(shù),重載的是一元運算符,選項A正確:一元運算符中,“-”(取負)、“++”、“--”等均可重載為成員函數(shù):C++語言中,“.”、“.*”、“->*”、“::”、“?:”五個運算符不能重載。19、要建立文件流并打開當前目錄下的文件file.dat用于輸入,下列語句中錯誤的是()。A、ifstreamfin=ifstream.open("file.dat");B、ifstream*fin=newifstream("file.dat");C、ifstreamfin;fin.open("file.dat");D、ifstream*fin=newifstream();fin->open("file.dat");標準答案:A知識點解析:在選項A中,在賦值號的左側(cè)表示建立一個輸入流對象fin,而在賦值號的右側(cè)的表達式不正確,因為文件輸入流類ifStream不能直接調(diào)用其成員函數(shù)open。20、如果表達式a>_b中的“>=”是作為非成員函數(shù)重載的運算符,則可以等效地表示為()。A、a.operator>=(b)B、b.operatotr>=(a)C、operator>=(a,b)D、operator>=(b,a)標準答案:C知識點解析:運算符函數(shù)作為非成員函數(shù)時,沒有隱含的mis指針,因此所有的操作數(shù)必須出現(xiàn)在參數(shù)表中,對于二元運算符,參數(shù)表中有兩個參數(shù),分別代表第一操作數(shù)和第二操作數(shù),且順序不能改變。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共22題,每題1.0分,共22分。)1、下列關于棧敘述正確的是A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠不能被刪除D、以上三種說法都不對標準答案:A知識點解析:棧是先進后出的線性表,棧頂?shù)脑刈钕缺粍h除,棧底的元素最后被刪除。2、下列鏈表中,其邏輯結(jié)構(gòu)屬于非線性結(jié)構(gòu)的是A、二叉鏈表B、循環(huán)鏈表C、雙向鏈表D、帶鏈的棧標準答案:A知識點解析:二叉鏈表作為樹的存儲結(jié)構(gòu)。鏈表中結(jié)點的兩個鏈域分別指向該結(jié)點的第一個孩子結(jié)點和下一個兄弟結(jié)點。3、下列關于二叉樹的敘述中,正確的是()。A、葉子結(jié)點總是比度為2的結(jié)點少一個B、葉子結(jié)點總是比度為2的結(jié)點多一個C、葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D、度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍標準答案:B知識點解析:由二叉樹的性質(zhì)可以知道在二叉樹中葉子結(jié)點總是比度為2的結(jié)點多一個。4、有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;)若執(zhí)行代碼段:intx=0,y=l;func(x,y);則變量X和Y的值分別是()。A、0和1B、1和1C、0和2D、1和2標準答案:C知識點解析:此題考查的是函數(shù)參數(shù)的傳遞方式。此題中形參a是普通參數(shù),即傳值調(diào)用,函數(shù)中對a增1不會影響到實參x的值;形參b是傳址調(diào)用,函數(shù)中對b增1同時會改變實參y的值。故最終結(jié)果是0和2。5、從表中任何一個結(jié)點位置出發(fā)就可以不重復地訪問到表中其他所有結(jié)點的鏈表是A、循環(huán)鏈表B、雙向鏈表C、單向鏈表D、二叉鏈表標準答案:A知識點解析:循環(huán)鏈表是另一種彤式的鏈式存貯結(jié)構(gòu)。它的特點是表中最后一個結(jié)點的指針域指向頭結(jié)點,整個鏈表形成一個環(huán),循環(huán)一圈就訪問到了表中其他所有結(jié)點而不重復。6、以下關鍵字不能用來聲明類的訪問權(quán)限的是()。A、PublicB、staticC、protectedD、private標準答案:B知識點解析:此題考查的是類的訪問權(quán)限。在C++語言中,類的訪問權(quán)限有公有、保護和私有三種。故本題選B。7、有如下程序:#includeusingnamespacestd;classA{public:staticima:voidinit(){a=1;}A(inta=2){init();a++;}}、;intA::a=0;Aobj;intmain(){cout<A、0B、1C、2D、3標準答案:B知識點解析:本題考查構(gòu)造函數(shù),本題中對類中的a數(shù)據(jù)成員先是賦值為0,當定義了對象obj時,執(zhí)行構(gòu)造函數(shù),將a的值變?yōu)榱?,所以輸出1。8、數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。A、控制流B、事件驅(qū)動C、模塊調(diào)用D、數(shù)據(jù)流標準答案:D知識點解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中帶箭頭的線段表示數(shù)據(jù)流,沿箭頭方向傳遞數(shù)據(jù)的通道,一般在旁邊標注數(shù)據(jù)流名。9、下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是()。A、用一個對象去初始化同一類的另一個新對象時B、將類的一個對象賦值給該類的另一個對象時C、函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時D、函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時標準答案:B知識點解析:此題考查的是復制構(gòu)造函數(shù)的概念。用一個已知的對象初始化一個正在創(chuàng)建的同類對象時,就會發(fā)生復制構(gòu)造函數(shù)。因此,選項A、C、D均會調(diào)用復制構(gòu)造函數(shù),而只有選項B沒有創(chuàng)建的動作,不調(diào)用復制構(gòu)造函數(shù)。10、有如下定義:inta[5]={1,3,5,7,9},*P=a;下列表達式中不能得到數(shù)值5的是()。A、a[2]B、a[3]C、*(P+2)D、*P+4標準答案:B知識點解析:本題考查指向數(shù)組的指針,本題中指針變量p指向數(shù)組a,直接使用數(shù)組下標即可取值,數(shù)組下標是從0開始標號的,所以a[2]能取到5,而a[3]取不到5,C選項中使用指針后移方法能夠取到5,D選項中木p為l,所以木p+4為5。11、下列符號中能夠作為C++標識符的是()。A、constB、2aC、_shapeD、_count標準答案:C知識點解析:此題考查的是C++標識符。標識符是由數(shù)字、字母以及下劃線構(gòu)成,其第一個字符必須是字母或下劃線,中間不能有空格;標識符的長度是任意的,但由于編譯系統(tǒng)的限制一般不超過31個字符;標識符中的大小寫字母是不同的;定義標識符時不能采用系統(tǒng)的保留字。12、有如下程序:#include<iostrearn>usingnamespacestd;intmain(){inta[6]={23,15,64,33,40,58};ints1,s2;s1=s2=a[0];for(int*p=a+1;p<a+6;p++){if(s1>*p)s1=*p;if(s2<*p)s2=*p;}cout<<s1+s2<<endl;return0;}運行時的輸出結(jié)果是()。A、23B、58C、64D、79標準答案:D知識點解析:變量s1和s2的初值都等于23,那么在執(zhí)行第一次for循環(huán)時,*p的值等于15,它小于23,所以把15賦給變量s1;執(zhí)行第二次for循環(huán)時,*p的值等于64,它大于23,所以把64賦給變量s2;而數(shù)組a中a[2]后面的元素的值都大于15,小于64,因而變量s1,s2的值不會再發(fā)生變化,最終值為15+64=79。13、有如下程序:#include<iostream>usingnamespacestd;longfun(intn){if(n>2)remm(fun(n-1)+fun(n-2));elsereturn2;}intmain(){cout<<fun(3)<<endl;return0;}則該程序的輸出結(jié)果應該是()。A、2B、3C、4D、5標準答案:C知識點解析:主函數(shù)中調(diào)用fun(3),在fun內(nèi)部當n>2時遞歸調(diào)用fun(n-1)+fun(n-2),否則返回2。所以當n=3時,調(diào)用fun(2)+fun(1),即返回2+2,等于4。14、有如下定義:inta[5]={1,3,5,7,9},*p=a;下列表達式中不能得到數(shù)值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4標準答案:B知識點解析:此題考查的是指針引用數(shù)組元素。B選項中,a[3]是數(shù)組的第四個元素,即7;其它選項的引用均可得到5。15、若一個函數(shù)的原型為“int*Xfunl(intx,int&y,charz);”,則該函數(shù)的返回值類型為()。A、int*B、intC、int&D、char標準答案:A知識點解析:由“int*Xfunl(intx,int&y,charz);”的定義可知,其返回值為指向int指針的函數(shù)。16、有如下程序:#inc1ude<iostream>usingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);)protected:chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列敘述中正確的是()。A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句①和②都出錯標準答案:C知識點解析:派生類Jazz不能訪問基類Music中的私有成員title。17、有如下程序:#inc1ude<iostream>usingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"~A";}};classB:publicA{A*p;public:B(){cout<<"B";p=newA();)~B(){cout<<"~B”;deletep;}};intmain().{Bobj;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A標準答案:B知識點解析:此題考查的是派生類對象的構(gòu)造與析構(gòu)。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被定義時聲明的順序(自左向右).>執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序.>執(zhí)行派生類的構(gòu)造函數(shù)。所以本題在建立派生類B的對象obj是會先調(diào)用基類A的構(gòu)造函數(shù),然后調(diào)用自身的構(gòu)造函數(shù)。注意:B類中定義的成員p是A類的指針而不是一個對象,故在調(diào)用自身構(gòu)造函數(shù)前不需要構(gòu)造。而在B類構(gòu)造函數(shù)中使用new操作符動態(tài)地構(gòu)造了一個A類的對象,所以整個構(gòu)造結(jié)果是輸出:ABA。派生類對象的析構(gòu)與構(gòu)造嚴格相反,即先析構(gòu)自身,然后析構(gòu)自身所包含的成員對象,最后調(diào)用基類的析構(gòu)函數(shù)。故本題中當main()函數(shù)返回時,析構(gòu)B類的對象obj:首先調(diào)用—B(),接著再調(diào)用—A()因為在~B()函數(shù)中釋放了動態(tài)創(chuàng)建的A類對象,故整個析構(gòu)所輸出的結(jié)果是~B~A~A。所以這個程序輸出結(jié)果為ABA~B~A~A18、下列關于析構(gòu)函數(shù)的描述中,錯誤的是()。A、析構(gòu)函數(shù)可以重載B、析構(gòu)函數(shù)由系統(tǒng)自動調(diào)用C、每個對象的析構(gòu)函數(shù)只被調(diào)用一次D、每個類都有析構(gòu)函數(shù)標準答案:A知識點解析:一般情況下,析構(gòu)函數(shù)在對象的生存周期即將結(jié)束的時候由系統(tǒng)自動調(diào)用。在調(diào)用完成之后,對象也就消失了,相應的內(nèi)存空間也被釋放。析構(gòu)函數(shù)沒有參數(shù),因此析構(gòu)函數(shù)不能重載,一個類中只能定義一個析構(gòu)函數(shù)。19、若AA為一個類,a為該類的非靜態(tài)數(shù)據(jù)成員,在該類的一個成員函數(shù)定義中訪問a時,其書寫格式為()。A、aB、AA.a(chǎn)C、a{}D、AA::a{}標準答案:A知識點解析:類AA的成員函數(shù)直接引用類AA的非靜態(tài)數(shù)據(jù)成員。20、有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidShow(){cout<<’B’;}};classDerived:publicBase{public:voidShow(){cout<<’D’;}};intmain(){Base*p1=newDerived;Derived*p2=newDerived;p1->Show();p2->Show();deletep1:deletep2;return0;}運行這個程序的輸出結(jié)果是()。A、BBB、BDC、DBD、DD標準答案:D知識點解析:在基類Base中定義了虛函數(shù)Show()輸出字符‘B’,而在派生類Derived中對虛函數(shù)Show()進行了重新定義,輸出字符‘D’。在主函數(shù)中對基類和派生類中的虛函數(shù)Show(1)進行了多態(tài)調(diào)用,此時調(diào)用的是派生類中重新定義的Show(),輸出字符‘D’。21、下列選項中,與實現(xiàn)運行時多態(tài)性無關的是()。A、重載函數(shù)B、虛函數(shù)C、指針D、引用標準答案:A知識點解析:在C++中,多態(tài)性可以分為兩類:編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性是通過函數(shù)重載和模版體現(xiàn)的,運行時的多態(tài)性是通過虛函數(shù)體現(xiàn)的。22、要建立文件流并打開當前目錄下的文件file.dat用于輸入,下列語句中錯誤的是()。A、ifstreamfin=ifstream.open("file.dat");B、ifstream*fin=newifstream("file.dat");C、ifstreamfin;fin.open("file.dat");D、ifstream*fin=newifstream();fin->open("file.dat");標準答案:A知識點解析:在選項A中,在賦值號的左側(cè)表示建立一個輸入流對象fin,而在賦值號的右側(cè)的表達式不正確,因為文件輸入流類ifStream不能直接調(diào)用其成員函數(shù)open。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共22題,每題1.0分,共22分。)1、算法的空間復雜度是指()。A、算法在執(zhí)行過程中所需要的計算機存儲空間B、算法所處理的數(shù)據(jù)量C、算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標準答案:A知識點解析:算法的空間復雜度是指執(zhí)行這個算法所需耍的內(nèi)存空間。這個內(nèi)存空間包括算法程序所占的空問,輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。2、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是A、12345ABCDEB、EDCBA54321C、ABCDEl2345D、54321EDCBA標準答案:B知識點解析:棧是按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)的。所以出棧順序是EDCBA54321。3、下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;template<typenameT>Tfun(Ta,Tb){return(a<=b)?a:b;}intmain(){cout<<fun(3,6)<<’,’<<fun(3.14F,6.28F)<<end1;return0;}A、0,3.14B、3,3.14C、3,3D、3.14,3.14標準答案:B知識點解析:此函數(shù)模板的功能是輸出a、b兩數(shù)中較小的那個數(shù)。(3,6)輸出3,(3.14F,6.28F)輸出3.14。4、下面不屬于軟件設計階段任務的是()。A、軟件總體設計B、算法設計C、制定軟件確認測試計劃D、數(shù)據(jù)庫設計標準答案:C知識點解析:軟件設計階段總體分為兩部分:概要設計和詳細設計,此階段的主要任務就是將需求規(guī)格說明文檔轉(zhuǎn)換為軟件設計文檔,將需求階段提出的問題,一一解釋,形成詳細設計文檔,并根據(jù)功能要求,定制相應數(shù)據(jù)結(jié)構(gòu)、各種流程圖等,為下一步編碼做準備。5、下面對對象概念描述正確的是A、對象問的通信靠消息傳遞B、對象是名字和方法的封裝體C、任何對象必須有繼承性D、對象的多態(tài)性是指一個對象有多個操作標準答案:A知識點解析:對象是面向?qū)ο蠓椒ㄖ凶罨镜母拍?。操作描述了對象?zhí)行的功能,通過消息傳遞,還可以為其他對象使用。操作過程是被封裝在對象中,用戶看不到,稱之為對象的封裝性。對象的多態(tài)性是指同一個操作可以是不同對象的行為。不是所有的對象都必須有繼承性。6、下列描述中正確的是()。A、軟件測試的主要目的是發(fā)現(xiàn)程序中的錯誤B、軟件測試的主要目的是確定程序中錯誤的位置C、為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作D、軟件測試是證明軟件沒有錯誤標準答案:A知識點解析:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例;一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。為了達到好的測試效果,應該由獨立的第三方來構(gòu)造測試,程序員應盡量避免檢查自己的程序。7、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<<x;)};classDerived:publicBase{public:Derived(intx=0){cout<<x;)private:Baseval;);intmain(){Derivedd(1);return0:}程序的輸出結(jié)果是()。A、0B、1C、01D、001標準答案:D知識點解析:此題考查的是類的構(gòu)造。建立類的對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被繼承時聲明的順序(自左向右).>執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序.>執(zhí)行自身的構(gòu)造函數(shù)。本題中,首先會構(gòu)造基類Base,調(diào)用Base類的構(gòu)造函數(shù),輸出0;然后還定義了一個Base類的對象,再次調(diào)用Base類的默認構(gòu)造函數(shù)輸出0;最后構(gòu)造自身,因主函數(shù)中傳入了構(gòu)造參數(shù)l,所以輸出1。故最后輸出結(jié)果是:001。8、數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下面圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是A、控制流B、加工C、數(shù)據(jù)存儲D、源和潭標準答案:A知識點解析:數(shù)據(jù)流圖中的主要圖形元素有加工(轉(zhuǎn)換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)、源和潭等。9、數(shù)據(jù)庫設計的根本目標是要解決()。A、數(shù)據(jù)共享問題B、數(shù)據(jù)安全問題C、大量數(shù)據(jù)存儲問題D、簡化數(shù)據(jù)維護標準答案:A知識點解析:數(shù)據(jù)庫應用系統(tǒng)中的一個核心問題就是設計一個能滿足用戶要求、性能良好的數(shù)據(jù)庫,這就是數(shù)據(jù)庫設計。數(shù)據(jù)庫設計是在一定平臺制約下,根據(jù)信息需求與處理需求設計出性能良好的數(shù)據(jù)模式。數(shù)據(jù)庫設計的根本目標是要解決數(shù)據(jù)共享的問題。10、有如下類定義:classMyClass{Intvalue;public;MyClass(intn):value(n){}intgerValue()const{returnvalue;}};則類MyClass的構(gòu)造函數(shù)的個數(shù)是()。A、1個B、2個C、3個D、4個標準答案:A知識點解析:此題考查的是構(gòu)造函數(shù)的概念。構(gòu)造函數(shù)的名字必須與類名相同;構(gòu)造函數(shù)不指定返回值類型;構(gòu)造函數(shù)可以重載;在創(chuàng)建對象時,系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)。11、有兩個關系R和S如下:由關系R通過運算得到關系S,則所使用的運算為()。A、選擇B、投影C、插入D、連接標準答案:B知識點解析:一個關系R通過投影運算后仍為一個關系R’,R’是由R中投影運算所指出的那些域的列所組成的關系。所以題目中關系S是由關系R經(jīng)過投影運算所得(選擇運算主要是對關系R中選擇由滿足邏輯條件的元組所組成的一個新關系)。12、通過派生類的對象可直接訪問其()。A、公有繼承基類的公有成員B、公有繼承基類的私有成員C、私有繼承基類的公有成員D、私有繼承基類的私有成員標準答案:A知識點解析:基類的私有成員在派生類中都是不能訪問的,所以選項B、D是錯誤的,基類的公有成員通過私有繼承后,在派生類中變?yōu)榱怂接谐蓡T,只能在派生類中進行訪問,而通過派生類的對象不能訪問,所以選項c也是錯誤的?;惖墓谐蓡T通過公有繼承后,在派生類種是公有成員,所以町以通過派生對象來訪問。13、下列定義語句中,錯誤的是()。A、intpx*;B、char*acp[10];C、char(*pac)[10];D、int(*p)();標準答案:A知識點解析:指針變量聲明的一般形式為:<數(shù)據(jù)類型>*<變量名>,在選項A中,*放在變量名的后面,所以是錯誤的。14、有如下程序:#include<iostream>voidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[21={23,42};fun(a[1],a[0]);std::cout<<a[0]<<","<<a[1]<<std::endl;return0;}執(zhí)行后的輸出結(jié)果是()。A、42,42B、23,23C、23,42D、42,23標準答案:B知識點解析:此題考查是是函數(shù)的調(diào)用以及參數(shù)值的傳遞。函數(shù)fun中的第一個參數(shù)是引用傳值方式,是雙向的;第二個參數(shù)是按值傳遞,是單向的。15、學院的每名教師只能屬于一個系,則實體系和實體教師間的聯(lián)系是A、一對多B、多對多C、多對一D、一對一標準答案:A知識點解析:一對多關系是關系數(shù)據(jù)庫中兩個表之間的一種關系,該關系中第一個表中的單個行可以與第二個表中的一個或多個行相關,但第二個表中的一個行只可以與第一個表中的一個行相關。本題中一個是體系有多個老師,但老師只能屬于一個系,因此是一對多關系。16、有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA::b=0;intmain(){XAd1(4),d2(5);cout<<d1.getA()+d2.getA()+XA::b+d1.b<<endl;returnO;}運行這個程序的輸出結(jié)果是()。A、9B、11C、13D、15標準答案:C知識點解析:在類XA的構(gòu)造函數(shù)中,定義了用成員變量a的值初始化變量髓,同時靜態(tài)成員變量b值加1。所以當在主main函數(shù)中定義類XA的對象d1(4)后,變量b的等于1,定義對象d2(5)后,變量b的值等于2,所以表達式d1.getA()+d.2.getA()+XA::b+d1.b等于4+5+1+2+1=13。17、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{public:voidfun(){___________cout<<"Derived::fun"<<endl;}};intmain(){Derivedd;d.fun();return0;}已知其執(zhí)行后的輸出結(jié)果為:Base::funDerived::fun則程序中下劃線處應填入的語句是()。A、Base.fun();B、Base::fun();C、Base->fun();D、fun();標準答案:B知識點解析:此題考查的是繼承的使用。分析題目可知,橫線處應填入對基類成員函數(shù)fun()的調(diào)用語句,此處只能使用作用域運算符“::”才能調(diào)用到基類的同名函數(shù),故選項B正確。18、建立一個有成員對象的派生類對象時,各構(gòu)造函數(shù)體的執(zhí)行次序為()。A、派生類、成員對象類、基類B、成員對象類、基類、派生類C、基類、成員對象類、派生類D、基類、派生類、成員對象類標準答案:C知識點解析:建立派生類對象的時候,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用的順序按照基類被繼承時候的順序(自左向右)。然后是執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中的聲明順序(自上而下),最后是執(zhí)行派生類的構(gòu)造函數(shù)。19、有如下程序:#inc1ude<iostream>usingnamespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<<page<<endl;}voidShow(){Media::Show();)//①};intmain(){BookBible;Bible.Name();//②Bible.Print();//③Bible.Show();//④return0:}編譯時有錯誤的是()。A、語句①B、語句②C、語句③D、語句④標準答案:B知識點解析:類Book私有繼承自類Media,所以類Media中的公有成員函數(shù)Name()在繼承類Book中變成了私有成員函數(shù),因而類Book的對象Bible不能訪問私有成員函數(shù)Name()。20、下列關于虛函數(shù)的說明中,正確的是()。A、從虛基類繼承的函數(shù)都是虛函數(shù)B、虛函數(shù)不得是靜態(tài)成員函數(shù)C、只能通過指針或引用調(diào)用虛函數(shù)D、抽象類中的成員函數(shù)都是虛函數(shù)標準答案:B知識點解析:此題考查的是虛函數(shù)的概念。在成員函數(shù)的聲明前面加上virual關鍵字,即可把函數(shù)聲明為虛函數(shù)。虛函數(shù)可以是另一個函數(shù)的友元函數(shù)而不能是靜態(tài)成員函數(shù)。21、已知Value是一個類,Value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原形中,正確的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value;inti);C、Valueoperator+(Valuevinti=0);D、Valueoperator+(Valuev=value,inti=0);標準答案:B知識點解析:此題考查的是重載加法運算符“+”?!?”是二元運算符,其第一操作數(shù)是對象本身,i為第二操作數(shù),由此可知選項B正確。22、在類中重載賦值運算符時,應將其聲明為類的()。A、靜態(tài)函數(shù)B、友元函數(shù)C、成員函數(shù)D、構(gòu)造函數(shù)標準答案:C知識點解析:賦值運算符只能作為類的成員函數(shù)重載。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共24題,每題1.0分,共24分。)1、下列敘述中正確的是()。A、—個算法的空間復雜度大,則其時間復雜度也必定大B、—個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度大,則其空間復雜度必定小D、算法的時間復雜度與空間復雜度沒有直接關系標準答案:D知識點解析:算法的復雜度主要包括時間復雜度和空間復雜度。算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,算法的工作量用算法所執(zhí)行的基本運算次數(shù)來度量,而算法所執(zhí)行的基本運算次數(shù)是問題規(guī)模的函數(shù),即算法的工作量=f(n),其中n是問題的規(guī)模;算法的空間復雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占用的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。根據(jù)各自的定義可知,算法的時間復雜度與空間復雜度并不相關。2、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊列B、棧C、隊列D、二叉樹標準答案:B知識點解析:棧按照“先進后出”(FILO)或“后進先出”(LIFO)組織數(shù)據(jù):隊列是“先進先出”(FIFO)或“后進后出”(LILO)的線性表。3、對下列二叉樹進行前序遍歷的結(jié)果是()。A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ標準答案:C知識點解析:二叉樹前序遍歷的簡單描述:若二叉樹為空,則結(jié)束返回;否則:①訪問根結(jié)點;②前序遍歷左子樹;③前序遍歷右子樹。可見,前序遍歷二叉樹的過程是一個遞歸的過程。根據(jù)題目中給出的二叉樹的結(jié)構(gòu)可知前序遍歷的結(jié)果是ABDYECFXZ。4、下列有關內(nèi)聯(lián)函數(shù)的敘述中,正確的是()。A、內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移B、內(nèi)聯(lián)函數(shù)必須通過關鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句標準答案:C知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)的概念。在調(diào)用時,內(nèi)聯(lián)函數(shù)會像宏函數(shù)一樣的展開,將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換,所以它沒有一般函數(shù)的參數(shù)壓棧和退棧操作,所以選項A錯誤;即使沒有使用inline說明,編譯器也會將在類的說明部分定義的函數(shù)認定為內(nèi)聯(lián)函數(shù),所以選項B錯誤;內(nèi)聯(lián)函數(shù)只是比普通函數(shù)有更高的執(zhí)行效率。5、待排序的關鍵碼序列為(15,20,9,30,67,65,45,90),要按關鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關鍵碼15被放到第()個位置。A、2B、3C、4D、5標準答案:A知識點解析:選擇排序的基本思想是掃描整個線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一一個位置,元素15則放在第二個位置。6、有如下函數(shù)定義:voidfunc(inta,int&b{a+ff.;b++;}若執(zhí)行代碼段:intx=0,y=1;func(x,y);則變量x和y的值分別是()。A、0和1B、1和1C、0和2D、1和2標準答案:C知識點解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實參,即傳值方式;②傳遞變量指針;③引用形參。本題中實參x為傳值方式,所以x的值不會改變;y為引用形參,所以會改變。故本題答案為C。7、下面屬于黑盒測試方法的是()。A、語句覆蓋B、邏輯覆蓋C、邊界值分析D、路徑覆蓋標準答案:C知識點解析:采用黑盒技術設計測試用例的方法有:等價類劃分、邊界值分析、錯誤推測、因果圖和綜合策略。8、下面屬于白盒測試方法的是()。A、等價類劃分法B、邏輯覆蓋C、邊界值分析法D、錯誤推測法標準答案:B知識點解析:白盒測試的主要方法有邏輯覆蓋、基本路徑測試等。9、數(shù)據(jù)獨立性是數(shù)據(jù)庫技術的重要特點之一,所謂數(shù)據(jù)獨立性是指()。A、數(shù)據(jù)與程序獨立存放B、不同的數(shù)據(jù)被存放在不同的文件中C、不同的數(shù)據(jù)只能被對應的應用程序所使用D、以上三種說法都不對標準答案:D知識點解析:數(shù)據(jù)獨立性是指數(shù)據(jù)庫中數(shù)據(jù)獨立于應用程序而不依賴于應用程序,即數(shù)據(jù)與程序間的互不依賴性。也就是說數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應用程序。數(shù)據(jù)的獨立性包括物理獨立性和邏輯獨立性兩級。①物理獨立性:數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式等)的改變,如存儲設備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應用程序的變化。②邏輯獨立性:數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,地修改數(shù)據(jù)模式,增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要相應的應用程序改變,這就是數(shù)據(jù)的邏輯獨立性。10、下列方法中,屬于白盒法設計測試用例的方法的是()。A、錯誤推測B、因果圖C、基本路徑測試D、邊界值分析標準答案:C知識點解析:白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。11、下列關于派生類和基類的描述中,正確的是()。A、派生類成員函數(shù)只能訪問基類的公有成員B、派生類成員函數(shù)只能訪問基類的公有和保護成員C、派生類成員函數(shù)可以訪問基類的所有成員D、派生類對基類的默認繼承方式是公有繼承標準答案:B知識點解析:派生類不論是采用那種繼承方式繼承基類,它的成員函數(shù)只能訪問基類的公有成員和保護成員。12、有如下程序:#include<iostream>usingnamespacestd;voidf1(intax,int&y){intz=x;x=y;y=z;}voidf2(intx,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<<end1;return0;}運行時的輸出結(jié)果是()。A、10B、16C、26D、36標準答案:A知識點解析:子函數(shù)f1中的形參是引用變量,所以執(zhí)行子函數(shù)實現(xiàn)了變量x,y值的交換,變量x的值等于26,而變量y的值等于10。而子函數(shù)f2中的形參是普通變量,因為C++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實現(xiàn)變量x,y值的交換。13、數(shù)據(jù)庫管理系統(tǒng)(DBMS)是一種A、應用軟件B、系統(tǒng)軟件C、計算機輔助設計D、辦公軟件標準答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem)是一種操縱和管理數(shù)據(jù)庫的大型軟件,是一種系統(tǒng)軟件。用于建立、使用和維護數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過dbms進行數(shù)據(jù)庫的維護工作。它可使多個應用程序和用戶用不同的方法在同時或不同時刻去建立,修改和詢問數(shù)據(jù)庫。14、關于函數(shù)重載,下列敘述中錯誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標準答案:C知識點解析:此題考查的是函數(shù)重載。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。15、有如下類定義:classTest{public:Test(){a=0;c=0;)//①intf(inta)const{this一>a=a;}//②staticintg(){retuma;}//③void.h(intb){Test::b=b;);//④private:inta:staticintb:constintc;};intTest::b=0;在標注號碼的行中,能被正確編譯的是()。A、①B、②C、③D、④標準答案:D知識點解析:此題考查的是類的定義。一個類的長數(shù)據(jù)成員的初始化只能在成員初始化列表中進行,故選項A錯誤;常成員函數(shù)不能更新對象的數(shù)據(jù)成員,故選項B錯誤;靜態(tài)成員函數(shù)可以直接訪問類中說明的靜態(tài)成員,但不能直接訪問類中說明的非靜態(tài)成員,故選項C錯誤。16、下列關于類模板的模板參數(shù)的敘述中,錯誤的是()。A、模板參數(shù)可以作為數(shù)據(jù)成員的類型B、模板參數(shù)可以作為成員函數(shù)的返回類型C、模板參數(shù)可以作為成員函數(shù)的參數(shù)類型D、模板參數(shù)不能作為成員函數(shù)的局部變量的類型標準答案:D知識點解析:此題考查的是模板參數(shù)。模板參數(shù)是一種參數(shù)化的數(shù)據(jù)模型,在模板類或模板函數(shù)中,只要使用數(shù)據(jù)類型的地方都能使用模板參數(shù)來代表一種未知的數(shù)據(jù)類型。所以,模板參數(shù)可以作為成員函數(shù)的局部變量類型。17、語句ofstreamf("SALARY.DAT",ios_base∷app);的功能是建立流對象f,并試圖打開文件SALARYDAT與f關聯(lián),而且()。A、若文件存在,將其置為空文件;若文件不存在,打開失敗B、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D、若文件存在,打開失?。喝粑募淮嬖?,建立一個新文件標準答案:B知識點解析:此題考查的是文件打開模式。文件打開模式iso_base∷app是為添加數(shù)據(jù)而打開(總是在尾部寫),故只有選項B說法正確。18、下列描述中,錯誤的是()。A、公有繼承時基類中的公有成員在派生類中仍是公有成員B、公有繼承時基類中的保護成員在派生類中仍是保護成員C、保護繼承時基類中的公有成員在派生類中仍是公有成員D、保護繼承時基類中的保護成員在派生類中仍是保護成員標準答案:C知識點解析:保護繼承時基類中的公有成員在派生類中是保護成員。19、下列描述中,錯誤的是()A、公有繼承時基類中的公有成員在派生類中仍是公有成員B、公有繼承時基類中的保護成員在派生類中仍是保護成員C、保護繼承時基類中的公有成員在派生類中仍是公有成員D、保護繼承時基類中的保護成員在派生類中仍是保護成員標準答案:C知識點解析:保護繼承時基類中的公有成員在派生類中是保護成員。20、如果不使用多態(tài)機制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。有如下程序,沒有使用多態(tài)機制。#include<iostream>usingnamespacestd;classBase{inta,b;public:Base(intx,inty){a=x;b=y;}voidshow(){cout<<a<<’,’<<b<<9ndl;}};classDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;}voidshow(){cout<<c<<’,’<<d<<endl;}};intmain(){BaseB1(50,50),*pb;DerivedD1(10,20,30,40);pb=&D1;return0:return();}運行時輸出的結(jié)果是()。A、10,20B、30,40C、20,30D、50,50標準答案:A知識點解析:此題考查的是多態(tài)性。在C++中,一個基類指針可以用于指向它的派生類對象,而且通過這樣的指針調(diào)用虛函數(shù)時,被調(diào)用的是該指針實際所指向的對象類的那個重定義版本。在實函數(shù)的情況下。通過基類指針所調(diào)用的只能是基類酌那個函數(shù)版本,無法調(diào)用到派生類中重定義函數(shù)。此題中,通過指針pb所調(diào)用的是基類的版本,即輸出a和b的值10,20。21、有如下程序:#includeusingnamespacestd;classInstrument{public:virtualvoidDisplay()=0:};classPiano:publicInstrument{public:voidDisplay(){/*函數(shù)體程序略*/}};intmain(){Instruments;Instrument*p=0;//…;return0;}下列敘述中正確的是()。A、語句“Insturment*p=0;”編譯時出錯B、語句“Instruments;”編譯時出錯C、類Piano中的Display函數(shù)不是虛函數(shù)D、類Instrument是一個虛基類標準答案:B知識點解析:由于函數(shù)Display()是一個純虛函數(shù),所以類Instrument是抽象類,而抽象類是不能定義對象的,因而選項B為正確選項。22、下列有關運算符重載的敘述中,正確的是()。A、運算符重載是多態(tài)性的一種表現(xiàn)B、C++中可以通過運算符重載創(chuàng)造新的運算符C、C++中所有運算符都可以作為非成員函數(shù)重載D、重載運算符時可以改變基結(jié)合性標準答案:A知識點解析:此題考查的是運算符重載。C++中運算符重載是多態(tài)性的一種表現(xiàn);運算符重載是針對C++原有運算符進行的,不可能通過重載創(chuàng)造出新的運算符;除了“.”、“.*”、“—>*”、“∷”、“?:”這五個運算符外,其它運算符都可以重載:但“=”“[]”“—>”及所有的類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載,運算符重載不可改變其結(jié)合性、操作數(shù)個數(shù)和優(yōu)先級。23、下列關于模板的敘述中,錯誤的是()。A、調(diào)用模版函數(shù)時,在一定條件下可以省略模板實參B、可以用int、double這樣的類型修飾符來聲明模版參數(shù)C、模板聲明中的關鍵字class都可以用關鍵字typename替代D、模板的形參表中可以有多個參數(shù)標準答案:C知識點解析:在聲明模板參數(shù)是,關鍵字typename和class是可以互換的,兩者是等價的。但選項C中說的是模版聲明,在類模板聲明中,替換可能會引起麻煩。24、有如下程序:#includeusingnamespacestd;classMountain{intheight;public:Mountain(inth=0):height(h){}virtualchar*GetName()const{return"山";}intGetHeight()const{returnheight;}};classLushan:publicMountain{Public:Lushan(intd):Mountain(d){}Char*GetName()const{return"廬山";}};intmain(){Mountain*p=newLushan(1000);cout<GetName0<<"海拔"<GetHeight()<<"米";return0:}運行這個程序的輸出結(jié)果是()。A、廬山海拔1000米B、廬山海拔0米C、山海拔1000米D、山海拔0米標準答案:A知識點解析:在基類Mountain中定義了虛函數(shù)GetName()輸出字符串“山”,而在派生類LushaJl中對虛函數(shù)GetName()進行了重新定義,輸出字符串“廬山”。在主函數(shù)中對派生類中的虛函數(shù)GetName()進行了多態(tài)調(diào)用,此時調(diào)用的是派生類中重新定義的GetName(),輸出字符字符串“廬山”。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共34題,每題1.0分,共34分。)1、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進后出”原則存取數(shù)據(jù)的是A、循環(huán)隊列B、棧C、隊列D、二叉樹標準答案:B知識點解析:棧按照“先進后出”(FILO)或“后進先出”(LIFO)組織數(shù)據(jù);隊列是“先進先出”(FIFO)或“后進后出”(LILO)的線性表。2、若整型變量a、b、C、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是()。A、1B、2C、3D、4標準答案:A知識點解析:首先把c<d?c:d算出。結(jié)果為2,表達式a<b?a:c<d?c:d變?yōu)椋篴<b?a:2,結(jié)果為1。3、設循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35。現(xiàn)經(jīng)過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數(shù)為A、15B、16C、20D、0或35標準答案:D知識點解析:循環(huán)隊列的隊頭指針和尾指針都等于15,此循環(huán)隊列中元素的個數(shù)有兩種情況,第一種情況是隊頭指針和尾指針都是第一次到達15,此時元素個數(shù)為0:第二種情況是隊頭指針第一次到達15,而尾指針第二次到達15,此時元素個數(shù)為35。4、下面程序的輸出結(jié)果為()。#include<iostream.h>classTestClass{public:TestClass(){val++;}staticintval;};intTestClass::val=0:voidmain(){TestClasscs1;cout<<cs1.val<<"";TestClasscs2;TestClasscs3,cs4;cout<<cs2.val<<endl;}A、03B、13C、14D、24標準答案:C知識點解析:由主函數(shù)main入手,定義TestClass類的對象cs1,執(zhí)行cs1.val,其中val為靜態(tài)變量,根據(jù)“intTestClass::val=0;”初始化,TestClass中的TestClass(){val++;}構(gòu)造函數(shù)執(zhí)行后,val值為1。主函數(shù)中接著定義對象cs2,cs3,cs4。執(zhí)行“cout<<cs2.val<<endl:”中的val值為4。5、下列關于類和對象的敘述中,錯誤的是()。A、一個類只能有一個對象B、對象是類的具體實例C、類是對某一類對象的抽象D、類和對象的關系是一種數(shù)據(jù)類型與變量的關系標準答案:A知識點解析:此題考查的是類和對象的相關概念。類是將不同的數(shù)據(jù)和與這些數(shù)據(jù)相關的操作封裝起來裝在一起的集合體。對象是類的具體實例,也即類是對某一類對象的抽象,類和對象之間可以說是數(shù)據(jù)類型與變量的關系。一個類可以有無數(shù)個對象。6、下列敘述中正確的是()。A、線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的B、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)C、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)D、上述三種說法都不對標準答案:B知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的,各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。所以每個元素。只存儲其值就可以了,而在鏈式存儲的方式中,將存儲空間的每一個存儲結(jié)點分為兩部分,一部分用于存儲數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。7、下列鏈表中,其邏輯結(jié)構(gòu)屬于非線性結(jié)構(gòu)的是()。A、二叉鏈表B、循環(huán)鏈表C、雙向鏈表D、帶鏈的棧標準答案:A知識點解析:二叉鏈表作為樹的存儲結(jié)構(gòu)。鏈表中結(jié)點的兩個鏈域分別指向該結(jié)點的第一個孩子結(jié)點和下一個兄弟結(jié)點。8、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)()。A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該=叉樹為12層,每層只有一個結(jié)點。9、軟件生命周期可分為定義階段、開發(fā)階段和維護階段,下面不屬于開發(fā)階段任務的是()。A、測試B、設計C、可行性研究D、實現(xiàn)標準答案:C知識點解析:軟件生命周期是指軟件產(chǎn)品從提出、實現(xiàn)、使用、維護到停止使用退役的過程。其中,定義階段包括可行性研究與計劃制定和需求分析。測試、概要設計、詳細設計和實現(xiàn)屬于開發(fā)階段。10、軟件生命周期可分為定義階段、開發(fā)階段和維護階段,下面不屬于開發(fā)階段任務的是()。A、測試B、設計C、可行性研究D、實現(xiàn)標準答案:C知識點解析:軟件生命周期是指軟件產(chǎn)品從提出、實現(xiàn)、使用、維護到停止使用退役的過程。其中,定義階段包括可行性研究與計劃制定和需求分析。測試、概要設計、詳細設計和實現(xiàn)屬于開發(fā)階段。11、下面描述中錯誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設計B、軟件設計是將軟件需求轉(zhuǎn)換為軟件表示的過程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設計是軟件設計的任務之一D、PAD圖是軟件詳細設計的表示工具標準答案:A知識點解析:軟件設計是將軟件需求轉(zhuǎn)換為軟件表示的過程;數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設計是軟件設計的任務之一:PAD圖,即問題分析圖,是一種主要用于描述軟件詳細設計的圖形工具。12、數(shù)據(jù)庫系統(tǒng)的核心是()。A、數(shù)據(jù)模型B、數(shù)據(jù)庫管理系統(tǒng)C、數(shù)據(jù)庫D、數(shù)據(jù)庫管理員標準答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)(DBMS)是數(shù)據(jù)庫的機構(gòu),它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等。所以,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)系統(tǒng)的核心。13、如果派生類以protected方式繼承基類,則原基類的protected成員和public成員在派生類中的訪問屬性分別是()。A、public和publicB、public和pmtectedC、protected和publicD、protected和protected標準答案:D知識點解析:本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。14、在數(shù)據(jù)庫系統(tǒng)中,用戶所見的數(shù)據(jù)模式為()。A、概念模式B、外模式C、內(nèi)模式D、物理模式標準答案:B知識點解析:用戶所見到的數(shù)據(jù)模式是外模式也稱用戶模式。它是用戶的數(shù)據(jù)視圖,它由概念模式導出。一個概念模式可以有若干個外模式,每個用戶只關心與它有關的外模式,這樣不僅可以屏蔽大量無關信息,而且有利于數(shù)據(jù)維護。15、有三個關系R、S和T如下:其中關系T由關系R和S通過某種操作得到,該操作為()。A、選擇B、投影C、交D、并標準答案:D知識點解析:由關系T中的數(shù)據(jù)可以看出,其數(shù)據(jù)由關系R和s的數(shù)據(jù)組成。所以關系T是由關系R和T通過并運算得到的。16、有兩個關系R和T如下:則由關系R得到關系T的操作是()。A、選擇B、投影C、交D、并標準答案:A知識點解析:由關系R和T所包含的元素可知,關系R經(jīng)過選擇操作就可以得到關系T。17、類MyClass的定義如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private;intvalue;);則對下列語句序列正確的描述是()。MyClass*P,my;p=&my;A、語句p=&my;是把對象my賦值給指針變量PB、語句Myaass*p,my;會調(diào)用兩次類MyClass的構(gòu)造函數(shù)C、對語句*p.SetVariable(5)的調(diào)用是正確的D、語句p->SetVariable(5)與語句my.SetVariable(5)等價標準答案:D知識點解析:選項A),語句p=&my;是把對象my的地址值賦值給指針變量p;選項B),語句MyClass*p,my;,由于p只是一個指向?qū)ο蟮闹羔?,因此定義指針p不調(diào)用構(gòu)造函數(shù),所以此語句只調(diào)用一次構(gòu)造函數(shù);對成員函數(shù)的引用可以通過兩種形式:指針->成員函數(shù)(形參表)或者對象名.成語函數(shù)名(形參表),故選項C)錯誤,選項D)正確。18、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain0{inti,s=0;for(i=l;s<20;i+=2)s+=i*i;cout<<i<<end1;retum0;}運行這個程序的輸出結(jié)果是()。A、3B、5C、7D、9標準答案:C知識點解析:在這段程序中for循環(huán)共執(zhí)行3次,每次循環(huán)變量i的值增2,在執(zhí)行第三次循環(huán)語句時.變量s的值等于25,大于20而退出循環(huán),此時再執(zhí)行循環(huán)變量i加2運算,所以最后變量i的值等于7。19、將數(shù)據(jù)庫的結(jié)構(gòu)劃分成多個層次,是為了提高數(shù)據(jù)庫的物理獨立性和A、規(guī)范程度B、操作獨立性C、邏輯獨立性D、降低數(shù)據(jù)冗余標準答案:C知識點解析:物理獨立性是指用戶的應用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)是相互獨立的。即,數(shù)據(jù)在磁盤上怎樣存儲由DBMS管理,用戶程序不需要了解,應用程序要處理的只是數(shù)據(jù)的邏輯結(jié)構(gòu),這樣當數(shù)據(jù)的物理存儲改變了,應用程序不用改變;邏輯獨立性存在于外模式和內(nèi)模式之間。數(shù)據(jù)的邏輯獨立性是指數(shù)據(jù)與程序的邏輯獨立性。用戶的應用程序和數(shù)據(jù)庫中的邏輯結(jié)構(gòu)是相互獨立的,當數(shù)據(jù)的邏輯結(jié)構(gòu)發(fā)生改變時應用不需要改變,邏輯獨立性存在于外模式和內(nèi)模式之間。數(shù)據(jù)的邏輯獨立性是指數(shù)據(jù)與程序的邏輯獨立性。20、下列關于getValue成員函數(shù)的實現(xiàn)中,正確的是()。A、SAMPLE::setValue(intn0){n=n0;}B、voidSAMPLE::setValue(intn0){n=n0;}C、voidsetValue(intn0){n=n0;}D、(intn0){n=n0;}標準答案:B知識點解析:此題考查了成員函數(shù)的定義格式。在類外部對成員函數(shù)定義時的一般格式為:返回類型類名::成員函數(shù)名(參數(shù)表){函數(shù)體},故此題正確答案為選項B。21、有如下類聲明:c1assSAMPLE{intn;public:SAMPLE(inti=0):n(i){}voidsetValue(intn0);};下列關于getValue成員函數(shù)的實現(xiàn)中,正確的是()。A、SAMPLE::setValue(intn0){n=n0,>B、voidSAMPLE::setValue(intn0){n=n0,)C、voidsetValue(intn0){n=n0;}D、(intn0){n=n0;}標準答案:B知識點解析:此題考查了成員函數(shù)的定義格式。在類外部對成員函數(shù)定義時的一般格式為:返回類型類名∷成員函數(shù)名(參數(shù)表){函數(shù)體),故此題正確答案為選項B。22、關于在調(diào)用模板函數(shù)時模板實參的使用,下列表述正確的是()。A、對于虛擬類型參數(shù)所對應的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略B、對于虛擬類型參數(shù)所對應的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略C、對于虛擬類型參數(shù)所對應的模板實參,若能夠省略則必須省略D、對于常規(guī)參數(shù)所對應的模板實參,任何情況下都不能省略標準答案:D知識點解析:此題考查的是模板實參的省略。模板實參在以下集中情況中不能省略:從模板函數(shù)實參表獲得的信息有矛盾;需要獲得特定類型的返回值,而不管參數(shù)的類型如何;虛擬類型參數(shù)沒有出現(xiàn)在模板函數(shù)的形參表中;函數(shù)模板含有常規(guī)形參。23、下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是()。A、用一個對象去初始化同一類的另一個新對象時B、將類的一個對象賦值給該類的另一個對象時C、函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時D、函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時標準答案:B知識點解析:此題考查的是復制構(gòu)造函數(shù)的概念。用一個已知的對象初始化一個正在創(chuàng)建的同類對象時,就會發(fā)生復制構(gòu)造函數(shù)。因此,選項A、C、D均會調(diào)用復制構(gòu)造函數(shù),而只有選項B沒有創(chuàng)建的動作,不調(diào)用復制構(gòu)造函數(shù)。24、有如下程序:撐include<iostream>usingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<’?’;}Name(char*fname){strepy(name,fname);cout<<’?’;}};intmain(){Namenames[3]={Name("張三"),Name("李四")};return0;}運行此程序輸出符號?
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息檢索語言與技巧考核試卷
- 化工生產(chǎn)過程中的能量集成考核試卷
- 小學生音樂律動課件視頻
- 辦公文具創(chuàng)新設計理念與實踐考核試卷
- 城市綠化管理的城市設計與城市規(guī)劃考核試卷
- 秋季安全宣傳課件圖片
- 門市倉庫出租合同范本
- 醫(yī)藥器械采購合同范本
- 種植基地配送合同范本
- 酒店客房預訂操作規(guī)范及流程制度
- 馬工程《刑法學(下冊)》教學課件 第22章 妨害社會管理秩序罪
- GB/T 14643.6-2009工業(yè)循環(huán)冷卻水中菌藻的測定方法第6部分:鐵細菌的測定MPN法
- 《政治經(jīng)濟學》全套課件(完整版)【復旦版】
- 國有企業(yè)干部選拔任用條例
- QSB質(zhì)量體系基礎課件
- 仁愛版八年級英語上復習課Unit 2 Keep Healthy Topic1 2教學課件
- 系統(tǒng)運維投標文件含運維方案
- 心理健康教育課《在變化中成長》課件
- JJF 1341-2012 鋼筋銹蝕測量儀校準規(guī)范-(高清現(xiàn)行)
- 人教版數(shù)學五年級下冊 全冊各單元教材解析
- 偏癱臨床路徑流程
評論
0/150
提交評論