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

下載本文檔

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

文檔簡介

國家二級(C++)機試模擬試卷14(共9套)(共364題)國家二級(C++)機試模擬試卷第1套一、選擇題(本題共38題,每題1.0分,共38分。)1、在面向?qū)ο蠓椒ㄖ?,不屬?對象"基本特點的是()。A、一致性B、分類性C、多態(tài)性D、標識唯一性標準答案:A知識點解析:對象有如下一些基本特點:標識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性好。所以選擇A)。2、下列運算符中,不能被重載的是()。A、&&B、!=C、.D、++標準答案:C知識點解析:C++不能重載的運算符只有5個,即"."、".*"、"::"、"?:"、"sizeof",故本題答案為C。3、有如下程序:#includeusingnamespacestd;classBase{public:voidoutput(){cout<<1;}virtualvoidPrint(){cout<<′B′;}};classDerived:publicBase{public:voidoutput(){cout<<2;}voidPrint(){cout<<′D′;}};intmain(){Base*ptr=newDerived;ptr->output();ptr->Print();deleteptr;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、1BB、1DC、2BD、2D標準答案:B知識點解析:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義了一個指向派生類對象的基類指針ptr,執(zhí)行ptr->output后,會執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr->Print()會執(zhí)行派生類的Print,即輸出D,所以本題答案為B。4、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、交C、投影D、并標準答案:A知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復的屬性列去掉,所以根據(jù)T中元組可以判斷R和S做的是自然連接操作。5、有如下類定義和變量定義:classA{public:A(){data=0;}~A(){}intGetData()const{returndata;}voidSetData(intn){data=n;}private:intdata;};constAa;Ab;下列函數(shù)調(diào)用中錯誤的是A、a.GetData();B、a.SetData(10);C、b.GetData();D、b.SetData(10);標準答案:B知識點解析:本題考查常對象,如果一個對象被定義為常對象,那么它不能調(diào)用該對象的非const型的成員函數(shù),所以B選項錯誤,a為常對象,調(diào)用了SetData這個非const型的成員函數(shù)。6、下列關(guān)于模板形參的敘述中,錯誤的是A、模板形參表必須在關(guān)鍵字template之后B、模板形參表必須用括弧()括起來C、可以用class修飾模板形參D、可以用typename修飾模板形參標準答案:B知識點解析:本題考查模板的定義,使用的括號為<>,所以B選項錯誤。7、下列選項中,正確的C++標識符是A、student-3B、_3studentC、3studentD、student3標準答案:B知識點解析:用來表示變量、符號常量、函數(shù)、數(shù)組類型等實體名字的有效字符序列稱為標識符,標識符由字母、數(shù)字、和下劃線3種字符組成,且第一個字符必須為字母或者下劃線,只有B選項正確。8、下列關(guān)于類的析構(gòu)函數(shù)的敘述中,錯誤的是A、定義析構(gòu)函數(shù)時不能指定返回值B、析構(gòu)函數(shù)的函數(shù)名就是類名前加上字符~C、析構(gòu)函數(shù)可以重載D、在一個類中如果沒有定義析構(gòu)函數(shù),系統(tǒng)將自動生成一個析構(gòu)函數(shù)標準答案:C知識點解析:本題考查類的析構(gòu)函數(shù)的定義,析構(gòu)函數(shù)(destructor)與構(gòu)造函數(shù)相反,當對象脫離其作用域時(例如對象所在的函數(shù)已調(diào)用完畢),系統(tǒng)自動執(zhí)行析構(gòu)函數(shù)。析構(gòu)函數(shù)往往用來做"清理善后"的工作(例如在建立對象時用new開辟了一片內(nèi)存空間,應在退出前在析構(gòu)函數(shù)中用delete釋放)。以C++語言為例,析構(gòu)函數(shù)名也應與類名相同,只是在函數(shù)名前面加一個波浪符~,例如~stud(),以區(qū)別于構(gòu)造函數(shù)。它不能帶任何參數(shù),也沒有返回值(包括void類型)。只能有一個析構(gòu)函數(shù),不能重載。如果用戶沒有編寫析構(gòu)函數(shù),編譯系統(tǒng)會自動生成一個缺省的析構(gòu)函數(shù),它也不進行任何操作。所以C選項錯誤。9、要利用C++流進行文件操作,必須在程序中包含的頭文件是A、iostreamB、fstreamC、strstreamD、cstdlib標準答案:B知識點解析:iostream通用I/O流類和其他I/O流的基類;fstream類用來對文件流進行操作,fstream類的頭文件是fstream.h:stxstream類同時可以支持C風格的串流的輸入輸出操作iomanip是I/O流控制頭文件,就像c中的格式化輸出一樣。10、有如下程序段:inti=1;intj=4;intmain(){intj=i,i=8;cout<A、14B、81C、88D、18標準答案:B知識點解析:程序首先在main函數(shù)之前定義兩個int型全局變量i、j,并賦予初始值i=1,j=4;在main函數(shù)中又定義了兩個int型局部變量i、j,并使用全局變量i初始化局部變量j,使用數(shù)值8初始化局部變量i,所以局部變量j=1,局部變量i=8;由于在命名空間中,局部變量會覆蓋同名的全局變量,所以輸出的i、j都是局部變量,輸出結(jié)果為81,答案為B。11、有如下類定義:classB{private:voidfun1(){}protected:voidfun2(){}public:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是類D的對象,則下列語句中正確的是A、obj.fun1();B、obj.fun2();C、obj.fun4();D、obj.fun3();標準答案:D知識點解析:派生類對基類成員的訪問權(quán)限由基類成員的訪問標識和類派生列表中的訪問標識共同決定的,類D公有繼承類B,所以類B中成員函數(shù)fun1對類D不可見;成員函數(shù)fun2為類D的protected成員;成員函數(shù)fun3為類D的public成員;綜上所述fun1,fun2,fun4對類D對象obj均不可見,fun3對obj可見,答案為D。12、某二叉樹的前序序列為ABCD,中序序列為DCBA,則后序序列為A、BADCB、DCBAC、CDABD、ABCD標準答案:B知識點解析:二叉樹遍歷可以分為3種:前序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹兩者之間)、后序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之后)。本題中前序序列為ABCD,中序序列為DCBA,可知D為根結(jié)點,ABC為左側(cè)結(jié)點,C為D左子結(jié)點,A為B子結(jié)點,故后序序列為DCBA,故B選項正確。13、下列關(guān)于函數(shù)參數(shù)的敘述中,錯誤的是A、函數(shù)的實參與形參應該一一匹配B、定義函數(shù)時必須給出函數(shù)的實參C、函數(shù)形參可以看做函數(shù)的局部變量D、C++中可以為形參指定默認值標準答案:B知識點解析:函數(shù)定義時,形參列表若不為空,需要給出函數(shù)的形參;調(diào)用函數(shù)時,參數(shù)列表若不為空,必須給出函數(shù)的實參;選項A、C、D正確,選項B錯誤;答案為B。14、有如下類定義:classBase{intm;public:intn;protected:intp;};classDerived:privateBase{intk;public:voidf();};則允許成員函數(shù)f訪問的數(shù)據(jù)成員的個數(shù)是A、1B、2C、3D、4標準答案:C知識點解析:私有繼承中,基類的所有成員(除了private成員)在派生類中為private成員;另外C++中,class關(guān)鍵字定義的類,默認的訪問級別為private;題目中Derived以private方式繼承Base,所以Derived中private成員有:n、p、k,沒有public和protected成員,成員函數(shù)f可以訪問Derived的private成員、public成員和protected成員,答案為C。15、下面描述不屬于軟件特點的是A、軟件是一種邏輯實體,具有抽象性B、軟件在使用中不存在磨損、老化問題C、軟件復雜性高D、軟件使用不涉及知識產(chǎn)權(quán)標準答案:D知識點解析:軟件具有以下特點:軟件是一種邏輯實體,具有抽象性;軟件沒有明顯的制作過程;軟件在使用期間不存在磨損、老化問題;對硬件和環(huán)境具有依賴性;軟件復雜性高,成本昂貴;軟件開發(fā)涉及諸多的社會因素,如知識產(chǎn)權(quán)等。故選項D正確。16、下列運算符中,不能作為成員函數(shù)重載的是A、+B、=C、<<(流運算符)D、||標準答案:C知識點解析:流運算符"<<"不能重載為類的成員函數(shù),因為一旦該操作符重載為類的成員函數(shù),那么左操作數(shù)將只能是該類類型的對象,這樣的用法與正常I/O使用方式相反。為了支持正常用法,左操作數(shù)必須為ostream類型。但是,標準庫中的類是不能人為添加成員的,答案為C。17、有下列類模板聲明中,出現(xiàn)語法錯誤的是A、templateclassA;B、templateclassA;C、templateclassA;D、templateclassA;標準答案:D知識點解析:在類模板聲明中,每個模板類型形參前面都必須用關(guān)鍵字class和typename來修飾;選項D錯誤,答案為D。18、設(shè)變量x和y為整型變量,若有函數(shù)調(diào)用為"fun(&x,&y)",則下列選項中,能夠作為函數(shù)fun原型聲明的是A、voidfun(int&a,int&b);B、voidfun(int&a,int*b);C、voidfun(int*a,int&b);D、voidfun(int*a,int*b)標準答案:D知識點解析:fun(&x,&y),函數(shù)調(diào)用參數(shù)列表中傳遞的是變量x,y的地址,所以函數(shù)原型聲明的形參列表中參數(shù)應該是兩個整型變量地址,A、B、C選項中都包含引用傳遞,不正確;答案為D。19、有如下類聲明:classPam{intk;public:Pam(intn):k(n){}voidshow()const;};若要在類體外給出成員函數(shù)show的定義,下列定義中正確的是A、voidshow()const{cout<B、voidshow()const{cout<C、voidPam::show()const{cout<D、voidPam::show()const{cout<標準答案:C知識點解析:在類定義體外定義成員函數(shù),必須指定成員函數(shù)的作用域,因此需要在使用類名和作用域運算符來修飾函數(shù)名,答案為C。20、耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。A、提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性B、降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性C、耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度D、內(nèi)聚性是指模塊間互相連接的緊密程度標準答案:B知識點解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計,應盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性,所以A)錯誤,B)正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度,所以C)與D)錯誤。21、有如下頭文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標準答案:C知識點解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針,其作用域是類內(nèi)部,當類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。22、C++系統(tǒng)預定義了4個用于標準數(shù)據(jù)流的對象,下列選項中不屬于此類對象的是()。A、coutB、cinC、cerrD、cset標準答案:D知識點解析:C++標準數(shù)據(jù)流的對象分別是cout、cin、cerr、clog,所以本題答案為D。23、下列關(guān)于運算符重載的敘述中正確的是A、跟普通函數(shù)一樣,可以為重載的運算符函數(shù)的參數(shù)設(shè)置默認值B、通過重載,可以改變一個運算符原有的優(yōu)先級和操作數(shù)個數(shù)C、只能重載C++中已經(jīng)有的運算符,不能定義新運算符D、C++中已有的運算符都可以重載標準答案:C知識點解析:本題考查運算符重載,重載不能改變運算符運算對象的個數(shù);不能改變運算符的優(yōu)先級別;不能改變運算符的結(jié)合性;重載運算符的函數(shù)不能有默認值,否則就改變了運算符參數(shù)的個數(shù);不能定義新的運算符,某些運算符不能重載。所以答案為C。24、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/S54B、/N41/C54C、/C41/S54D、/C41/C54標準答案:A知識點解析:本題考查構(gòu)造函數(shù)相關(guān)知識,本題中定義一個對象room1,執(zhí)行room1.Print時執(zhí)行構(gòu)造函數(shù)給size賦值為41,然后執(zhí)行voidPrint(){cout<<’/’<<’N’<25、下面描述中不屬于數(shù)據(jù)庫系統(tǒng)特點的是A、數(shù)據(jù)共享B、數(shù)據(jù)完整性C、數(shù)據(jù)冗余度高D、數(shù)據(jù)獨立性高標準答案:C知識點解析:數(shù)據(jù)庫系統(tǒng)的特點為高共享、低冗余、獨立性高、具有完整性等,C錯誤。26、有如下程序:#includeusingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA::b=0;intmain(){XAd1(2),d2(3);cout<A、5B、6C、7D、8標準答案:C知識點解析:本題考查類的靜態(tài)數(shù)據(jù)成員,題目中定義了類的靜態(tài)數(shù)據(jù)成員b,當執(zhí)行定義兩個對象時執(zhí)行構(gòu)造函數(shù),構(gòu)造函數(shù)執(zhí)行b++,所以b最終為2,而d1.get()為2,d2.get()為3,最終結(jié)果為7,C選項正確。27、要利用C++流進行文件操作,必須在程序中包含的頭文件是A、iostreamB、fstreamC、strstreamD、cstdlib標準答案:B知識點解析:本題考查文件流操作時使用需要包含的頭文件,屬于基礎(chǔ)知識,B選項正確。28、下列選項中,正確的C++表達式是A、a+b=b+cB、xyz+C、www++9D、a[3]標準答案:D知識點解析:A選項中,a+b是表達式,不可以作為左值;選項B中,運算符"+"作為一元運算符,應該放在操作數(shù)之前,返回操作數(shù)本身;作為二元運算符,必須作用于兩個操作數(shù)之間;選項C中,運算符"++"是一元運算符,只能有一個操作數(shù);答案為D。29、有如下類定義:classBase1{intm;public:Base(intm1):m(m1){}};classBase2{intn;public:Base(intn1):n(n1){}};classDerived:publicBase2,publicBase1{intq;public:Derived(intm1,intn1,intq1):q(q1),Base1(m1),Base2(n1){};};在創(chuàng)建一個Derived對象時,數(shù)據(jù)成員m、n和q被初始化的順序是A、m、n、qB、n、m、qC、q、m、nD、q、n、m標準答案:B知識點解析:C++中,派生類構(gòu)造函數(shù)都是先調(diào)用基類構(gòu)造函數(shù),再根據(jù)聲明次序定義數(shù)據(jù)成員,所以Derived構(gòu)造函數(shù)的初始化列表中,最后初始化q;另外對于多繼承,派生類的構(gòu)造函數(shù)初始化列表中,基類構(gòu)造函數(shù)是按照基類在派生類的派生列表中出現(xiàn)的次序調(diào)用的;由于Derived類的派生列表中,Base2在前,所以應該先調(diào)用Base2的構(gòu)造函數(shù);這樣Derived類中初始化順序為:基類Base2、基類Base1、數(shù)據(jù)成員q;所以數(shù)據(jù)成員m、n、q的初始化順序為:n、m、q,答案為B。30、下列選項中,不是C++關(guān)鍵字的是A、intB、staticC、enumD、final標準答案:D知識點解析:A選項中,int是定義整型數(shù)據(jù)的關(guān)鍵字;B選項中,static是定義靜態(tài)數(shù)據(jù)類型的關(guān)鍵字;C選項中enum是定義枚舉類型的關(guān)鍵字;答案為D。31、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:除了堆排序算法的比較次數(shù)是O(nlog2n),其他的都是n(n-1)/2。32、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。A、publicB、staticC、protectedD、private標準答案:B知識點解析:類的成員訪問權(quán)限有3種:public(公用)、protected(保護)、private(私有)。33、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是()。A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標準答案:C知識點解析:樹是簡單的非線性結(jié)構(gòu),所以二叉樹作為樹的一種也是一種非線性結(jié)構(gòu)。34、為了提高函數(shù)調(diào)用的實際運行速度,可以將較簡單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標準答案:A知識點解析:一般函數(shù)進行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換,一般只將規(guī)模很小而使用頻繁的函數(shù)聲明為內(nèi)聯(lián)函數(shù),可以避免函數(shù)調(diào)用時間開銷,從而提高運行速度。35、有如下程序:#include#includeusingnamespacestd;classPerson{public:Person(stringn):name(n){cout<<’P’;}private:stringname;};classDate{public:Date(inty=2012,intm=12,intd=21):year(y),month(m),day(d){cout<<’D’;}private:intyear,month,day;};classStudent:publicPerson{public:Student(stringn,inty,intm,intd,charc):birthday(y,m,d),sex(c),Person(n){cout<<’S’;}private:Datebirthday;charsex;};intmain(){Studentstu1("Zhang",1990,10,1,’F’);return0;}運行時的輸出結(jié)果是A、SB、PSC、DPSD、PDS標準答案:D知識點解析:本題考查派生類的構(gòu)造函數(shù),派生類的構(gòu)造函數(shù)初始化時按照參數(shù)列表初始化順序,所以先初始化Person(n),輸出P,然后依次輸出D和S,答案為D選項。36、已知數(shù)組arr的定義如下:intarr[5]={1,2,3,4,5};下列語句中輸出結(jié)果不是3的是A、cout<<*arr+2<B、cout<<*(arr+2)<C、cout<D、cout<<*arr<標準答案:D知識點解析:本題考查以為數(shù)組和指針,一維數(shù)組名可以作為一個指針,指向數(shù)組的第一個元素,題目中要求輸出3,那么就是指向了數(shù)組的第三個元素,*arr表示數(shù)組的第一個元素1,所以輸出不出來3,所以選擇D選項。37、有如下程序:#include#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){cout<<’C’;}~TV(){cout<<’D’;}voidPrint()const{cout<A、CCC54DDDB、CCC54DDC、C54D、54標準答案:A知識點解析:本題考查構(gòu)造函數(shù)相關(guān)知識,本題中定義一個對象room1,輸出C,定義room2時輸出CC,然后執(zhí)行room3.Print時,輸出54,最后執(zhí)行三個析構(gòu)函數(shù)輸出DDD,所以答案為A。38、執(zhí)行語句序列intn=0;for(inti=60;i>0;i-=3)n++;之后,變量n的值是A、20B、21C、60D、61標準答案:A知識點解析:本題考查for循環(huán)語句,i每次減1,所以for循環(huán)執(zhí)行20次。選項A正確。二、基本操作題(本題共1題,每題1.0分,共1分。)39、請使用VC6或使用【答題】菜單打開考生文件夾prog1下的工程prog1,該工程中包含程序文件main.cpp,其中有Salary(“工資”)類和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句行有錯誤,請加以改正。改正后程序的輸出結(jié)果應為:應發(fā)合計:3500應扣合計:67.5實發(fā)工資:3432.5注意:只修改每個“//ERROR****found****”下的那一行,不要改動程序中的其他內(nèi)容。#includeusingnamespacestd;classSalary{public:Salary(constchar*id,doublethe_base,doublethebonus,doublethe_tax)//ERROR**********found**********:thebase(base),thebonus(bonus),thetax(tax){staffid=newchar[strlen(id)+1];strcpy(staffid,id);}//ERROR**********found**********~Salary(){delete*staffid;)doublegetGrossPay()const{returnbase+bonus;}//返回應發(fā)項合計doublegetNetPay()const{returngetGrossPay()_tax;}//返回實發(fā)工資額private:char*staffid;//職工號doublebase;//基本工資doublebonus;//獎金doubletax;//代扣個人所得稅};intmain(){Salarypay("888888",3000.0,500.0,67.50);cout<<"應發(fā)合計:"<標準答案:(1):base(the_base),bonus(the_bonus),tax(the_tax)(2)~Salary(){delete[]staff_id;}(3)cout<<"實發(fā)工資:"<知識點解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握情況,構(gòu)造函數(shù)的成員初始列表要把形參放在括號內(nèi)。(2)主要考查考生對析構(gòu)函數(shù)的掌握情況,析構(gòu)函數(shù)使用delete釋放指針,delete后要跟標識符“[]”。(3)主要考查考生對成員函數(shù)調(diào)用的掌握情況,調(diào)用類的成員函數(shù)使用標識符“.”,而不是作用域符“::”。三、簡單應用題(本題共1題,每題1.0分,共1分。)40、請使用VC6或使用【答題】菜單打開考生文件夾pmj2下的工程pmj2,該工程中包含程序文件main.epp,其中有類Mammal(“哺乳動物”)、類Elephant(“大象”)、類Nouse(“老鼠”)的定義和主函數(shù)main的定義。請在橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述定義。此程序的正確輸出結(jié)果應為:ELEPHANTMOUSE注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//:****found****”。#includeusingnamespacestd;enHMcategory{ENPTY,ELEPHANT,NOUSE};char*output[]={"ENPTY","ELEPHANT","NOUSE");classMammal{public:Nammal(char*str){//**********found**********name=new________strcpy(name,str);}virtualchar*NhoAmI()=0;virtual—Nammal(){delete[]name;}voidPrint(){cout<Print();deletepm;pm=newNouse("Nicky");pm->Print();deletepm;return0;}標準答案:(1)char[strlen(sir)+1];(2)Mammal(str)(3)retumoutput[MOUSE];(4)Elephant知識點解析:(1)主要考查分配空間,程序要給name分配空間,由下一條語句中strcpy(name,str)可知程序要把字符串str復制給name,因此要分配的空間大小為strlen(str)+1。(2)主要考查考生對構(gòu)造函數(shù)的掌握,因為Elephant類是Mammal類的派生類,所以其構(gòu)造函數(shù)要使用成員列表先對Mammal類初始化。(3)主要考查考生對枚舉類型的掌握,先看程序:enumcategory{EMPTY,ELEPHANT,MOUSE}。再參考Elephant類中的WhoAmI函數(shù):char*WhoAmI(){returnoutput[ELEPHANT];}。可知這里要填寫的返回語句為:retumoutput[MOUSE];。(4)主要考查考生對派生類的掌握,題目要求輸出:ELEPHANANTMOUSE可知,要先調(diào)用Elephant類的WhoAmI函數(shù),因此給指針pm分配Elephant類空間。四、綜合應用題(本題共1題,每題1.0分,共1分。)41、請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件pmj3,該工程中包含一個源程序文件proj3.cpp,其中定義了用于表示平面坐標系中的點的類NyPoint和表示圓形的類NyCircle;程序應當顯示:(1,2),5,31.4159,78.5398但程序中有缺失部分,請按照以下提示,把缺失部分補充完整:(1)在“//**1******found****”的下方是構(gòu)造函數(shù)的定義,它用參數(shù)提供的圓心和半徑分別對cen和rad進行初始化。(2)在“//**2******found****”的下方是非成員函數(shù)perimeter的定義,它返回圓的周長。(3)在“//**3******found****”的下方是友元函數(shù)area的定義,它返回圓的面積。注意:只在指定位置編寫適當代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“****found****”。//proj3.cpp#include#includeusingnamespacestd;classMyPoint{//表示平面坐標系中的點的類doublex;doubley;public:MyPoint(doublex,doubley){this->x=x;this->y=y;}doublegetX()const{returnx;}doublegetY()const{returny;}voidshow()const{cout<<’(’<標準答案:(1)rad(r)(2)2*c.radius()(3)MyCirclea知識點解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,使用成員列表初始化給rad賦初始值。(2)主要考查考生對成員函數(shù)的掌握,函數(shù)功能為返回圓c的周長。要返回圓的周長,應利用公式PI*2*c.radius()完成。(3)主要考查考生對成員函數(shù)的掌握,因為函數(shù)功能為返回圓a的面積,所以函數(shù)的形參應該為MyCirclea。國家二級(C++)機試模擬試卷第2套一、選擇題(本題共38題,每題1.0分,共38分。)1、下列敘述中正確的是()。A、棧是“先進先出”的線性表B、隊列是“先進后出”的線性表C、循環(huán)隊列是非線性結(jié)構(gòu)D、有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈式存儲結(jié)構(gòu)標準答案:D知識點解析:棧是先進后出的線性表,所以A錯誤;隊列是先進先出的線性表,所以B錯誤;循環(huán)隊列是線性結(jié)構(gòu)的線性表,所以C錯誤。2、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊列D、二叉樹標準答案:A知識點解析:棧支持子程序調(diào)用。棧是一種只能在一端進行插入或刪除的線性表,在主程序調(diào)用子函數(shù)時要首先保存主程序當前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,因此本題的答案為A。3、某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是()。A、10B、8C、6D、4標準答案:C知識點解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一顆二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個,所以本題中是5+1=6個。4、下列排序方法中,最壞情況下比較次數(shù)最少的是()。A、冒泡排序B、簡單選擇排序C、直接插人排序D、堆排序標準答案:D知識點解析:冒泡排序、直接插入排序與簡單選擇排序法在最壞情況下均需要比較n(n-1)/2次,而堆排序在最壞情況下需要比較的次數(shù)是nlog2n。5、軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務管理系統(tǒng)D、匯編程序標準答案:C知識點解析:編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有c教務管理系統(tǒng)才是應用軟件。6、下面敘述中錯誤的是()。A、軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤B、對被調(diào)試的程序進行“錯誤定位”是程序調(diào)試的必要步驟C、程序調(diào)試通常也稱為DebugD、軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性標準答案:A知識點解析:軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準則有:所有測試都應追溯到需求、嚴格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。7、耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。A、提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性B、降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性C、耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度D、內(nèi)聚性是指模塊間互相連接的緊密程度標準答案:B知識點解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計,應盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊問互相連接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度,所以C與D錯誤。8、數(shù)據(jù)庫應用系統(tǒng)中的核心問題是()。A、數(shù)據(jù)庫設(shè)計B、數(shù)據(jù)庫系統(tǒng)設(shè)計C、數(shù)據(jù)庫維護D、數(shù)據(jù)庫管理員培訓標準答案:A知識點解析:數(shù)據(jù)庫應用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設(shè)計。9、有兩個關(guān)系R,S如下:由關(guān)系R通過運算得到關(guān)系S,則所使用的運算為()。A、選擇B、投影C、插AD、連接標準答案:B知識點解析:投影運算是指對于關(guān)系內(nèi)的域指定可引入新的運算。本題中s是在原有關(guān)系R的內(nèi)部進行的,是由R中原有的那些域的列所組成的關(guān)系。所以選擇B。10、將E-R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為()。A、屬性B、鍵C、關(guān)系D、域標準答案:C知識點解析:從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。11、字面常量42、4.2、42L的數(shù)據(jù)類型分別是()。A、long、double、intB、long、float、intC、int、double、longD、int、float、long標準答案:C知識點解析:本題考查整型變量的類型和浮點變量的類型,42默認為jnt型數(shù)據(jù),42后面加上L后,表示long型數(shù)據(jù),4.2默認為double型數(shù)據(jù)。12、執(zhí)行下列語句段后,輸出字符“水”的個數(shù)是()。for(inti=50;i>1;--i)cout<<’*’;A、48B、49C、50D、51標準答案:B知識點解析:本題考查for循環(huán)語句,--i表示用之前先減1,那么這個for循環(huán)語句只有50到2時才會輸出“*”,所以總共輸出49次。13、有如下程序段:inti=0,j=1;nt&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中會產(chǎn)生編譯錯誤的語句是()。A、④B、③C、②D、①標準答案:A知識點解析:本題考查指針和引用。①為引用,使用正確;④中&r表示一個地址,而*p已經(jīng)是一個值了,不能將一個指針賦值給一個值,所以編譯錯誤。14、下列符號中不屬于C++關(guān)鍵字的是()。A、friendB、namespaeeC、continueD、byte標準答案:D知識點解析:本題考查C++關(guān)鍵字,屬于基本常識,顯然D選項不正確。15、下列有關(guān)函數(shù)重載的敘述中,錯誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認值標準答案:C知識點解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應著多個甬數(shù)的實現(xiàn)。每種實現(xiàn)對應著一個函數(shù)體,這些函數(shù)的名字相同,但是函數(shù)參數(shù)的類型不同,還允許參數(shù)的個數(shù)不同,但不能只有函數(shù)的返回值類型不同而參數(shù)的個數(shù)和類型相同的重載。所以本題答案為C。16、下列有關(guān)運算符重載的敘述中,正確的是()。A、運算符重載是多態(tài)性的一種表現(xiàn)B、C++中可以通過運算符重載創(chuàng)造新的運算符C、c++中所有運算符都可以作為非成員函數(shù)重載D、重載運算符時可以改變其結(jié)合性標準答案:A知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自,定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是C++的標準類型。故本題答案為A。17、將前綴運算符“--”重載為非成員函數(shù),下列原型中能正確用于類中說明的是()。A、Deer&operator--(int);B、Deeroperator--(Deer&,int);C、friendDeer&operator--(Deer&);D、friendDeeroperatoi--(Deer&,int);標準答案:D知識點解析:非成員函數(shù)重載用友元函數(shù)的形式實現(xiàn),“--”運算符重載分為前置和后置兩種重載方式。用友元函數(shù)來實現(xiàn)“--”運算符的重載時,前置“--”運算符的重載的一般格式為:friendoperator。--(ciassName&);后置++運算符的重載的一般格式為:friendoperator--(ClassName&,int)。所以答案為D。18、有如下函數(shù)定義:voidfunc(inta,int&b){a++;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。19、下列運算符中,不能被重載的是()。A、&&B、!=C、.D、++標準答案:C知識點解析:C++不能重載的運算符只有5個,即“.”、“.*”、“::”、“?:”、“sizeot”,故本題答案為C。20、關(guān)于運算符重載,下列表述中正確的是()。A、C++已有的任何運算符都可以重載B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符標準答案:C知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是C++的標準類型。故本題答案為C。21、下列關(guān)于類定義的說法中,正確的是()。A、類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明B、類成員的缺省訪問權(quán)限是保護的C、數(shù)據(jù)成員必須被聲明為私有的D、成員函數(shù)只能在類體外進行定義標準答案:A知識點解析:類的成員的缺省訪問權(quán)限是私有的,數(shù)據(jù)成員可以是私有,可以是公用的,也可以是受保護的。類的成員函數(shù)可以在類內(nèi)定義。22、有如下程序:#includeusingnamespacestd;classA{public:staticinta;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。23、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。A、publicB、staticC、protectedD、private標準答案:B知識點解析:類的成員訪問權(quán)限有3種:public(公用)、proteeted(保護)、private(私有)。24、下列關(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ù)標準答案:D知識點解析:在銷毀派生類對象時,先調(diào)用派生類的析構(gòu)函數(shù),再凋用基類的析構(gòu)函數(shù)。25、派生類的成員函數(shù)不能訪問基類的()。A、公有成員和保護成員B、公有成員C、私有成員D、保護成員標準答案:C知識點解析:本題考查3種繼承方式,其中,基類的私有成員始終為基類私有。所以派生類無法訪問基類的私有成員。本題答案為C。26、有如下類定義:classAA{inta;Public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)__________};其中橫線處的缺失部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}標準答案:B知識點解析:本題考查公用繼承對基類成員的訪問屬性。公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有,本題中若要給派生類繼承下來基類的私有成員賦值,那么只能調(diào)用基類的成員函數(shù)來對它賦值,成員變量默認的訪問權(quán)限為私有,即a為私有變量。所以本題答案為B。27、有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test(){cout<<”constructor”<A、3B、constructorC、copyconstructorD、3destructordestructordestructor標準答案:D知識點解析:本題考查默認構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù)以及析構(gòu)函數(shù),本題中定義了一個對象A(3),對象帶著參數(shù),所以執(zhí)行帶參數(shù)的構(gòu)造函數(shù),輸出3,然后執(zhí)行析構(gòu)函數(shù),輸出destructor。所以本題答案為D。28、若有如下類聲明:classMyClass{public:MyClass(){tout<<1;}};執(zhí)行下列語句MyClassa,b[2],*p[2];程序的輸出結(jié)果是()。A、11B、111C、1111D、11111標準答案:B知識點解析:本題考查默認構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一個對象a以及對象數(shù)組b[2],共執(zhí)行3次構(gòu)造函數(shù),對象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為B。29、有如下程序:#includeusingnamespacestd;classPoint{public:staticintnumber;public:Point();number++;}~Point(){number--;}};intPoint::number=0;intmain(){Point*ptr;PointA,B;;Point*ptr_point=newPoint[3];ptr=ptr_point;}PointC:cout<A、3B、4C、6D、7標準答案:C知識點解析:本題考查默認構(gòu)造函數(shù),題目中定義一個對象A、B以及對象數(shù)組Point[3],又定義了對象C,共執(zhí)行6次構(gòu)造函數(shù),number變?yōu)榱?,所以本題答案為C。30、有如下程序:#ineludeusingnamespacestd;classSample{friendlongfun(SampleS);public:Sample(longa){x=a;}private:longx;};longfun(Samples){if(s.x<2)return1;returns.x*fun(Sample(s.x-1));}intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));}cout<A、120B、16C、154D、34標準答案:C知識點解析:本題考查默認構(gòu)造函數(shù),當i=0、1時,fun(sample(i))為1;當i=2時,fun(sample(i))為2;當i=3時,fun(Sample(i))為6;當i=4時,fun(Sample(i))為24;當i=5時,fun(Sample(i))為120。所以總和為154。31、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;d1.data=0;//①d2.data=0;//②return0;}下列關(guān)于程序編譯結(jié)果的描述中,正確的是()。A、①②皆無編譯錯誤B、①有編譯錯誤,②無編譯錯誤C、①無編譯錯誤,②有編譯錯誤D、①②皆有編譯錯誤標準答案:C知識點解析:本題考查公用繼承和保護繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有。本題中Derivedl公用繼承Base,所以①編譯正確,Derived2保護繼承Base,所以②編譯不正確。32、有如下程序:#includeusingnamespaeestd;classA{public:A(inti){x=i;}voiddispa(){cout<A、10,2B、12,10C、12,2D、2,2標準答案:C知識點解析:本題考查派生類的構(gòu)造函數(shù)和基類的構(gòu)造函數(shù)。本題中類B繼承類A,定義了一個類B的對象并初始化b(2),此時會執(zhí)行類B的構(gòu)造函數(shù),執(zhí)行的結(jié)果是繼承類A中的私有成員賦值了12,給類B自身的數(shù)據(jù)成員x賦值了2,執(zhí)行b.dispb()后,輸出類A的私有成員x,輸出類B自身的數(shù)據(jù)成員,所以答案為C。33、有如下程序:#includeusingnamespacestd;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知識點解析:本題考查公用繼承和保護繼承對基類成員的訪問屬性。公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。保護成員不能被類外訪問,但是可以被派生類的成員函數(shù)訪問。Type成為派生類的保護成員,可以被派生類訪問,title仍為基類私有,派生類不能直接訪問。所以答案為C。34、有如下程序:#includeusingnamespacestd;classBook{public:Book(char*t=""){strcpy(title,t);}private:chartitle[40];};classNovel:publicBook}public:Novel(char*t=""):Book(t){}char水Category()const{return"文學";}};intmain(){Book*pb;pb=newNovel();cout<Category();deletepb;return0;}若程序運行時輸出結(jié)果是“文學”,則橫線處缺失的語句是()。A、char*Category();B、char*Category()const;C、virtualchar*Category()const;D、virtualchar*Category()const=0;標準答案:D知識點解析:本題考查純虛函數(shù)和抽象類,純虛函數(shù)是在聲明虛函數(shù)時被“初始化”為0的函數(shù),包含純虛函數(shù)的類為抽象類,抽象類是不能被實例化的,但是可以定義指向抽象類數(shù)據(jù)的指針變量,當派生類成為具體類后,就可以用這種指針指向派生類的對象,然后通過該指針調(diào)用虛函數(shù),實現(xiàn)多態(tài)性的操作。所以本題答案為D。35、如下函數(shù)模板:templateTsquare(Tx){returnx*x;}其中T是()。A、函數(shù)形參B、函數(shù)實參C、模板形參D、模板實參標準答案:C知識點解析:本題考查模板函數(shù)的基本概念,根據(jù)模板函數(shù)的定義,T是模板形參,所以答案為C。36、下列函數(shù)模板的定義中,合法的是()。A、templateTabs(Tx){returnx<0?-x:x;}B、templateclassTabs(Tx){returnx<0.9-x:x;}C、templateTabs(Tx){returnx<0.9-x:x;}D、templateTabs(Tx){returnx<0.9-x:x;}標準答案:A知識點解析:本題考查模板函數(shù)的基本概念,根據(jù)模板函數(shù)的定義,所以答案為A。37、在C++中,cin是一個()。A、類B、對象C、模板D、函數(shù)標準答案:B知識點解析:本題考查流對象cin,屬于基礎(chǔ)知識,cin是輸人流對象,負責從鍵盤獲取數(shù)據(jù),然后送到內(nèi)存。本題答案為B。38、下列控制格式輸入/輸出的操作符中,能夠設(shè)置浮點數(shù)精度的是()。A、setprecisiDnB、setwC、setfillD、showpoint標準答案:A知識點解析:iomanip中定義的操縱符包括:setfill(ch)用ch填充空白、setprecision(n)將浮點精度置為n、setw(w)、讀寫w個字符的值showpoint設(shè)置小數(shù)點。國家二級(C++)機試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、程序流程圖中帶有箭頭的線段表示的是()。A、圖元關(guān)系B、數(shù)據(jù)流C、控制流D、調(diào)用關(guān)系標準答案:C知識點解析:在數(shù)據(jù)流圖中,用標有名字的箭頭表示數(shù)據(jù)流在程序流程圖中,用標有名字的箭頭表示控制流。所以選擇C。2、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使川用goto語句,所以選擇A。3、軟件設(shè)計中模塊劃分應遵循的準則是()。A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標準答案:B知識點解析:軟件設(shè)計巾模塊劃分應遵循的準則是高內(nèi)聚低偶合、模塊大小規(guī)模適當、模塊的依賴天系適當?shù)?。模塊的劃分應遵循一定的要求,以保證模塊劃分合理,并進一步保證以此為依據(jù)開發(fā)出的軟件系統(tǒng)可靠性強,易于理解維護,模塊之間的耦合應盡可能的低,模塊的內(nèi)聚度應盡可能的高。4、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、可行性分析報告B、軟件需求規(guī)格說明書C、概要設(shè)計說明書D、集成測試計劃標準答案:B知識點解析:A錯誤,可行性分析階段產(chǎn)生可行性分析報告。C錯誤,概要設(shè)汁說明書是總體設(shè)計階段產(chǎn)生的文檔,D錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B正確,軟件需求規(guī)格說明書是后續(xù)工作作如沒汁、編碼等需要的重要參考文檔。5、算法的有窮性是指()。A、算法程序的運行時間是有限的B、算法程序所處理的數(shù)據(jù)量是有限的C、算法程序的長度是有限的D、算法只能被有限的用戶使用標準答案:A知識點解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。6、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:除了堆排序算法的比較次數(shù)是O(nlog2n),其他的都是n(n-1)/2。7、下列關(guān)于棧的敘述正確的是()。A、棧按“先進先出”組織數(shù)據(jù)B、棧按“先進后出”組織數(shù)據(jù)C、只能在棧底插入數(shù)據(jù)D、不能刪除數(shù)據(jù)標準答案:B知識點解析:棧是按“先進后出”的原則組織數(shù)據(jù)的,數(shù)據(jù)的插入和刪除都在棧頂進行操作。8、在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設(shè)計階段C、邏輯設(shè)計階段D、物理設(shè)計階段標準答案:C知識點解析:E-R圖轉(zhuǎn)換成關(guān)系模型數(shù)據(jù)則是把陶形分析出來的聯(lián)系反映到數(shù)據(jù)庫中,即設(shè)計出表,所以屬于邏輯設(shè)計階段。9、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬埔性組,并且存結(jié)果中把重復的屬性列去掉,所以B錯誤。笛卡爾積是用R集合中元素為第一元素,S集合中元素為第二元素構(gòu)成的有序?qū)Γ訡錯誤。根據(jù)關(guān)系T可以很明顯地看出是從關(guān)系R與關(guān)系S中取得相同的莢系組所以取得是交運算,選擇D。10、設(shè)有表示學生選課的三張表,學生s(學號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學號,課號,成績),則表SC的關(guān)鍵字(鍵或碼)為()。A、課號,成績B、學號,成績C、學號,課號D、學號,姓名,成績標準答案:C知識點解析:學號是學生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應該是前兩個表能夠直接聯(lián)系且能唯一定義的學號和課號,所以選擇C。11、下列語句中,錯誤的是()。A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);標準答案:B知識點解析:const是一個C++語言的關(guān)鍵字,它限定一個變量不允許被改變。使川const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化。B選項中沒有初始化,C選項為指向常鞋的指針,定義時初始化與否均可,如果是const*doublepoint形式,則為常指針,必須在定義時進行初始化,A、C、D都正確12、有如下程序:intx=3:do{x-=2:cout<A、1B、30C、1-2D、死循環(huán)標準答案:C知識點解析:本題考查do…while語句,執(zhí)行do…while語句時,先執(zhí)行循環(huán)體內(nèi)的語句,然后判斷while中表達式的值,表達式為非零時,返回最新執(zhí)行循環(huán)體語句。在本題中,先執(zhí)行循環(huán)體內(nèi)的語句,輸出,然后判斷表達式,為非零,且此時x為0;再次執(zhí)行循環(huán)體時,輸出-2,然后判斷表達式為0,不執(zhí)行,退出,昕以答案為C。13、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9;cout<<*Thevalueatp:"<<*p;return0;編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:先定義指針變量,然后給指針變量賦初值有三種情況:①用取地址運算符“&”將變量地址賦給指針變量,如p=&a;②將.一個指針變量中的地址賦給另一個指針變量,如p=p1;③給指針變量賦空值0,如q=0,表示陔指針變量不指向任何變量。而不能用一個常量給指針變量賦初值,所以本題選D。14、if語句的語法格式可描述為:格式1:if(<條件>)<語句>或格式2:if(<條件>)<語句1>else<語句2>關(guān)于上面的語法格式,下列表述中錯誤的是()。A、<條件>部分可以是一個if語句,例如ir(if(a==0)…)…B、<語句>部分可以是一個if語句,例如if(…)if(…)…C、如果在<條件>前加上邏輯非運算符!并交換<語句1>和<語句2>的位置,語句功能不變D、<語句>部分可以是一個循環(huán)語句,例如if(…)while(…)…標準答案:A知識點解析:本題考查if語句,if語句的條件部分不能嵌套if語句,所以A選項錯誤;B選項就是if語句嵌套;C選項其實就是將判斷條件顛倒,然后執(zhí)行語句也顛倒,所以效果一樣;D選項也正確15、下列符號中,正確的C++標識符是()。A、enumB、2bC、foo-9D、32標準答案:D知識點解析:本題考查C++標識符的命名規(guī)則,規(guī)定如下:①所有標識符可以由字母、數(shù)字和下畫線組成,且必須以字母或下畫線開頭;②C++的關(guān)鍵字不能作為標識符;③大、小寫字母表示不同意義,即代表不同的標識符,如mun和Mun。A選項是C++的關(guān)鍵字,B選項不能以數(shù)字開頭,C選項“-”不能用于組成標識符。16、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語句必須是relurn語句C、標準C++要求在調(diào)用一個函數(shù)之前,必須先聲明其原型D、編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式標準答案:C知識點解析:一般函數(shù)進行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后冉返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換,而不是在定義在另一個函數(shù)體內(nèi),所以A選項錯誤、函數(shù)可以沒有返回值,所以就不需要retum了,如果被調(diào)函數(shù)在調(diào)用函數(shù)之前已經(jīng)定義,那么就不需要聲明,所以C選項錯誤,正確選項為D。17、運算符重載是對已有的運算符賦予多重含義,因此()。A、可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運算符的含義B、可以改變一個已有運算符的優(yōu)先級和操作數(shù)個數(shù)C、只能重載C++中已經(jīng)有的運算符,不能定義新運算符D、C++中已經(jīng)有的所有運算符都可以重載標準答案:C知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是C++的標準類型。故本題答案為C。18、下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是()。A、內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移B、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編澤器來實現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是relurn語句標準答案:C知識點解析:一般函數(shù)進行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到凋用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)存調(diào)用時,是將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換,所以在調(diào)用時不發(fā)生控制轉(zhuǎn)移。存類內(nèi)部實現(xiàn)的函數(shù)都是內(nèi)聯(lián)函數(shù),可以不用inline定義;只有函數(shù)外部定義的內(nèi)聯(lián)函數(shù)才必須加關(guān)鍵字inline。編譯系統(tǒng)并非對內(nèi)聯(lián)函數(shù)必須使川內(nèi)聯(lián),而且根據(jù)具體情況決定。內(nèi)聯(lián)函數(shù)不是必須要有返回值的。19、有如下程序:#includeusingnamespacestd;intmajn(){voidfunction(doul)leva1);dotlbleval:fLtaction(val);COLlt<A、編澤出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數(shù)標準答案:D知識點解析:本題考查函數(shù)調(diào)用及傳值方式傳遞參數(shù),執(zhí)行函數(shù)function時,并沒有將3的值傳回來,而val又沒有初始化,所以會輸出一個不確定的值,D選項jE確。20、下面是重載為非成員函數(shù)的運算符的函數(shù)原型,其中錯誤的是()。A、Fractionoperator+(Fraction,F(xiàn)raction);B、Fractionoperator-(Fraction);C、Fraction&operator=(Fraction&,F(xiàn)raction);D、Fraction&operator+=(Fraction&,F(xiàn)raction);標準答案:C知識點解析:本題考查四種運算符作為非成員函數(shù)的重載的使用方法,根據(jù)重載規(guī)則,本題答案為c,c項正確原型為:Fractionoperator=(Fraction&)。21、有如下類定義:classMyClass{public:private:intdata;};若要為MyClass類重載流輸人運算符“>>”,使得程序中可以“cin>>obj;”的形式改變MyClass類的對象obj中數(shù)據(jù)成員data的值,則橫線處的聲明語句應為()。A、friendistream&operator>>(istream&is,MyClass&a);B、friendistream&operator>>(istream&is,MyClassa);C、istream&operator>>(istream&is,MyClass&a);D、istream&operator>>(istream&is,MyClassa);標準答案:A知識點解析:本題考查重載流運算符“>>”,根據(jù)重載規(guī)則,本題答案為A。22、由于常對象不能被更新,因此()。A、通過常對象只能調(diào)用它的常成員函數(shù)B、通過常對象只能調(diào)用靜態(tài)成員函數(shù)C、常對象的成員都是常成員D、通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)標準答案:A知識點解析:本題考查常對象的基本知識,常對象只能調(diào)用它的常成員函數(shù),而不能調(diào)用非const函數(shù),常對象的成員函數(shù)不一定都是常成員函數(shù),只需保證其數(shù)據(jù)成員是常數(shù)據(jù)成員即可。所以本題選A。23、有如下類定義:classAA{inta;public:intgetRef()const{return&a;}//①intgetValue()const{returna;}//②voidset(intn)const{a=n;}//③friendvoidshow(AAaa)const{cout<A、①B、②C、③D、④標準答案:B知識點解析:本題考查常成員函數(shù),常成員函數(shù)只能引用本類中的數(shù)據(jù)成員,而不能修改它。所以本題答案為B。24、下列關(guān)于this指針的描述中,正確的是()。A、類的成員函數(shù)都有this指針B、類的友元函數(shù)都有this指針C、任何與類相關(guān)的函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)都有this指針標準答案:D知識點解析:this作用域是在類內(nèi)部,當在類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù)。另外,全局函數(shù)和靜態(tài)函數(shù)都不能使用this指針。所以答案為D。25、下列關(guān)于虛函數(shù)的說明中,正確的是()。A、從虛基類繼承的函數(shù)都是虛函數(shù)B、虛函數(shù)不得是靜態(tài)成員函數(shù)C、只能通過指針或引用調(diào)用虛函數(shù)D、抽象類中的成員函數(shù)都是虛函數(shù)標準答案:B知識點解析:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù)。虛函數(shù)必須是基類的非靜態(tài)成員函數(shù),其訪問權(quán)限可以是protected或public。如果一個類包含了純虛函數(shù),稱此類為抽象類。所以本題答案為B。26、下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是()。A、每個類最多只能有一個直接基類B、派生類中的成員可以訪問基類中的任何成員C、基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用D、派生類除了繼承基類的成員,還可以定義新的成員標準答案:D知識點解析:本題考查派生類與基類的關(guān)系,派生類可以有多個直接基類,而派生類有三種繼承方式,在私有繼承中,派生類的成員并不能訪問基類的成員。如果基類中定義了缺省構(gòu)造函數(shù)或根本沒有定義任何一個構(gòu)造函數(shù)時,在派生類構(gòu)造函數(shù)的定義中可以省略對基類構(gòu)造函數(shù)的調(diào)用。所以本題答案為D。27、有如下類定義:classB{public:voidfunl(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是類D的對象,則下列語句中不違反訪問控制權(quán)限的是()。A、obj.funl();B、obj.fun2.();C、obj.fun3();D、obj.fun4();標準答案:A知識點解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有的訪問屬性,其私有成員仍為基類私有。所以在本題中,在類外引用成員函數(shù)時,派生對象只能引用基類的公用成員函數(shù)funl,故本題答案為A。28、有如下類定義:classFoo{public:Foo(intv):value(v){}//①-Foo(){}//②pnvate:Foo(){}//③intvalue=0;//④};其中存在語法錯誤的行是()。A、①B、②C、③D、④標準答案:D知識點解析:本題考查對象的初始化,類的數(shù)據(jù)成員是不能在聲明類時初始化的,所以本題答案為D。29、有如下類定義:classPoint{intXX,YY;public:Point():xx(0),yy(0){}Point(intX,inty=0):xx(x),yy(y){}};若執(zhí)行語句Poin

溫馨提示

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

評論

0/150

提交評論