國家二級(C++)機試模擬試卷18(共360題)_第1頁
國家二級(C++)機試模擬試卷18(共360題)_第2頁
國家二級(C++)機試模擬試卷18(共360題)_第3頁
國家二級(C++)機試模擬試卷18(共360題)_第4頁
國家二級(C++)機試模擬試卷18(共360題)_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C++)機試模擬試卷18(共9套)(共360題)國家二級(C++)機試模擬試卷第1套一、選擇題(本題共36題,每題1.0分,共36分。)1、下列對模板的聲明中,正確的是()。A、templateB、templateC、templateD、template標(biāo)準(zhǔn)答案:C知識點解析:聲明一個函數(shù)模板的格式為:template<模板形參表聲明>函數(shù)聲明。調(diào)用模板函數(shù)時,如果與模板實參中最后的若干個參數(shù)有關(guān)的信息可以從模板函數(shù)的實參中獲得,則相關(guān)的模板實參可以省略。2、使用地址作為實參傳給形參,下列說法正確的是()。A、實參是形參的備份B、實參與形參無聯(lián)系C、形參是實參的備份D、參與形參是同一對象標(biāo)準(zhǔn)答案:D知識點解析:地址作為實參,表示實參與形參代表同一個對象。如果實參是數(shù)值,形參也是普通變量,此時形參是實參的備份。3、在類中說明的成員可以使用關(guān)鍵字的是()。A、publicB、externC、cpuD、register標(biāo)準(zhǔn)答案:A知識點解析:extern用于聲明外部變量的,register聲明寄存器類型變量,無cpu類型。它們都不能聲明類成員。public聲明為公有訪問權(quán)限。4、下列程序運行時,若輸入labcdef2df<回車>,則輸出結(jié)果為()。#includevoidmain(){chara=0,ch;while((ch=getchar())!=’\n’){if(a%2!=0&.&.(ch>=’a’&&ch<=’z’))ch=ch-’a’+’A’:a++;putchar(ch);}printf("n");}A、1aCcEdF2DfB、1AeCeDf2dFC、1AcCeDf2DfD、1aCeEdF2dF標(biāo)準(zhǔn)答案:B知識點解析:從鍵盤獲取字符,這個程序的功能是對輸入的字符,如果這個字符對2的余數(shù)不等于0,并且在這個小寫字母’a’和’z’之間,則把這個字符轉(zhuǎn)換成大寫字母。5、下列關(guān)于派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的說法中,錯誤的是()。A、派生類的構(gòu)造函數(shù)會隱含調(diào)用基類的構(gòu)造函數(shù)B、如果基類中沒有缺省構(gòu)造函數(shù),那么派生類必須定義構(gòu)造函數(shù)C、在建立派生類對象時,先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)D、在銷毀派生類對象時,先調(diào)用基類的析構(gòu)函數(shù),再調(diào)用派生類的析構(gòu)函數(shù)標(biāo)準(zhǔn)答案:D知識點解析:在銷毀派生類對象時,先調(diào)用派生類的析構(gòu)函數(shù),再調(diào)用基類的析構(gòu)函數(shù)。6、下列程序的輸出結(jié)果為-5/8-3/4,橫線處應(yīng)填()。#includeusingnamespacestd;ClassFraction{//“分?jǐn)?shù)”類public:Fraction(doublea,doubleb):num(a),den(b){}~Fraction(){}//重載取負運算符“-”,返回一個分?jǐn)?shù)對象,其分子是原來分子的相反數(shù)Fractionoperator-(){________returnf;}voidprint(){cout<A、num(a),den(b){}B、(doublea,doubleb)C、(-f1),print();D、Fractionf(num,den);f.num=-hum標(biāo)準(zhǔn)答案:D知識點解析:考查了重載運算符“-”的操作,在重載函數(shù)中需要取分子的相反數(shù)。7、下列控制格式輸入/輸出的操作符中,能夠設(shè)置浮點數(shù)精度的是()。A、setprecisionB、setwC、setfillD、showpoint標(biāo)準(zhǔn)答案:A知識點解析:iomanip中定義的操縱符包括:set—fiU(ch)用ch填充空白、setprecision(n)將浮點精度置為n、setw(w)、讀寫w個字符的值showpoint設(shè)置小數(shù)點。8、層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。A、記錄長度B、文件的大小C、聯(lián)系的復(fù)雜程度D、數(shù)據(jù)之間的聯(lián)系方式標(biāo)準(zhǔn)答案:D知識點解析:層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。9、有如下類定義:classPass{staticintcount;public:Pass(){}voidshow()const;friendintgetCount();staticintiilere();};在所聲明的4個函數(shù)中,具有this指針的有()。A、Pass和showB、Pass和getCountC、show和increD、getCount和incre標(biāo)準(zhǔn)答案:A知識點解析:C++的類定義中,只有非靜態(tài)成員函數(shù)具有this指針,Pass類中g(shù)etCount()函數(shù)是友元函數(shù),不屬于成員函數(shù),沒有this指針,選項B、D錯誤;incre()函數(shù)是靜態(tài)成員函數(shù),沒有this指針,選項C錯誤;答案為A。10、下面屬于黑盒測試方法的是()。A、錯誤推測法B、基本路徑測試C、判定覆蓋D、條件覆蓋標(biāo)準(zhǔn)答案:A知識點解析:黑盒測試方法也稱為功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進行測試和驗證。黑盒測試方法主要有等價類劃分法、邊界值分析法、錯誤推測法和因果圖等。白盒測試方法主要有邏輯覆蓋測試(語句覆蓋、路徑覆蓋、判斷覆蓋、條件覆蓋)、基本路徑測試等。故本題答案為A選項。11、A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ標(biāo)準(zhǔn)答案:C知識點解析:前序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹;并且,在遍歷左右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。前序遍歷描述為:若二叉樹為空,則執(zhí)行空操作。否則:①訪問根結(jié)點;②前序遍歷左子樹;③前序遍歷右子樹,C正確。12、下面有關(guān)this指針的敘述中,正確的是()。A、類的成員函數(shù)都有this指針B、任何與類相關(guān)的函數(shù)都有this指針C、類的非靜態(tài)成員函數(shù)才有this指針D、類的友元函數(shù)都有this指針標(biāo)準(zhǔn)答案:C知識點解析:C++中的this關(guān)鍵字用來表示指向類實例本身的指針。所以類的靜態(tài)成員函數(shù)沒有this指針,而友元函數(shù)不屬于類的成員,也不存在this指針,只有類的非靜態(tài)成員函數(shù)才有this指針。13、若有下列定義intx[10],*pt=x;則對x數(shù)組元素的正確引用是()。A、*&x[10]B、*(x+3)C、*(pt+10)D、pt+3標(biāo)準(zhǔn)答案:B知識點解析:在C語言中,數(shù)組名是一個存放地址值的指針變量名,其地址值是數(shù)組第一個元素的地址,也是數(shù)組所占一串連續(xù)存儲單元的起始地址。因為數(shù)組的下標(biāo)是從0開始的,所以選項B中,x+3表示數(shù)組x[10]中的第四個元素的地址,在其前面加上星號,表示是數(shù)組x[10]中的第四個元素中的值。所以正確答案為選項B。選項A、C的地址范圍超出級數(shù)x[10]中元素的地址范圍,選項D表示的是地址值。14、下列運算符中,可以重載為類的友元函數(shù)的運算符是A、=B、()C、.D、<<標(biāo)準(zhǔn)答案:D知識點解析:C++規(guī)定,賦值操作符"="、下標(biāo)操作符"[]"、調(diào)用操作符"()"和成員訪問箭頭操作符"->"必須重載為成員函數(shù),這些操作符定義為非成員函數(shù)將在編譯時標(biāo)記為錯誤,友元函數(shù)是非成員函數(shù),上面四種操作符不能重載為類的友元函數(shù),另外成員訪問操作符"."不能重載,答案為D。15、在關(guān)系代數(shù)運算中,有5種基本運算,它們是()。A、并(∪)、差(-)、交(∩)、除(÷)和笛卡兒積(×)B、并(∪)、差(-)、交(∩)、投影(π)和選擇(σ)C、并(∪)、交(∩)、投影(π)、選擇(σ)和笛卡兒積(×)D、并(∪)、差(-)、投影(π)、選擇(σ)和笛卡兒積(×)標(biāo)準(zhǔn)答案:D知識點解析:并、差、笛卡兒積、投影和選擇是5種基本的運算,其他運算即交、連接和除,均可以通過5種基本的運算來表達。16、已知函數(shù)f的原型為voidf(int&a,double*b);變量x、y的定義是intx;doubley;則下列調(diào)用該函數(shù)的語句中正確的是A、f(x,&y);B、f(x,y);C、f(&x,&y);D、f(&x,y);標(biāo)準(zhǔn)答案:A知識點解析:本題考查函數(shù)的調(diào)用,函數(shù)原型中第一個參數(shù)為引用,第二個參數(shù)為指針,所以只有A選項正確。17、下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是()。A、cout<B、cout<C、cout<D、cout<標(biāo)準(zhǔn)答案:D知識點解析:本題考查控制輸出格式,A、B、C選項都會輸出"12345",只有D選項輸出"12345",所以本題答案為D。18、已知int型變量y的初值是5,但在執(zhí)行語句"f(y);"后,y的值被改變,因此該語句所調(diào)用函數(shù)的原型是A、voidf(intx);B、voidf(int*x);C、voidf(constint*x);D、voidf(int&x);標(biāo)準(zhǔn)答案:D知識點解析:參數(shù)傳遞有三種:傳值(value),傳址(address),和傳引用(reference)傳值時子函數(shù)(被調(diào)用者)復(fù)制父函數(shù)(調(diào)用者)傳遞的值,這樣子函數(shù)無法改變父函數(shù)變量的值,A選項屬于此類。傳址時父函數(shù)將變量的地址傳遞給子函數(shù),這樣子函數(shù)可以能過改寫地址里的內(nèi)容改變父函數(shù)中的變量。傳引用則是一種看起來像傳值調(diào)用,而實際上功能同傳址一樣的傳遞方式。子函數(shù)可以改寫父函數(shù)的變量值。D選項屬于此類,所以D選項正確。19、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"~A";}};classBB{public:BB(){cout<<"B";}~BB(){cout<<"~B";}};intmain(){AA*pa=newAA;BBb;deletepa;return0;}運行這個程序的輸出是A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A標(biāo)準(zhǔn)答案:A知識點解析:main()函數(shù)中首先動態(tài)創(chuàng)建AA類對象,調(diào)用AA類構(gòu)造函數(shù),輸出"A",創(chuàng)建BB類對象,調(diào)用BB類構(gòu)造函數(shù),輸出"B",使用delete顯式銷毀AA類對象,調(diào)用AA類析構(gòu)函數(shù),輸出"~A",程序結(jié)束時,銷毀BB類對象,編譯器自動調(diào)用BB類析構(gòu)函數(shù),輸出"~B",整個程序輸出結(jié)果為:"AB~A~B",答案為A。20、面向?qū)ο蠓椒ㄖ?,實現(xiàn)對象的數(shù)據(jù)和操作結(jié)合于統(tǒng)一體中的是A、結(jié)合B、封裝C、隱藏D、抽象標(biāo)準(zhǔn)答案:B知識點解析:對象的基本特點是:標(biāo)識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性好。封裝是指隱藏對象的屬性和實現(xiàn)細節(jié),將數(shù)據(jù)和操作結(jié)合于統(tǒng)一體,僅對外提供訪問方式,B選項正確。21、若實體A和B是一對多的聯(lián)系,實體B和C是一對一的聯(lián)系,則實體A和C的聯(lián)系是A、一對一B、一對多C、多對一D、多對多標(biāo)準(zhǔn)答案:B知識點解析:A和B為一對多的聯(lián)系,則對于A中的每一個實體,B中有多個實體與之聯(lián)系,而B與C為一對一聯(lián)系,則對于B中的每一個實體,C中之多有一個實體與之聯(lián)系,則可推出對于A中的每一個實體,C中有多個實體與聯(lián)系,所以為一對多聯(lián)系。22、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)A、3B、6C、8D、12標(biāo)準(zhǔn)答案:D知識點解析:二叉樹中,度為0的節(jié)點數(shù)等于度為2的節(jié)點數(shù)加1,即n2=n0-1,葉子節(jié)點即度為0,n0=1,則n2=0,總節(jié)點數(shù)為12=n0+n1+n2=1+n1+0,則度為1的節(jié)點數(shù)n1=11,故深度為12,選D。23、如下類定義:classAA{inta;public:intgetRef()const{return&a;}//①intgetValue()const{returna;}//②voidset(intn)const{a=n;}//③friendvoidshow(AAaa)const{cout<A、①B、②C、③D、④標(biāo)準(zhǔn)答案:B知識點解析:本題考查常成員函數(shù),常成員函數(shù)只能引用本類中的數(shù)據(jù)成員,而不能修改它。所以本題答案為B。24、建立一個類對象時,系統(tǒng)自動調(diào)用A、析構(gòu)函數(shù)B、構(gòu)造函數(shù)C、靜態(tài)函數(shù)D、友元函數(shù)標(biāo)準(zhǔn)答案:B知識點解析:本題考查默認(rèn)構(gòu)造函數(shù),如果用戶定義的類中沒有顯式的定義任何構(gòu)造函數(shù),編譯器就會自動為該類型生成默認(rèn)構(gòu)造函數(shù),建立一個對象時,系統(tǒng)會自動執(zhí)行默認(rèn)構(gòu)造函數(shù)。25、有如下類定義:classBag{public:Bag();//①voidSetSize(strings);//②stringGetSize()const;//③friendvoidDisplay(Bag&b);//④private:stringsize;};在標(biāo)注號碼的4個函數(shù)中,不具有隱含this指針的是A、①B、②C、③D、④標(biāo)準(zhǔn)答案:D知識點解析:當(dāng)在類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員的時候,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),所以①②③正確使用this指針。26、下列關(guān)于繼承和派生的敘述中,正確的是A、派生類中新定義的成員函數(shù)可以訪問基類的所有成員B、在私有繼承的情況下,派生類中新定義的成員函數(shù)不能訪問基類的保護成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標(biāo)準(zhǔn)答案:D知識點解析:本題考查繼承與派生,派生類中的成員訪問基類中的成員由派生方式?jīng)Q定,如果派生類私有繼承基類,那么就不能新定義的成員函數(shù)就不能訪問基類的私有成員,所以A選項錯誤。在私有繼承的情況下,派生類中新定義的成員函數(shù)可以訪問基類的保護成員?;悓ο笤谀撤N情況下可以賦值給派生類對象。27、當(dāng)一個派生類對象結(jié)束其生命周期時,自動做的事情是A、先調(diào)用派生類的析構(gòu)函數(shù)后調(diào)用基類的析構(gòu)函數(shù)B、先調(diào)用基類的析構(gòu)函數(shù)后調(diào)用派生類的析構(gòu)函數(shù)C、如果派生類沒有定義析構(gòu)函數(shù),則只調(diào)用基類的析構(gòu)函數(shù)D、如果基類沒有定義析構(gòu)函數(shù),則只調(diào)用派生類的析構(gòu)函數(shù)標(biāo)準(zhǔn)答案:A知識點解析:執(zhí)行派生類析構(gòu)函數(shù)的順序是:先執(zhí)行派生類析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù),所以A選項正確。28、下列選項中,不是重載函數(shù)調(diào)用時選擇依據(jù)的是A、參數(shù)個數(shù)B、參數(shù)類型C、參數(shù)名稱D、函數(shù)名稱標(biāo)準(zhǔn)答案:C知識點解析:重載函數(shù)調(diào)用時首先要從函數(shù)名稱相同的候選函數(shù)中選擇可行函數(shù),可行函數(shù)必須滿足兩個條件:1、函數(shù)的形參個數(shù)與該調(diào)用的實參個數(shù)相同;2、每個實參的類型必須與對應(yīng)形參的類型匹配,或者可被隱式轉(zhuǎn)換為對應(yīng)的形參類型。參數(shù)名稱可以不相同,答案選C。29、有如下程序段:inti=0,j=1;nt&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中會產(chǎn)生編譯錯誤的語句是()。A、④B、③C、②D、①標(biāo)準(zhǔn)答案:A知識點解析:本題考查指針和引用。①為引用,使用正確;④中&r表示一個地址,而*p已經(jīng)是一個值了,不能將一個指針賦值給一個值,所以編譯錯誤。30、通過運算符重載,可以改變運算符原有的A、優(yōu)先級B、結(jié)合性C、操作數(shù)類型D、操作數(shù)個數(shù)標(biāo)準(zhǔn)答案:C知識點解析:本題考查運算符重載,重載不能改變運算符運算對象的個數(shù);不能改變運算符的優(yōu)先級別;不能改變運算符的結(jié)合性;重載運算符的函數(shù)不能有默認(rèn)值,否則就改變了運算符參數(shù)的個數(shù);不能定義新的運算符,某些運算符不能重載。所以答案為C。31、在醫(yī)院,每個醫(yī)生只屬于某一個診療科,醫(yī)生同一天可為多位患者看病,而一名患者可在多個科室治療。則實體醫(yī)生和患者之間的聯(lián)系是A、多對多B、多對一C、一對多D、一對一標(biāo)準(zhǔn)答案:A知識點解析:一般來說,實體集之間必須通過聯(lián)系來建立聯(lián)接關(guān)系,分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。醫(yī)生可為多位患者看病,患者也可以找多位醫(yī)生看病,實體醫(yī)生與患者聯(lián)系是多對多,A選項正確。32、有如下類定義:classBase{intm;public:intn;protected:intp;};classDerived:privateBase{intk;public:voidf();};則允許成員函數(shù)f訪問的數(shù)據(jù)成員的個數(shù)是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點解析:私有繼承中,基類的所有成員(除了private成員)在派生類中為private成員;另外C++中,class關(guān)鍵字定義的類,默認(rèn)的訪問級別為private;題目中Derived以private方式繼承Base,所以Derived中private成員有:n、p、k,沒有public和protected成員,成員函數(shù)f可以訪問Derived的private成員、public成員和protected成員,答案為C。33、下列語句中,錯誤的是()。A、constintbuffer=256;B、constdouble*point;C、intconstbuffer=256;D、double*constpoint;標(biāo)準(zhǔn)答案:D知識點解析:const是一個C++關(guān)鍵字,用于限定不允許改變的變量。選項B是指向常量的指針,定義時可以不初始化;選項D是指針常量,定義時必須初始化。故答案為D。34、下列關(guān)于二叉樹的敘述中,正確的是()。A、葉子結(jié)點總是比度為2的結(jié)點少一個B、葉子結(jié)點總是比度為2的結(jié)點多一個C、葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D、度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍標(biāo)準(zhǔn)答案:B知識點解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B35、某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)()。A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總比度為2的結(jié)點多一個,所以本題中度為2的結(jié)點為1一1=0個,所以可以知道本題目中的二叉樹的每一個結(jié)點都有一個分支,所以共7個結(jié)點共7層,即度為7。36、工廠生產(chǎn)中所需的零件可以存放在多個倉庫中,而每一倉庫中可存放多種零件。則實體倉庫和零件間的聯(lián)系是()。A、多對多B、一對多C、多對一D、一對一標(biāo)準(zhǔn)答案:A知識點解析:零件可以存放在多個倉庫中,而每一倉庫中可存放多種零件,則實體倉庫和零件間的聯(lián)系是多對多。故本題答案為A選項。二、基本操作題(本題共1題,每題1.0分,共1分。)37、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中含有一個源程序文件proj1.cpp。其中每個注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:Theperimeteris62.8Theareais314注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#includeusingnamespacestd;constdoublePT=3.14;classCircle{public://ERROR**********found**********Circle(intr){radius=r;}voidDisplay();private:constintradius;};//EFRROR**********found**********voidDisplay(){cout<<"Theperimeteris"<<2*12T*radius<標(biāo)準(zhǔn)答案:(1)Circle(intr):radius(r){}(2)voidCircle::Display()(3)c.Display();知識點解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,常變量私有成員只能通過成員列表進行初始化。(2)主要考查考生對成員函數(shù)的掌握,在定義類的成員函數(shù)時要加上類名和作用域符。(3)主要考查考生對成員函數(shù)調(diào)用的掌握,調(diào)用成員函數(shù)時應(yīng)使用標(biāo)識符’.’。三、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)38、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程中包含一個頭文件number.h,其中包含了類N啪ber、OctNumber、HexNumber和DecNumber的聲明;包含程序文件number.cpp,其中包含了上述類的成員函數(shù)toString的定義;還包含程序文件proj2.cpp,它以各種數(shù)制格式顯示輸出十進制數(shù)11。請在程序中的橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實現(xiàn)上述功能。此程序的正確輸出結(jié)果應(yīng)為:013,11,OXB注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。//mumber.hclassNumber{protected:intn;staticcharbuf[33];public:Number(intk):n(k){)//**********found**********________;//純虛函數(shù)toString的聲明};classHexNumber:publicNumber{//16進制數(shù)public://**********found**********________//構(gòu)造函數(shù),參數(shù)名為kconstchar*toString()const;};classOctNumber:publicNumber{//八進制數(shù)public:OctNumber(intk):Number(k){}constchar*toString()const;};classDecNumber:publicNumber{//十進制數(shù)public:DecNumber(intk):Number(k){}constchar*toString()const;},/Imumber.cpp#include"Number.h"#include#include#includeusingnamespacestd;charNumber::buf[33]="";constchar*HexNumber::toString()const{strstreamstr(buf,33);str<標(biāo)準(zhǔn)答案:(1)virtualconstchar*toString()const=0(2)HexNumber(intk):Number(k){}(3)cout<<number.toString()(4)show(HexNumber(11))知識點解析:(1)主要考查考生對純虛函數(shù)的掌握,參考在派生類中該函數(shù)的定義:constchar*toString()const;,可知純虛函數(shù)應(yīng)該寫為:virtualconstchar*toString()const=0。(2)主要考查考生對構(gòu)造函數(shù)的掌握,構(gòu)造函數(shù)應(yīng)使用成員列表初始化。(3)主要考查考生對純虛函數(shù)的掌握,程序要求按既定的數(shù)制顯示輸出參數(shù)對象number的值,直接調(diào)用純虛函數(shù),可以使派生類調(diào)用自身定義的函數(shù)。(4)主要考查考生對派生類的掌握,使用十六進制的派生類初始為11,就可以調(diào)用該派生類的toString函數(shù)。四、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)39、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程pl,og3,其中聲明了ValArray類,該類在內(nèi)部維護一個動態(tài)分配的int型數(shù)組v。ValArr~類的成員函數(shù)cycle用于對數(shù)組元素進行向左循環(huán)移動。調(diào)用一次cycle后,數(shù)組的第二個元素至最后一個元素都將向左移動一個位置,而最左端的元素將循環(huán)移動到最右端位置上。例如,若ValArray表示的數(shù)組為{1,2,3,4,5},則第一次調(diào)用cycle后,數(shù)組變?yōu)閧2,3,4,5,1},第二次調(diào)用cycle后,數(shù)組變?yōu)閧3,4,5,1,2},依次類推。請編寫成員函數(shù)cycle。在main函數(shù)中給出了一組測試數(shù)據(jù),此情況下程序的輸出應(yīng)該是:v={1,2,3,4,5}v={2,3,4,5,1}v={3,4,5,l,2}v={4,5,1,2,3}v={5,1,2,3,4}要求:補充編制的內(nèi)容寫在“//**********333**********”與“//**********666**********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFfle已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//VaiArray.h#includeusingnamespacestd;classVaiArray{int*v;intsize;pubiic:VaiArray(constint*p,intn):size(n){v=newint[size];for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;i<size-1;i++){inttemp=v[i];v[i]=v[i+1];v[i+1]=temp;}知識點解析:程序要將數(shù)組v中的size個整數(shù)依次移動到它的前一個單元,其中第一個整數(shù)移到原來最后元素所在單元。for循環(huán)語句用于遍歷整個數(shù)組,每循環(huán)一次便將當(dāng)前元素與后一個元素互換,因此循環(huán)變量的取值范圍是0size-2,最后一個元素不需遍歷。國家二級(C++)機試模擬試卷第2套一、選擇題(本題共39題,每題1.0分,共39分。)1、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標(biāo)準(zhǔn)答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,所以B錯誤。笛卡爾積是用R集合中元素為第一元素,s集合中元素為第二元素構(gòu)成的有序?qū)?,所以C錯誤。根據(jù)關(guān)系T可以很明顯地看出是從關(guān)系R與關(guān)系S中取得相同的關(guān)系組所以取得是交運算,選擇D。2、以下程序的執(zhí)行結(jié)果為()。#includeclassSample{intn:public:Sample(inti){n=i;}operator++(){n++;}//前綴重載運算符operator++(int){n+=2;}//后綴重載運算符voiddisp(){cout<<“n=”<A、n=4B、n=1C、n=3D、n=5n=3n=2n=4n=6標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是“++”運算符的重載。為了區(qū)分前綴和后綴運算符,規(guī)定:重載后綴運算符時必須多一個虛擬參數(shù):int。本題中,A(2)首先給n賦值2,語句A++,調(diào)用的是后綴運算符重載語句,使得n加2變?yōu)?。B(2)首先給n賦值2,然后語句++B,調(diào)用前綴運算符重載函數(shù),使得n加1。因此最終的輸出結(jié)果是n=4n=3。3、派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含()。A、基類的構(gòu)造函數(shù)B、派生類中子對象的初始化C、基類中子對象的初始化D、派生類中一般數(shù)據(jù)成員的初始化標(biāo)準(zhǔn)答案:C知識點解析:在定義派生類的構(gòu)造函數(shù)時,除了對自己的數(shù)據(jù)成員進行初始化外,還必須負責(zé)調(diào)用基類的構(gòu)造函數(shù)使基類的數(shù)據(jù)成員得以初始化。如果派生類中還有子對象,還應(yīng)包含對子對象初始化的構(gòu)造函數(shù)。4、某二叉樹中度為2的結(jié)點有10個,則該二叉樹中有()個葉子結(jié)點。A、9B、10C、11D、12標(biāo)準(zhǔn)答案:C知識點解析:根據(jù)二叉樹的性質(zhì)3:對任何一棵二叉樹,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。5、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i://③*p=&r;//其中會產(chǎn)生編譯錯誤的語句是()。A、④B、③C、②D、①標(biāo)準(zhǔn)答案:A知識點解析:本題考查指針和引用。①為引用,使用正確;④中&r表示一個地址,而*p已經(jīng)是一個值了,不能將一個指針賦值給一個值,所以編譯錯誤。6、下列程序運行時,若輸入labcdef2df<回車>,則輸出結(jié)果為()。#includevoidmain(){chara=0,ch;while((ch=getchar())!=’\n’){if(a%2!=0&.&.(ch>=’a’&&ch<=’z’))ch=ch-’a’+’A’:a++;putchar(ch);}printf("n");}A、1aCcEdF2DfB、1AeCeDf2dFC、1AcCeDf2DfD、1aCeEdF2dF標(biāo)準(zhǔn)答案:B知識點解析:從鍵盤獲取字符,這個程序的功能是對輸入的字符,如果這個字符對2的余數(shù)不等于0,并且在這個小寫字母’a’和’z’之間,則把這個字符轉(zhuǎn)換成大寫字母。7、下列選項中,不屬于數(shù)據(jù)管理員(DBA)職責(zé)的是()。A、數(shù)據(jù)庫維護B、數(shù)據(jù)庫設(shè)計C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類型轉(zhuǎn)換標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設(shè)計、維護、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫設(shè)計。DBA的主要任務(wù)之一是數(shù)據(jù)庫設(shè)計,具體地說是進行數(shù)據(jù)模式的設(shè)計。數(shù)據(jù)庫維護。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲等進行實施與維護。改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數(shù)據(jù)庫的運行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。8、關(guān)于運算符重載,下列表述中正確的是()。A、C++已有的任何運算符都可以重載B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符標(biāo)準(zhǔn)答案:C知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是C++的標(biāo)準(zhǔn)類型。故本題答案為C。9、下列有關(guān)函數(shù)重載的敘述中,錯誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認(rèn)值標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是函數(shù)重載的概念。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。故選項C)錯誤。10、有以下程序,在橫線應(yīng)添加()。#includeusingnamespacestd;classTestClass{public:TestClass(intn){number=n;}//拷貝構(gòu)造函數(shù)~TestClass(){}private:intnumber;};TestClassfun(TestClassP){TestClasstemp(p);returntemp;}intmain(){TestClassobj1(10),obj2(0);TestClassobj3(obj1);obj2=fun(obj3);return0:}A、TestClass(TestClass&other){number=other.number;}B、TestClass(TestClassother){number=other.number;C、TestClass(TestClass&other){number;}D、TestClass(&other){number=other.number;}標(biāo)準(zhǔn)答案:A知識點解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),但它只有一個參數(shù),這個參數(shù)是本類的對象,即other,所以賦值操作將本類的參數(shù)othernlmber賦值給number;而且采用對象的引用的形式,也就是&other。11、有如下頭文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標(biāo)準(zhǔn)答案:C知識點解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針,其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。12、下列順序的輸出結(jié)果是()。#includeusingnamespacestd;voidfun(int&r1{r*=2:}intmain(){intn=50;fun(n);cout<A、0B、20C、50D、100標(biāo)準(zhǔn)答案:D知識點解析:題中主程序中首先定義整型變量n=50,然后調(diào)用函數(shù)fun,實際參數(shù)為n。函數(shù)fun中參數(shù)為引用,為地址。即函數(shù)中形參的改變會影響實參的值,函數(shù)的功能是參數(shù)乘以2。13、下列關(guān)于棧敘述正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠不能被刪除D、棧底元素最先被刪除標(biāo)準(zhǔn)答案:A知識點解析:棧是先進后出的數(shù)據(jù)結(jié)構(gòu),所以棧頂元素最后人棧卻最先被刪除。棧底元素最先入棧卻最后被刪除。所以選擇A。14、下面描述中正確的是()。A、好的軟件設(shè)計應(yīng)是高內(nèi)聚低耦合B、內(nèi)聚性和耦合性無關(guān)C、內(nèi)聚性是指多個模塊間相互連接的緊密程度D、耦合性是指一個模塊內(nèi)部各部分彼此結(jié)合的緊密程度標(biāo)準(zhǔn)答案:A知識點解析:軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴關(guān)系適當(dāng)?shù)取DK的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進一步保證以此為依據(jù)開發(fā)出的軟件系統(tǒng)可靠性強,易于理解和維護。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡可能的高。故本題答案為A選項。15、下列運算符中,可以重載為類的友元函數(shù)的運算符是()。A、=B、()D、<<標(biāo)準(zhǔn)答案:D知識點解析:C++規(guī)定,賦值操作符“=”、下標(biāo)操作符“[]”、調(diào)用操作符“()”和成員訪問箭頭操作符“一>”必須重載為成員函數(shù),這些操作符定義為非成員函數(shù)將在編譯時標(biāo)記為錯誤,友元函數(shù)是非成員函數(shù),上面四種操作符不能重載為類的友元函數(shù),另外成員訪問操作符“.”不能重載,答案為D。16、有如下類定義:classMyClass{intk;public:MyClass(intn):k(n){}};則下列數(shù)組定義中,錯誤的是()。A、MyClassm4[4]={MyClass(1),MyClass(2),MyClass(3),MyClass(4)};B、MyClassm4[]={MyClass(1),MyClass(2),MyClass(3)};C、MyClassm4[4]={1,2,3};D、MyClassm4[]={1,2,3};標(biāo)準(zhǔn)答案:C知識點解析:選項A、B都使用MyClass類的構(gòu)造函數(shù),完成數(shù)組元素的初始化,數(shù)組定義正確;選項D中,隱式使用Myclass類的構(gòu)造函數(shù)(接收一個int型的參數(shù)),將整數(shù)1、2、3轉(zhuǎn)換為MyClass類的對象,數(shù)組定義正確;選項C中,數(shù)組前3個元素同選項D,可以完成初始化,但是第4個數(shù)組元素,需要調(diào)用MyClass類的默認(rèn)構(gòu)造函數(shù),由于Myclass類已經(jīng)提供了一個構(gòu)造函數(shù)(非默認(rèn)構(gòu)造函數(shù)),所以編譯器不會自動生成默認(rèn)構(gòu)造函數(shù),也就無法構(gòu)造第4個元素,選項C錯誤。故本題答案為C選項。17、假定MyClass為一個類,則該類的拷貝初始化構(gòu)造函數(shù)的聲明語句為()。A、MyClass&(MyClassx);B、MyClass(MyClassX)C、MyClass(MyClass&x);D、MyClass(MyClass+X)標(biāo)準(zhǔn)答案:C知識點解析:拷貝構(gòu)造函數(shù)是一個特殊的構(gòu)造函數(shù),它用一個已知的對象初始化一個正在創(chuàng)建的同類對象,它的一般格式是:類名:類名(const類名&引用對象名)。18、設(shè)有定義“intx=2;”,下列表達式中,值不為6的是()。A、x*=x+1B、x++,2*xC、x*=(1+x)D、2*x,x+=2標(biāo)準(zhǔn)答案:D知識點解析:本題考查了復(fù)合運算符“*=”和逗號表達式如何正確求值。逗號表達式的作用是用逗號將表達式連起來,其有效值為最后一個表達的值,其運算的結(jié)合性從左到右進行運算。選項D是一個逗號表達式,其值為4。19、下面關(guān)于this指針的說法中錯誤的是()。A、this指針是一種隱含指針,存在于每個類的非靜態(tài)成員函數(shù)中B、它是成員函數(shù)所屬對象的指針C、通過this成員變量的形式可以訪問類中的數(shù)據(jù)成員D、成員函數(shù)訪問類中的數(shù)據(jù)成員格式可寫成:this.>成員變量標(biāo)準(zhǔn)答案:C知識點解析:this指針是一個隱含指針,它隱含于每個類的非靜態(tài)成員函數(shù)中。this指針是成員函數(shù)所屬的對象指針,它指向當(dāng)前類的對象地址。通過this指針訪問當(dāng)前對象成員有兩種方式:(*this)成員,this->成員。20、下列關(guān)于getline函數(shù)的描述中,錯誤的是()。A、該函數(shù)可以用來從鍵盤上讀取字符串B、該函數(shù)讀取的字符串長度是受限制的C、該函數(shù)讀取字符串時,遇到終止符時便停止D、該函數(shù)中所使用的終止符只能是換行符標(biāo)準(zhǔn)答案:D知識點解析:本題考查的是無格式輸入/輸出流對象中的getline函數(shù)。該函數(shù)的功能是允許從輸入流中讀取多個字符,并且允許指定輸入終止字符(默認(rèn)是換行符),在讀取完成后,從讀取的內(nèi)容中刪除該終止字符。21、若要重載+、=、<<、==和口運算符,則必須作為類成員重載的運算符是()。A、+和-B、=和<<C、==和<<D、=和[]標(biāo)準(zhǔn)答案:D知識點解析:對于單目運算符,建議選擇成員函數(shù);對于運算符一、()、[]、->,只能作為成員函數(shù);對于運算符+=、-=、/=、*=、&=、!=、~=、%=、<<=、>>=,建議重載為成員函數(shù);對于其他運算符,建議重載為友元函數(shù)。22、下列說法中錯誤的是()。A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承時基類中的private成員在派生類中仍是private的C、私有繼承時基類中的public成員在派生類中是private的D、保護繼承時基類中的public成員在派生類中是protected的標(biāo)準(zhǔn)答案:B知識點解析:公用繼承時基類中的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。私有繼承時,基類的公有成員和保護成員在派生類中成了私有成員,其私有成員仍為基類私有。受保護的繼承時,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員認(rèn)為基類私有。23、下列關(guān)于輸入流類成員函數(shù)getline()的表述中,錯誤的是A、該函數(shù)只能用來從鍵盤設(shè)備讀取一行字符串B、該函數(shù)讀取的字符串長度是由參數(shù)限制的C、該函數(shù)讀取字符串時,遇到終止符便停止D、該函數(shù)讀取字符串時,遇到終止符便停止標(biāo)準(zhǔn)答案:A知識點解析:getline(istream&is,string&str)第一個參數(shù)is是輸入流對象,這個對象可以是鍵盤輸入流對象,也可以是文件輸入流等其他輸入流的對象,選項A錯誤,答案為A。24、下列關(guān)于默認(rèn)參數(shù)的敘述中,錯誤的是A、為形參列表中的多個參數(shù)指定默認(rèn)值時,應(yīng)從右至左進行設(shè)置B、若函數(shù)的所有形參都指定了默認(rèn)值,則調(diào)用時可不給出實參C、C++中的默認(rèn)參數(shù)可以簡化對復(fù)雜函數(shù)的調(diào)用D、若要為參數(shù)指定默認(rèn)值,必須在函數(shù)定義及其原型聲明中同時指定標(biāo)準(zhǔn)答案:D知識點解析:既可以在函數(shù)聲明中指定默認(rèn)參數(shù),也可以在函數(shù)定義中指定默認(rèn)參數(shù),但是,在一個源文件中,只能為形參指定默認(rèn)參數(shù)一次,通常應(yīng)在函數(shù)聲明中指定默認(rèn)參數(shù)。A、B、C正確,選項D錯誤;答案為D。25、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標(biāo)準(zhǔn)答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,所以B)錯誤。笛卡爾積是用R集合中元素為第一元素,S集合中元素為第二元素構(gòu)成的有序?qū)?,所以C)錯誤。根據(jù)關(guān)系T可以很明顯的看出是從關(guān)系R與關(guān)系S中取得相同的關(guān)系組所以取得是交運算,選擇D)。26、有如下類定義:classTest{public:Test(){a=0;c=0;}//①intf(inta)const{this->a=a;}//②staticintg(){returna;}//③voidh(intb){Test::b=b;};//④private:inta;staticintb;constintc;};intTest::b=0;在標(biāo)注號碼的行中,能被正確編譯的是()。A、①B、②C、③D、④標(biāo)準(zhǔn)答案:D知識點解析:只能通過構(gòu)造函數(shù)的參數(shù)初始化列表對常數(shù)據(jù)成員進行初始化,本題中常數(shù)據(jù)成員為c。①通過默認(rèn)構(gòu)造函數(shù)初始化c,所以不正確。常成員函數(shù)只能引用本類中數(shù)據(jù)成員,而不能修改它,所以②不正確。靜態(tài)成員函數(shù)由于沒有this指針,所以不能訪問本類中的非靜態(tài)成員,所以③錯誤。27、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、差C、交D、并標(biāo)準(zhǔn)答案:B知識點解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒有的元組的集合,所以進行的是差的運算。28、下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。A、在需求分析階段建立數(shù)據(jù)字典B、在概念設(shè)計階段建立數(shù)據(jù)字典C、在邏輯設(shè)計階段建立數(shù)據(jù)字典D、在物理設(shè)計階段建立數(shù)據(jù)字典標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實和完善的。29、有如下程序:#includeusingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<A、Base.fun();B、Base::fun();C、Base->fun();D、fun();標(biāo)準(zhǔn)答案:B知識點解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有的訪問屬性,其私有成員仍為基類私有。本題中想要輸出Base::fun,則必須調(diào)用基類的公用成員函數(shù)fun,所以使用Base::fun();來調(diào)用基類的成員函數(shù)fun。30、下列關(guān)于函數(shù)的描述中,錯誤的是A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能在類體中定義標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)可以不需要返回值,即void型的,函數(shù)可以沒有參數(shù),所以AB選項正確,函數(shù)可以作為類的成員函數(shù),所以C正確,D錯誤。31、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}TV(constTV&r):size(r.size){}~TV(){}private:intsize;};TVfun(TV&u){TVt=u;returnt;}intmain(){TVx,y;x=fun(y);return0;}則TV類的復(fù)制構(gòu)造函數(shù)被調(diào)用的次數(shù)是A、1次B、2次C、3次D、4次標(biāo)準(zhǔn)答案:B知識點解析:拷貝構(gòu)造函數(shù),是一種特殊的構(gòu)造函數(shù),它由編譯器調(diào)用來完成一些基于同一類的其他對象的構(gòu)建及初始化??截悩?gòu)造函數(shù)要調(diào)用基類的拷貝構(gòu)造函數(shù)和成員函數(shù)。本題中調(diào)用fun函數(shù)時調(diào)用了一次復(fù)制構(gòu)造函數(shù),函數(shù)返回執(zhí)行x=fun(y)時又調(diào)用了一次復(fù)制構(gòu)造函數(shù),所以總共2次。B選項正確。32、有如下類定義:classMyClass{public:_____________private:intdata;};若要為MyClass類重載流輸出運算符<<,使得程序中可以"cout<<obj;"這樣的語句輸出MyClass類的對象obj中成員變量data的值,則橫線處應(yīng)填入的語句是A、friendostream&operator<<(ostream&os,MyClassa);B、friendostream&operator<<(MyClassa,ostream&os);C、ostream&operator<<(ostream&os,MyClassa);D、ostream&operator<<(MyClassa,ostream&os);標(biāo)準(zhǔn)答案:A知識點解析:本題考查在類中重載流運算符<<,那么需要將該運算符重載為友元成員函數(shù),且第一個參數(shù)為ostream&os,所以A選項正確。33、下列有關(guān)繼承和派生的敘述中,正確的是()。A、派生類不能訪問基類的保護成員B、作為虛基類的類不能被實例化C、派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)D、虛函數(shù)必須在派生類中重新實現(xiàn)標(biāo)準(zhǔn)答案:C知識點解析:派生類可以訪問基類的保護成員,而不能訪問基類的私有成員。作為虛基類的類可以被實例化。虛函數(shù)如果沒有派生類中重新實現(xiàn),那么仍然使用基類的成員函數(shù)。34、若x和y是程序中的兩個整型變量,則下列if語句中正確的是A、if(x!=0)y=1;elsey=2;B、if(x!=0)y=1elsey=2;C、if(x!=0)theny=1elsey=2;D、ifx!=0y=1;elsey=2;標(biāo)準(zhǔn)答案:A知識點解析:本題考查if語句,if語句一種形式為:if(表達式1)語句1else語句2只有A選項是正確的35、Windows環(huán)境下,由C++源程序文件編譯而成的目標(biāo)文件的擴展名是A、objB、exeC、cppD、out標(biāo)準(zhǔn)答案:A知識點解析:C++程序開發(fā)過程包括編輯、編譯、鏈接、運行和調(diào)試。編譯完成后鏈接之前會生成后綴為obj的目標(biāo)文件,所以答案為A。36、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、可行性分析報告B、軟件需求規(guī)格說明書C、概要設(shè)計說明書D、集成測試計劃標(biāo)準(zhǔn)答案:B知識點解析:A)錯誤,可行性分析階段產(chǎn)生可行性分析報告。C)錯誤,概要設(shè)計說明書是總體設(shè)計階段產(chǎn)生的文檔。D)錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B)正確,需求規(guī)格說明書是后續(xù)工作如設(shè)計、編碼等需要的重要參考文檔。37、有如下程序:#include#includeusingnamespacestd;classFather{public:Father(strings):name(s){cout<<’F’;}~Father(){}private:stringname;};classMother{public:Mother(strings):name(s){cout<<’M’;}~Mother(){}private:stringname;};classChild:publicMother,publicFather{public:Child(strings1,strings2,strings3,inta):Father(s1),Mother(s2),name(s3),age(a){cout<<’C’;}~Child(){}private:stringname;intage;};intmain(){Childson("Zhang","Li","Ming",20);return0;}運行時的輸出結(jié)果是A、CB、FMCC、MFCD、FMC20標(biāo)準(zhǔn)答案:C知識點解析:執(zhí)行派生類構(gòu)造函數(shù)的順序是:1、調(diào)用基類構(gòu)造函數(shù),2、調(diào)用子對象構(gòu)造函數(shù),3、再執(zhí)行派生類析構(gòu)函數(shù),4、執(zhí)行基類的析構(gòu)函數(shù)。所以本題中執(zhí)行構(gòu)造函數(shù)為先執(zhí)行基類Mother的構(gòu)造函數(shù)、然后執(zhí)行基類Father的構(gòu)造函數(shù),再執(zhí)行派生類的構(gòu)造函數(shù)函數(shù),所以輸出MFC,答案C正確。38、在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)標(biāo)準(zhǔn)答案:C知識點解析:當(dāng)有序線性表為順序存儲時才能用二分法查找??梢宰C明的是對于長度為n的有序線性表,在最壞情況下,二分法查找只需要比較log2n次,而順序查找需要比較n次。39、下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。A、在需求分析階段建立數(shù)據(jù)字典B、在概念設(shè)計階段建立數(shù)據(jù)字典C、在邏輯設(shè)計階段建立數(shù)據(jù)字典D、在物理設(shè)計階段建立數(shù)據(jù)字典標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實和完善的。二、基本操作題(本題共1題,每題1.0分,共1分。)40、請使用VC6或使用[答題]菜單打開考生文件夾proj1下的工程projl,該工程中包含程序文件main.cpp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:打開503號門…門是鎖著的,打不開。打開503號門的鎖…鎖開了。打開503號門…門打開了。打開503號門…門是開著的,無須再開門。鎖上503號門…先關(guān)門…門鎖上了。注意:只修改每個“//ERROR**********found**********”下的那一行,不要改動程序中的其他內(nèi)容。#includeusingnamespacestd;classDoor{intnum;//門號booldosed;//true表示門關(guān)著boollocked;//true表示門鎖著public:Door(intnum){//ERROR**********found**********nm=this->Rum;closed=locked=true;}boolisClosed()eonst{returndosed;}//門關(guān)著時返回true,否則返回falseboolisOpened()eonst{lreturn!closed;}//門開著時返回true,否則返回falseboolisLoeked()eonst{returnlocked;}//門鎖著時返回true,否則返回falseboolislJnlocked()eonst{retllm!locked;}//門未鎖時返回true,否則返回falsevoidopen(){//開門eout<標(biāo)準(zhǔn)答案:(1)this一>num=num;(2)if(!closed)(3)voidlock(){知識點解析:(1)主要考查考生對this指針的掌握,在構(gòu)造函數(shù)中this指針指向的是當(dāng)前類,因此要給num賦值使用語句this一>num=num;完成。(2)主要考查考生對if語句的掌握,先看類的私有成員中關(guān)于closed的定義:boolclosed;//true表示門關(guān)著。再看下一條語句:cout<<”門是開著的,無須再開門?!保?。即滿足條件時就會輸出:門是開著的,無須再開門。因此if括號內(nèi)應(yīng)該是!closed。(3)主要考查考生對const函數(shù)的掌握,lock函數(shù)體中存在語句locked=true,即有參數(shù)發(fā)生改變,因此不能用_const。三、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)41、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補充空出的代碼。函數(shù)convert(char*des.char*str,charc,char*str2)的功能是:如果s仃中包含字符“!”,則替換成“a;如果str中包含字符“&”,則替換成b;如果str中包含字符“*”則替換成str2。并用函數(shù)返回目標(biāo)轉(zhuǎn)換后的指針。注意:只能補充函數(shù)convert(char*des,char*str,char*str2)。#include#include#defineMAXLEN1024voidconvert(char*des,char*str,char*str2){}voidmain(){chardest[MAXLEN];char*str=”!&cefghi*!&”;char*str2=”Jklm”;convert(dest,str,str2);cout<標(biāo)準(zhǔn)答案:des[0]=0;chartemp[2]={0,0};for(inti=0;str[i]!=NULL;i++{if(str[i]==’!’){temp[0]=’a’;//替換成’a’strcat(des,temp);}elseif(str[i]==’&’){temp[0]=‘b’;strcat(des,temp);//替換成‘b’}elseif(str[i]==‘*’){strcat(des,str2);//替換成str2}else{temp[0]=str[i];strcat(des,temp);//其他情況則添加在后面}}知識點解析:(1)由審題分析可知,利用循環(huán)中不斷檢索s仃字符串每一個字符,循環(huán)變量i從0開始,直到到了str字符結(jié)束,即srt[i]==NULL為循環(huán)判斷結(jié)束條件。(2)在循環(huán)體內(nèi),用ifelse語句判斷是不是“!”、“&”或“*”這些特定的字符,如果是這些特定的字符則進行相應(yīng)的替換,如果不是則將該字符直接加在des后面。(3)字符串的連接可以使用字符串連接函數(shù)strcatO,將新字符連接在des后面,即strcat(des,temp)。四、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)42、請使用VC6或使用[答題]菜單打開考生文件夾proj3下的工程proj3,其中包含了類IntegerSet和主函數(shù)main的定義。一個IntegerSet對象就是一個整數(shù)的集合,其中包含0個或多個無重復(fù)的整數(shù);為了便于進行集合操作,這些整數(shù)按升序存放在成員數(shù)組elem的前若干單元中。成員函數(shù)add的作用是將一個元素添加到集合中(如果集合中不存在該元素),成員函數(shù)remove從集合中刪除指定的元素(如果集合中存在該元素)。請編寫成員函數(shù)remove。在main函數(shù)中給出了一組測試數(shù)據(jù),此時程序的正確輸出結(jié)果應(yīng)為:234527283166752345627283166752345619272831667534561927283166753456192728316675要求:補充編制的內(nèi)容寫在“//**********333**********”與“//**********666**********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)WriteToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//IntegorSet.h#ifndefINTEGERSET#defineINEGERsET#includeusingnamespacestd;constintMAXELEMENTS=100;//集合最多可擁有的元素個數(shù)classIntegerSet{intelem[MAXELEMENTS];//用于存放集合元素的數(shù)組intcounter;//用于記錄集合中元素個數(shù)的計數(shù)器public:IntegerSet():counter(0){}//創(chuàng)建一個空集合IntegerSet(intdata[],intsize);//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個整數(shù)集合voidadd(intelement);//添加一個元素到集合中voidremove(intelemerit);//刪除集合中指定的元素intgetCount()const{retuIllcounter;}//返回集合中元素的個數(shù)intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素voidshow()eonst;};voidWriteToFfle(char*);#ndif//main.cpp#include"IntegerSet.h"#includeIntegerSet::IntegerSet(intdata[],intsize):counter(O){for(inti=0;i0;j--)if(element>=elem[j-1])break;//如果找到的是等于element的元素,說明要添加的元素已經(jīng)存在,直接返回if(j>O)if(element=elem[j-1])return;//如果找到的是小于element的元素,j就是要添加的位置//該元素及其后面的元素依次后移,騰出插入位置for(intk=counter;k>j;k--)elem[k]=elem[k-1];elem[j]=element;//將element插入到該位置counter++;//計數(shù)器加1}voidIntegerSet::remove(intelement){//**********333**********//**********666**********}voidIntegerSet::show()const{for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;i知識點解析:主要考查考生對有序數(shù)組的掌握,題目要求成員函數(shù)rem0Ve從集合中刪除指定的元素(如果集合中存在該元素)。遍歷數(shù)組elem中的元素,找出與形參element相等的元素,并將其刪除,每刪除一個元素,即將該元素之后的每個元素前移一位,如果不存在與形參element相等的元素則沒有操作。使用下標(biāo)i遍歷數(shù)組,if語句判斷是否與element相等。國家二級(C++)機試模擬試卷第3套一、選擇題(本題共31題,每題1.0分,共31分。)1、下列程序?qū)、Y和Z按從小到大的順序排列,橫線處應(yīng)添加語句()。templatevoidfun(_______){Ta:if(x>y){a=x;x=y;y=a;}if(y>z){a=y;y=z;z=a;}if(x>y){a=x;x=y;y=a;}}A、Tx,Ty,TZB、Tx;y;zC、T&x,T&y,T&zD、T&x,&y,&z標(biāo)準(zhǔn)答案:C知識點解析:函數(shù)fun的類型為void沒有任何返回值,函數(shù)中變量的改變,即參數(shù)的改變應(yīng)該影響實參。應(yīng)該是地址傳遞方式,即把引用型作為函數(shù)形參。類T是類的抽象,可以利用模板建立各種數(shù)據(jù)類型的類。所以補全函數(shù)的定義為“T&x,T&y,T&z”。2、有如下函數(shù)模板:templateTsquare(Tx){returnx*x;)其中T是()。A、函數(shù)形參B、函數(shù)實參C、模板形參D、模板實參標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是函數(shù)模板。聲明一個函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,{函數(shù)體)其中的<模板形參表聲明>是由一個或多個“模板形參”組成的,每個“模板形參”可具有以下幾種形式:typename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。3、下列不屬于軟件工程3個要素的是()。A、工具B、過程C、方法D、環(huán)境標(biāo)準(zhǔn)答案:D知識點解析:軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。4、下列控制格式輸入/輸出的操作符中,能夠設(shè)置浮點數(shù)精度的是()。A、setprecisionB、setwC、setiillD、showpoint標(biāo)準(zhǔn)答案:A知識點解析:iomanip中定義的操縱符包括:seffiil(ch)用曲填充空白、setprecision(n)將浮點精度置為n、setw(w)、讀寫w個字符的值showpoint設(shè)置小數(shù)點。5、有如下程序段:inti=1:while(1){i++;if(i==10)break:if(i%2==0)cout<<’*’;}執(zhí)行這個程序段輸出字符*的個數(shù)是()。A、10B、3C、4D、5標(biāo)準(zhǔn)答案:C知識點解析:本題主要考查while的作用。只有i為偶數(shù)時才輸出“*”,而本題只有2,4,6,8時才滿足條件,而當(dāng)i為10時程序結(jié)束,即只有4個“*”被輸出。6、類MyClass的定義如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private:intvalue;};則對下列語句序列正確的描述是()。MyClass*P,my;P=&my;A、語句p=&my;是把對象my賦值給指針變量PB、語句MyClass*P,my;會調(diào)用兩次類MyClass的構(gòu)造函數(shù)C、對語句*P.SetVariable(5)的調(diào)用是正確的D、語句p->SetVariable(5)與語句my.SetVariable(5)等價標(biāo)準(zhǔn)答案: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)正確。7、下面是一個模板聲明的開始部分:template<typenameT>double…由此可知()。A、這可能是一個函數(shù)模板的聲明B、這可能是一個類模板的聲明C、這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明D、這肯定是一個錯誤的模板聲明標(biāo)準(zhǔn)答案:A知識點解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,從templatedouble這里就可以看出這是一個函數(shù)模板的聲明。8、有如下頭文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標(biāo)準(zhǔn)答案:C知識點解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針,其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。9、已知函數(shù)f的原型為voidf(int&a,double*b);變量x、y的定義是intx;doubley;則下列調(diào)用該函數(shù)的語句中正確的是A、f(x,&y);B、f(x,y);C、f(&x,&y);D、f(&x,y);標(biāo)準(zhǔn)答案:A知識點解析:本題考查函數(shù)的調(diào)用,函數(shù)原型中第一個參數(shù)為引用,第二個參數(shù)為指針,所以只有A選項正確。10、某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)()。A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總比度為2的結(jié)點多一個,所以本題中度為2的結(jié)點為1-1=0個,所以可以知道本題目中的二叉樹的每一個結(jié)點都有一個分支,所以共7個結(jié)點共7層,即度為7。11、下面程序的運行結(jié)果為()。#includeclassA{public:A(){cout<<"1";}~A(){cout<<"2";}};classB:publicA{public:B(){cout<<"3";}一B(){cou

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論