版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級C++機(jī)試(選擇題)模擬試卷2(共9套)(共329題)國家二級C++機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、算法的時(shí)間復(fù)雜度是指()。A、算法的長度B、執(zhí)行算法所需要的時(shí)間C、算法中的指令條數(shù)D、算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:算法的時(shí)間復(fù)雜度,是指執(zhí)行算法所需要的工作量,可以用算法在執(zhí)行過程中所需基本運(yùn)算的執(zhí)行次數(shù)來度量算法的工作量。2、以下數(shù)據(jù)結(jié)構(gòu)中,屬于非線性數(shù)據(jù)結(jié)構(gòu)的是()。A、棧B、線性表C、隊(duì)列D、二叉樹標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:二叉樹屬于非線性結(jié)構(gòu)。棧是一種特殊的線性表,這種線性表只能在固定的一端進(jìn)行插入和刪除操作;隊(duì)列可看作是插入在一端進(jìn)行,刪除在另一端進(jìn)行的線性表。3、數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的()。A、存儲(chǔ)結(jié)構(gòu)B、物理結(jié)構(gòu)C、邏輯結(jié)構(gòu)D、線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)元素之間的邏輯關(guān)系,與使用的計(jì)算機(jī)無關(guān)。4、內(nèi)聚性是對模塊功能強(qiáng)度的衡量,下列選項(xiàng)中,內(nèi)聚性較弱的是()。A、順序內(nèi)聚B、偶然內(nèi)聚C、時(shí)間內(nèi)聚D、邏輯內(nèi)聚標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:內(nèi)聚是從功能角度來衡量模塊的聯(lián)系,它描述的是模塊內(nèi)的功能聯(lián)系。內(nèi)聚有如下種類,它們之間的內(nèi)聚度由弱到強(qiáng)排列:偶然內(nèi)聚一一模塊中的代碼無法定義其不同功能的調(diào)用。但它使該模塊能執(zhí)行不同的功能,這種模塊為巧合強(qiáng)度模塊。邏輯內(nèi)聚——這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的參數(shù)來確定該模塊應(yīng)完成哪一種功能。時(shí)間內(nèi)聚——這種模塊順序完成一類相關(guān)功能,比如初始化模塊,它順序地為變量置初值。過程內(nèi)聚——如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱為過程內(nèi)聚。通信內(nèi)聚——這種模塊除了具有過程內(nèi)聚的特點(diǎn)外,還有另外一種關(guān)系,即它的所有功能都通過使用公用數(shù)據(jù)而發(fā)生關(guān)系。順序內(nèi)聚一一如果一個(gè)模塊內(nèi)各個(gè)處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行,處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù),則稱為順序內(nèi)聚。功能內(nèi)聚一一如果一個(gè)模塊包括為完成某一具體任務(wù)所必需的所有成分,或者說模塊中所有成分結(jié)合起來是為了完成一個(gè)具體的任務(wù),此模塊則為功能內(nèi)聚模塊。5、在關(guān)系中凡能惟一標(biāo)識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個(gè)鍵,它們稱為該表的()。A、連接碼B、關(guān)系碼C、外碼D、候選碼標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:在關(guān)系中凡能惟一標(biāo)識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個(gè)鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個(gè)作為用戶使用的鍵稱為主鍵或主碼。6、檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。A、確認(rèn)測試B、需求測試C、驗(yàn)證測試D、路徑測試標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:確認(rèn)測試的任務(wù)是驗(yàn)證軟件的功能和性能,以及其他特性是否滿足需求規(guī)格說明中確定的各種需求。7、數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。A、控制流B、加工C、存儲(chǔ)文件D、源和潭標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,它由一些特定的圖符構(gòu)成,包括4個(gè)方面,即加工、數(shù)據(jù)流、存儲(chǔ)文件、源和潭。8、待排序的關(guān)鍵碼序列為(15,20,9,30,67,65,45,90),要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個(gè)位置。A、2B、3C、4D、5標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:選擇排序的基本思想是掃描整個(gè)線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一個(gè)位置,元素15則放在第二個(gè)位置。9、對關(guān)系S和關(guān)系R進(jìn)行集合運(yùn)算,結(jié)果中既包含關(guān)系S中的所有元組也包含關(guān)系R中的所有元組,這樣的集合運(yùn)算稱為()。A、并運(yùn)算B、交運(yùn)算C、差運(yùn)算D、除運(yùn)算標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:關(guān)系的并運(yùn)算是指,由結(jié)構(gòu)相同的兩個(gè)關(guān)系合并,形成一個(gè)新的關(guān)系,其中包含兩個(gè)關(guān)系中的所有元組。10、下列選項(xiàng)中,不屬于數(shù)據(jù)管理員(DBA)職責(zé)的是()。A、數(shù)據(jù)庫維護(hù)B、數(shù)據(jù)庫設(shè)計(jì)C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類型轉(zhuǎn)換標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設(shè)計(jì)、維護(hù)、監(jiān)視等的人員,其主要工作如下:?數(shù)據(jù)庫設(shè)計(jì)。DBA的主要任務(wù)之一是數(shù)據(jù)庫設(shè)計(jì),具體地說是進(jìn)行數(shù)據(jù)模式的設(shè)計(jì)。?數(shù)據(jù)庫維護(hù)。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲(chǔ)等進(jìn)行實(shí)施與維護(hù)。?改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時(shí)監(jiān)視數(shù)據(jù)庫的運(yùn)行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。11、假定MyClass為一個(gè)類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為()。A、MyClass(MyClassx);B、MyClass(MyClass&x);C、MyClass(&x);D、MyClass(x);標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),所以函數(shù)名字為MyClass,但它只有一個(gè)參數(shù),這個(gè)參數(shù)是本類的對象,即x;而且采用對象的引用的形式,也就是&x。所以本題答案是B)。12、下列函數(shù)的功能是判斷字符串str是否對稱,對稱則返回true,否則返回false,則橫線處應(yīng)填上()。Boolfun(char*str){inti=0j=0;while(str[j])j++;for(j--;iA、>==B、llC、&&D、<==標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:while循環(huán)取串長度,賦值給i,然后在for循環(huán)中由串兩邊開始向中間進(jìn)行字符比較,當(dāng)最后i和i標(biāo)識字符位置的變量相等,那么奇數(shù)個(gè)字符,或者i大于i時(shí)那么偶數(shù)個(gè)字符,則表示是對稱的。13、有以下程序,輸出結(jié)果()。#includeusingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):re(r),im(i){)doublereal()const{returnre;}doubleimagoconst{returnim;)Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;};intmain(){Complexa=Complex(1,1)+Complex(5);cout<A、6+iB、2i+5C、6+1iD、1i+5標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:由主函數(shù)入手,調(diào)用“Complexa=Complex(1,1)+Complex(5):”,實(shí)際是“Complexa=Complex(1,1)+Complex(5,0);”,調(diào)用“returnComplex(re+c.re,im+c.im),;”結(jié)果為:6+li。14、有以下程序段:#include#defineMAX(x,y)(x)>(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=MAX(i,j),10;cout<A、15B、100C、150D、lO標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:題目程序中的MAX函數(shù)是利用條件運(yùn)算符為?:求最大值。即(x>y)?(x):(y)是當(dāng)x大于y時(shí)取x,否則取y。當(dāng)i=10,j=15時(shí),“MAX(i,j)”的值為15,所以“k=MAx(i,j)*10;”答案為:150。15、定義如下枚舉類型:enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};表達(dá)式Wednesday==Friday的值是()。A、falseB、trueC、2D、異常標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:enum<枚舉類型名>{<枚舉元素表>};其中:關(guān)鍵詞“enum”表示定義的是枚舉類型,枚舉類型名由標(biāo)識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達(dá)式值為真,即true。16、以下程序運(yùn)行后的輸出結(jié)果是()。#includevoidmain(){chara[]=”abbcabbcabbc”;inti=0,d=0,k=0;while(a[i]){if(a[i]==’a’)j++;if(a[i]==’b’)k++:i++:}cout<A、2,6B、3,5C、4,7D、3,6標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:程序中首先定義字符數(shù)組a,然后在while循環(huán)中統(tǒng)計(jì)字符a和b的個(gè)數(shù)。其中n己錄a的個(gè)數(shù),k記錄b的個(gè)數(shù)。第一個(gè)if語句是當(dāng)?shù)趇個(gè)字符為a時(shí),j加1;第二個(gè)if語句是當(dāng)?shù)趇個(gè)字符為b時(shí),k加1。17、下列關(guān)于指針的運(yùn)算中,()是非法的。A、兩個(gè)指針在一定條件下,可以進(jìn)行相等或不等的比較運(yùn)算B、可以將一個(gè)空指針賦值給某個(gè)指針C、一個(gè)指針可以加上兩個(gè)整數(shù)之差D、兩個(gè)指針在一定條件下可以相加標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:指針變量如果指向同一個(gè)數(shù)組的元素,則可以進(jìn)行比較,所以A)是正確的。指針變量的賦值就是將一個(gè)變量地址賦給一個(gè)指針變量。并且指針變量可以是空值,即該指針不指向任何變量。B)同樣也是正確的。指針變量加/減一個(gè)整數(shù)是將該指針變量的原值(是一個(gè)地址)和它指向的變量所占用的內(nèi)存單元字節(jié)數(shù)相加或相減。即C)也是正確的。如果兩個(gè)指針指向同一個(gè)數(shù)組元素,兩個(gè)指針是可以相減的,標(biāo)識兩個(gè)指針之間的元素個(gè)數(shù)。但是它們是不可相加的。18、下面程序的輸出結(jié)果為()。#includevoidmain(){intx;int&y=x;//變量引用y=99;cout<<"x="<A、x=99B、x=9C、x=0D、異常標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:程序中的“int&y=x;”語句中的“&”引用運(yùn)算符。&y=x語句可以理解為y具有x的地址,所以v的值99,x的值也是99,所以答案是x=99。19、下面程序輸出的結(jié)果為()。#includevoidfun(inta,intb){inttemp;temp=a:a=b:b=temp;)voidmain(){intm,n;m=1;n=2:fun(m,n);cout<A、12B、21C、22D、程序有錯(cuò)誤標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:函數(shù)fun中定義的參數(shù)a和b為形式參數(shù),它們并不是實(shí)際存在的數(shù)據(jù),只有在發(fā)生函數(shù)調(diào)用時(shí)才被分配內(nèi)存空間,結(jié)束后,形參所占有的內(nèi)存單元也被釋放。并且函數(shù)fun沒有返回值,它做的交換操作,并不能影響實(shí)際參數(shù)m和n。所以輸出值保持不變,仍然是l和2,即輸出:12。20、存在定義inta[10],x,*pa;,若pa=&a[0],下列的哪個(gè)選項(xiàng)和其他3個(gè)選項(xiàng)不是等價(jià)的?()A、x=*pa;B、x=*(a+1);C、x=*(pa+1);D、x=a[1];標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:選項(xiàng)B)、C)、D)都是獲取a(l)元素,而選項(xiàng)A)是獲取a(0)的元素。21、對數(shù)組名作函數(shù)的參數(shù),下面描述正確的是()。A、數(shù)組名作函數(shù)的參數(shù),調(diào)用時(shí)將實(shí)參數(shù)組復(fù)制給形參數(shù)組B、數(shù)組名作函數(shù)的參數(shù),主調(diào)函數(shù)和被調(diào)函數(shù)共用一段存儲(chǔ)單元C、數(shù)組名作參數(shù)時(shí),形參定義的數(shù)組長度不能省略D、數(shù)組名作參數(shù),不能改變主調(diào)函數(shù)中的數(shù)據(jù)標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:數(shù)組作為參數(shù)實(shí)參傳遞的是數(shù)組的首地址。所以主調(diào)函數(shù)和被調(diào)函數(shù)共用一段存儲(chǔ)單元。22、關(guān)于靜態(tài)成員的描述中,錯(cuò)誤的是()。A、靜態(tài)成員可分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)B、靜態(tài)數(shù)據(jù)成員定義后必須在類體內(nèi)進(jìn)行初始化C、靜態(tài)數(shù)據(jù)成員初始化不使用其構(gòu)造函數(shù)D、靜態(tài)數(shù)據(jù)成員函數(shù)中不能直接引用非靜態(tài)成員標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進(jìn)行初始化。23、下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是()。A、構(gòu)造函數(shù)可以設(shè)置默認(rèn)的參數(shù)B、構(gòu)造函數(shù)在定義類對象時(shí)自動(dòng)執(zhí)行C、構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)D、構(gòu)造函數(shù)不可以重載標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:在一個(gè)類中可以定義多個(gè)構(gòu)造函數(shù),以便對類對象提供不同的初始化的方法,供用戶選用。這些構(gòu)造函數(shù)具有相同的名字,而參數(shù)的個(gè)數(shù)或參數(shù)的類型不相同。24、有以下程序,輸出結(jié)果()。#includevoidmain(){staticintb[][3]={{l,2,3),{4),{5,6}};b[01121=12,b[1][2]=18;cout<<*%<<"\t"<<**(b+1)<<"\t"<<**(b+1)<<"\t"<<*(*(b+1)+2)<<"\n";cout<A、1441830B、114418C、441811D、444301標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題b是一個(gè)3×3的二維數(shù)組:利用指針表示數(shù)組:*(*(數(shù)組名+i)+i)。**b表示b[0][0]元素,值是1,*(b+1)表示是b[0][1]的元素,值是4。*(b+1)+2)表示b[1][2]的元素,值是18,b[0][2]+b[1][2]+b[2][2]之和是30。25、下列程序的輸出結(jié)果是()。#includeusingnamespacestd;voidfun(int&n{r*=2:)intmain(){intn=50;fun(n);cout<A、0B、20C、50D、100標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:題中主程序中首先定義整型變量n=50,然后調(diào)用函數(shù)fun,實(shí)際參數(shù)為n。函數(shù)fun中參數(shù)為引用,為地址。即函數(shù)中形參的改變會(huì)影響實(shí)參的值,函數(shù)的功能是參數(shù)乘以2。26、下列說法中錯(cuò)誤的是()。A、公有繼承時(shí)基類中的public成員在派生類中仍是public的B、公有繼承時(shí)基類中的private成員在派生類中仍是private的C、私有繼承時(shí)基類中的public成員在派生類中是private的D、保護(hù)繼承時(shí)基類中的public成員在派生類中是protected的標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:此題考查的是繼承時(shí)基類成員屬性改變。選項(xiàng)B)中,公有繼承時(shí)基類中的private成員在派生類中不是private的,而是不可訪問的。所以選項(xiàng)B)錯(cuò)誤;其他選項(xiàng)敘述均正確。27、多繼承的構(gòu)造順序可分為如下四步:①所有非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造②所有虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造③所有子對象的構(gòu)造函數(shù)按照它們聲明的順序構(gòu)造④派生類自己的構(gòu)造函數(shù)體這四個(gè)步驟的正確順序是()。A、④③①②B、②④③①C、②①③④D、③④①②標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:多繼承派生類的構(gòu)造順序是:首先調(diào)用虛基類的構(gòu)造函數(shù),然后調(diào)用非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造,其次調(diào)用子對象的構(gòu)造函數(shù),最后是派生類構(gòu)造函數(shù)中的內(nèi)容。28、下面關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)的描述中,錯(cuò)誤的是()。A、析構(gòu)函數(shù)可以聲明為虛函數(shù)B、對虛析構(gòu)函數(shù)的調(diào)用可以采用動(dòng)態(tài)聯(lián)編C、一個(gè)類的虛函數(shù)僅對派生類中重定義的函數(shù)起作用,對其他函數(shù)沒有影響D、構(gòu)造函數(shù)可以聲明為虛函數(shù)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:析構(gòu)函數(shù)可以聲明為虛函數(shù),但是構(gòu)造函數(shù)不能聲明為虛函數(shù);類的虛函數(shù)僅對派生類中重定義的函數(shù)起作用,對其他函數(shù)沒有影響。29、設(shè)有以下定義和程序:#includeclassA1{public:voidshow1(){cout<<”classA1”<A、objl.show1();B、obj2。show1();C、obj3.show1();D、obj2.show2();標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:由于classA3:protectedA2,所以類A3的對象obj3不能直接訪問基類A1的成員函數(shù)showl(),所以選項(xiàng)C)是錯(cuò)誤的;其他選項(xiàng)均有訪問的權(quán)限,正確。30、下列關(guān)于運(yùn)算符重載的描述中,正確的是()。A、運(yùn)算符重載可以改變運(yùn)算符的操作數(shù)的個(gè)數(shù)B、運(yùn)算符重載可以改變優(yōu)先級C、運(yùn)算符重載可以改變結(jié)合性D、運(yùn)算符重載不可以改變語法結(jié)構(gòu)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:重載的運(yùn)算符仍要保持其原來的操作數(shù)、優(yōu)先級和結(jié)合性不變。31、下面程序的輸出結(jié)果是()。#include#includeusingnamespacestd;classpoint{private:doublex;doubley;public:point(doublea,doubleb){X=a;y=b;}frienddoubledistances(pointa,pointb);};doubledistances(pointa,pointb){returnsqrt((a.x-b.x)*(a.x—b.x)+(a.y-b.y)*(a.y-b.y));}intmain(){pointp1(1,2);pointp2(5,2);cout<A、2B、4C、8D、16標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:分析題目,此題最終要實(shí)現(xiàn)的結(jié)果是sqrt((a.x—b.x)*(a.x—b.x)+(a.y—b.y)*(a.y—b.y)),其中的a.x和a.y分別指pl(1,2)中的1和2。這樣容易得到結(jié)果是(1-5)-(1-5)+(2-2)*(2-2)=16,再開方得到結(jié)果為4。32、有以下程序:#includeusingnamespacestd;classR{public:R(intr1,intr2){Rl=r1;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidR::print(){cout<A、5,4B、4,5C、20,52D、52,20標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:此題中,語句Ra(5,4)調(diào)用構(gòu)造函數(shù)R(intr1,intr2)但未有輸出結(jié)果:b.print();調(diào)用常成員函數(shù)(因?yàn)閎是常對象)voidprint()const,輸出結(jié)果是20,52。33、下列程序的輸出結(jié)果是()。#includeusingnamespacestd;templateTfun(Ta,Tb){retum(a<=b)?a:b;)intmain(){cout<A、0,3.14B、3,3.14C、3,3D、3.14,3.14標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:此函數(shù)模板的功能是輸出a、b兩數(shù)中較小的那個(gè)數(shù)。(3,6)輸出3,(3.14F,6.28F)輸出3.14。34、關(guān)于模板,下列說法不正確的是()。A、用類模板定義一個(gè)對象時(shí),不能省略實(shí)參B、類模板只能有虛擬類型參數(shù)C、類模板本身在編譯中不會(huì)生成任何代碼D、類模板的成員函數(shù)都是模板函數(shù)’標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:類模板不是一個(gè)實(shí)實(shí)在在的類,本身在編譯中不會(huì)生成任何代碼;用類模板定義一個(gè)對象時(shí),不能省略實(shí)參;類模板的成員函數(shù)都是模板函數(shù)。C++中可以為類模板的參數(shù)設(shè)置默認(rèn)值,所以選項(xiàng)B)錯(cuò)誤。35、如果一個(gè)模板聲明列出了多個(gè)參數(shù),則每個(gè)參數(shù)之間必須使用逗號隔開,每個(gè)參數(shù)都必須使用()關(guān)鍵字來修飾。A、constB、staticC、voidD、class標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:如果一個(gè)模板聲明列出了多個(gè)參數(shù),則每個(gè)參數(shù)之間必須使用逗號隔開,每個(gè)參數(shù)都必須使用class關(guān)鍵字來修飾。36、下列關(guān)于this指針的敘述中,正確的是()。A、this指針是一個(gè)隱含指針,它隱含于類的成員函數(shù)中B、只有在使用this時(shí),系統(tǒng)才會(huì)將對象的地址賦值給thisC、類的友元函數(shù)也有this指針D、this指針表示了成員函數(shù)當(dāng)前操作的數(shù)據(jù)所屬的對象標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:this指針是成員函數(shù)所屬對象的指針,它指向類對象的地址;它隱含于每個(gè)類的非靜態(tài)成員函數(shù)中;this指針只能在類的成員函數(shù)中使用,它指向該成員函數(shù)被調(diào)用的對象;靜態(tài)成員函數(shù)沒有this指針,因?yàn)轭愔兄挥幸粋€(gè)靜態(tài)成員函數(shù)實(shí)例,使用this指針無意義。37、下列有關(guān)函數(shù)重載的敘述中,錯(cuò)誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個(gè)函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認(rèn)值標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:此題考查的是函數(shù)重載的概念。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個(gè)數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。故選項(xiàng)C)錯(cuò)誤。38、對于一個(gè)類定義,下列敘述中錯(cuò)誤的是()。A、如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個(gè)拷貝構(gòu)造函數(shù)B、如果沒有定義缺省的構(gòu)造函數(shù),編譯器將一定生成一個(gè)缺省的構(gòu)造函數(shù)C、如果沒有定義構(gòu)造函數(shù),編譯器將生成一個(gè)缺省的構(gòu)造函數(shù)和一個(gè)拷貝構(gòu)造函數(shù)D、如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會(huì)生成任何構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:此題考查的是構(gòu)造函數(shù)。如果一個(gè)類中沒有定義任何構(gòu)造函數(shù),編譯器將生成一個(gè)不帶參數(shù)的公有缺省構(gòu)造函數(shù)。但只要定義了一個(gè)任意的構(gòu)造函數(shù),就不會(huì)生成缺省構(gòu)造函數(shù)了。39、下列關(guān)于派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的說法中,錯(cuò)誤的是()。A、派生類的構(gòu)造函數(shù)會(huì)隱含調(diào)用基類的構(gòu)造函數(shù)B、如果基類中沒有缺省構(gòu)造函數(shù),那么派生類必須定義構(gòu)造函數(shù)C、在建立派生類對象時(shí),先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)D、在撤銷派生類對象時(shí),先調(diào)用基類的析構(gòu)函數(shù),再調(diào)用派生類的析構(gòu)函數(shù)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:此題考查的是派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。在撤銷派生類對象時(shí),析構(gòu)函數(shù)的執(zhí)行過程和構(gòu)造函數(shù)嚴(yán)格相反,即:對派生類新增普通成員進(jìn)行清理;調(diào)用成員對象析構(gòu)函數(shù),調(diào)用基類析構(gòu)函數(shù)對基類進(jìn)行清理。國家二級C++機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共38題,每題1.0分,共38分。)1、在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是()。A、邏輯設(shè)計(jì)B、需求分析C、詳細(xì)設(shè)計(jì)D、物理設(shè)計(jì)標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:軟件開發(fā)階段包括需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測試五個(gè)階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。2、下列描述中,正確的是()。A、線性鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)B、棧與隊(duì)列是非線性結(jié)構(gòu)C、雙向鏈表是非線性結(jié)構(gòu)D、只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)與非線性結(jié)構(gòu)。如果一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個(gè)條件:①有且只有一個(gè)根結(jié)點(diǎn);②每個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu),又稱線性表。所以線性表、棧與隊(duì)列、線性鏈表都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。3、開發(fā)大型軟件時(shí),產(chǎn)生困難的根本原因是()。A、大型系統(tǒng)的復(fù)雜性B、人員知識不足C、客觀世界千變?nèi)f化D、時(shí)間緊、任務(wù)重標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:隨著計(jì)算機(jī)軟件規(guī)模的擴(kuò)大,軟件本身的復(fù)雜性不斷增加,研制周期顯著變長,正確性難以保證,軟件開發(fā)費(fèi)用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機(jī)”。4、兩個(gè)或兩個(gè)以上的模塊之間關(guān)聯(lián)的緊密程度稱為()。A、耦合度B、內(nèi)聚度C、復(fù)雜度D、連接度標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:耦合度是模塊間互相連接的緊密程度的度量:內(nèi)聚度是一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度的度量。5、下列關(guān)于線性表的敘述中,不正確的是()。A、線性表可以是空表B、線性表是一種線性結(jié)構(gòu)C、線性表的所有結(jié)點(diǎn)有且僅有一個(gè)前件和后件D、線性表是由n個(gè)元素組成的一個(gè)有限序列標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:線性表是一種線性結(jié)構(gòu),由n(n≥0)個(gè)元素組成,所以線性表可以是空表。但是在線性表中,第一個(gè)結(jié)點(diǎn)沒有前件,最后一個(gè)結(jié)點(diǎn)沒有后件,其他結(jié)點(diǎn)有且只有一個(gè)前件和后件,所以選項(xiàng)C)是錯(cuò)誤的。6、以下描述中,不是線性表順序存儲(chǔ)結(jié)構(gòu)特征的是()。A、可隨機(jī)訪問B、需要連續(xù)的存儲(chǔ)空間C、不便于插入和刪除D、邏輯相鄰的數(shù)據(jù)物理位置上不相鄰標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:線性表的順序存儲(chǔ)是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點(diǎn)是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動(dòng)隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。7、在三級模式之間引入兩層映像,其主要功能之一是()。A、使數(shù)據(jù)與程序具有較高的獨(dú)立性B、使系統(tǒng)具有較高的通道能力C、保持?jǐn)?shù)據(jù)與程序的一致性D、提高存儲(chǔ)空間的利用率標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫的三級模式之間提供了兩層映像,保證了數(shù)據(jù)庫中數(shù)據(jù)的較高的邏輯獨(dú)立性和物理獨(dú)立性。8、下列方法中,屬于白盒法設(shè)計(jì)測試用例的方法的是()。A、錯(cuò)誤推測B、因果圖C、基本路徑測試D、邊界值分析標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。9、關(guān)于虛函數(shù),以下說法正確的是()。A、若在重定義虛函數(shù)時(shí)使用了virtual,則該重定義函數(shù)還是虛函數(shù)B、虛函數(shù)不能聲明為友元C、子類必須重定義父類的虛函數(shù)D、虛函數(shù)不能是static的標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:在C++中,虛函數(shù)可以是友元函數(shù),但不能是靜態(tài)成員。虛函數(shù)的重定義函數(shù),無論是否使用virtual關(guān)鍵字,仍然是虛函數(shù)。所以答案選擇D)。10、下列關(guān)于純虛函數(shù)與抽象類的描述中,錯(cuò)誤的是()。A、純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實(shí)現(xiàn)B、抽象類是指具有純虛函數(shù)的類C、一個(gè)基類中說明具有純虛函數(shù),該基類的派生類一定不再是抽象類D、抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的虛函數(shù)。不定義對象而只作為一種基本類型用作繼承的類,稱為抽象類。凡是包含純虛函數(shù)的類都是抽象類。抽象類的作用是作為一個(gè)類族的共同基類。11、將x+y*z中的“+”用成員函數(shù)重載,“*”用友元函數(shù)重載應(yīng)寫為()。A、operator+(operator*(y,z))B、x.operator+(operator*(y’z))C、x.operator+(x*(y,z))D、x+(operator*(y,z))標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在定義了重載運(yùn)算符后的函數(shù)后,函數(shù)operator+重載了運(yùn)算符“+”。如果在類以外的其他地方定義了一個(gè)函數(shù),在類體中用friend對該函數(shù)進(jìn)行聲明,此函數(shù)就稱為本類的友員函數(shù)?!?”用友元函數(shù)重載就是運(yùn)算符函數(shù)不作為成員函數(shù),而把它放在類外,“*”被改寫為“operator*”?!?”為成員函數(shù)重載,x.operator+。所以x+y*z被改寫為“x.operator+(operator*(y,z))”。12、以下程序的執(zhí)行結(jié)果是()。#include#includevoidfun(intn){if(n!=0){fun(n-1);for(inti=l;i<=n;i++)cout<A、001012B、112123C、122333D、123標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:首先由程序中的主函數(shù)main入手,調(diào)用fun函數(shù),參數(shù)為3。fun(n)函數(shù)在其內(nèi)部,當(dāng)n不等于0時(shí),遞歸調(diào)用fun(n-1)。當(dāng)參數(shù)為3時(shí),fun(3)調(diào)用fun(2)…,然后利用for循環(huán)輸出i值,當(dāng)n=1時(shí),只輸出1,輸出回車后,就跳入fun(2),輸出1,2,最后輸出是1,2,3。13、有以下程序,在橫線應(yīng)添加()。#includeusingnamespacestd;classTestClass{public:TestClass(intn){number=n;)∥拷貝構(gòu)造函數(shù)~TestClass(){}private:intnumber;};TestClassfun(TestClassP){TestClasstemp(p);returntemp;}intmain(){TestClassobjl(10),obj2(0);TestClassobj3(objl);obj2=fun(obj3);return0;}A、TestClass(ZestClass&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知識點(diǎn)解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),但它只有一個(gè)參數(shù),這個(gè)參數(shù)是本類的對象,即other,所以賦值操作將本類的參數(shù)other.number賦值給number;而且采用對象的引用的形式,也就是&other。14、執(zhí)行完下列代碼段之后:boolx=true,y=false,z=false;x=x&&Yllz;y=xllY&&Z;z=l(x!=Y)tl(Y==z);則x=false,y=false,z:()。A、trueB、falseC、不確定D、異常標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:其中“x=x&&y||z”語句計(jì)算后x=false,“y=x}Iy&&z;”語句計(jì)算后y=falseo.那么“z=!(x!=y)||(y==z);”語句計(jì)算后“z=!(ture)||true”,所以答案為:truec。15、如果表達(dá)式--x/y中的“--”和“/”是作為友元函數(shù)重載的運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格式,該表達(dá)式還可表示為()。A、operator/(x.operato--0,y);B、operator/(operator--(x),y);C、X.operator--0.operator/(y);D、y.operator/(operator--(x));標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:運(yùn)算符重載實(shí)際上時(shí)函數(shù)的重載。重載運(yùn)算符的一般格式:函數(shù)類型operator運(yùn)算符名稱(參數(shù)表)。重載運(yùn)算符之后:函數(shù)operator+重載運(yùn)算符“+”?!?-”重載為“operator--:”,“/”重載為“operator/”。另外重載不能改變運(yùn)算的優(yōu)先級,-x/y計(jì)算-x后,除以y,所以表達(dá)式改寫為:operator/(operator-=(x),y);。16、將以下程序?qū)懗扇窟\(yùn)算表達(dá)式是()。if(xA、min=(x>y)?x:yB、min=(xC、min=(xD、min=(x標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:題目中給出的程序是求x,y中的小值。即如果x小于y,那么min=x,否則min=y。條件運(yùn)算符為“?:”,(x17、定義如下枚舉類型:enum{Monday,Tuesday,Wednesday,Thmsday,Friday=2};,則下列語句正確的是()。A、表達(dá)式Wednesday==Friday的值是trueB、Dayday;day=3C、Dayday;day=Monday+3D、Dayday;day=Tuesday+10標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:enum<枚舉類型名>{<枚舉元素表>};其中:關(guān)鍵詞enum表示定義的是枚舉類型,枚舉類型名由標(biāo)識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。其中enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2}的值由0開始,即0,1,2,3。D中的本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達(dá)式值為真,即true。即選擇A)。18、函數(shù)swap(a,n)可完成對a數(shù)組從第1個(gè)元素到第n個(gè)元素兩兩交換。其中b[0]=l;b[1]=2;swap(b,2)。在運(yùn)行調(diào)用函數(shù)中的語句后,b[0]和b[1]的值分別為()。A、1,1B、1,2C、2,2D、2,1標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:如果函數(shù)實(shí)參是數(shù)組名,形參也應(yīng)為數(shù)組名,函數(shù)swap中形參進(jìn)行了交換,實(shí)際上也是實(shí)參進(jìn)行了交換。而且數(shù)組名代表數(shù)組首元素的地址,并不代表數(shù)組的全部元素。所以,swap(b,2)是數(shù)組b第一個(gè)元素與第二個(gè)元素進(jìn)行交換,即b[0]與b[1],根據(jù)題干,知道答案為2,l。19、下列for循環(huán)的循環(huán)體執(zhí)行次數(shù)為()。for(inti(0),(10);i=j=4;i++,j--)A、0B、1C、4D、無限標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:循環(huán)條件i=j=4;是個(gè)賦值語句,使得i,j的值非0,所以是死循環(huán)。20、下述關(guān)于開關(guān)語句的描述中,正確的是()。A、開關(guān)語句中default子句可以沒有,也可以有一個(gè)B、開關(guān)語句中每個(gè)語句序列中必須有break語句C、開關(guān)語句中default子句只能放在最后D、開關(guān)語句中case子句后面的表達(dá)式可以是整型表達(dá)式標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:在switch語句中default的位置不是固定在最后的位置,同時(shí)default也是可以省略。21、下列存儲(chǔ)類標(biāo)識符中,可見性與存在性不一致的是()。A、外部類B、自動(dòng)類C、內(nèi)部靜態(tài)類D、寄存器類標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:可見性是函數(shù)內(nèi)部,存在整個(gè)程序中,第二次調(diào)用值不變。22、下述靜態(tài)數(shù)據(jù)成員的特征中,錯(cuò)誤的是()。A、說明靜態(tài)數(shù)據(jù)成員時(shí)前面要加修飾符staticB、靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化C、引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加<類名>和作用域運(yùn)算符D、靜態(tài)數(shù)據(jù)成員不是所有對象所共用的標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:靜態(tài)數(shù)據(jù)成員是在類裝載的時(shí)候就分配了內(nèi)存空間,而類的成員變量是在生成對象時(shí)分配內(nèi)存空間。所以只要類裝載了,就可以用類名訪問靜態(tài)數(shù)據(jù)成員。事實(shí)上,該類的所有對象都只保存類靜態(tài)數(shù)據(jù)成員的引用,它們都指向同一塊內(nèi)存區(qū)域。23、以下程序的執(zhí)行結(jié)果是()。#includeinta[8]={1,2,3,4,5,6,7);voidfun(int*pa,intn);voidmain(){intm=8;fun(a,m);cout<A、0B、1C、4D、28標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:voidfun(int*pa,intn)函數(shù)定義的功能就是把數(shù)組的每個(gè)元素的值加到元素pa[7]中,也就是數(shù)組的元素之和放在a[7]中存儲(chǔ),所以結(jié)果28。24、以下程序段是函數(shù)返回a所指數(shù)組中最大的值所在的下標(biāo)值,橫線處的語句為()。fun(int*a,intn){inti,j=0,k;k=j;for(i=j;ia[k])_______;return(k);}A、k=iB、k=jC、i=jD、i=n標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:函數(shù)fun中首先定義整型變量k用來存放返回最大值的下標(biāo),并將其首先指向第一個(gè)元素,即k=j。然后在for·循環(huán)中依次將當(dāng)前元素a[i]與標(biāo)識為最大值的元素進(jìn)行比較,如果當(dāng)前元素火于這個(gè)標(biāo)識元素,那么將最大值標(biāo)識為當(dāng)前元素,即k=i。25、在C++程序中,如果要求通過函數(shù)來實(shí)現(xiàn)一種簡單的功能,并且要求盡可能加快程序執(zhí)行速度,則應(yīng)該選用()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸調(diào)用D、嵌套調(diào)用標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:此題考查的是內(nèi)聯(lián)函數(shù)的相關(guān)知識點(diǎn)。C++引入內(nèi)聯(lián)函數(shù)是用它來代替C語言中的預(yù)處理宏函數(shù),內(nèi)聯(lián)函數(shù)在調(diào)用時(shí),是將表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換,這樣會(huì)加快程序的執(zhí)行速度。26、有如下類聲明:classMyBASE{intk:public:voidset(intn){k=n;}intgetOconst{retumk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;)intgetoconst{returnMyBASE::get()+j;)};則類MyDERIVED中保護(hù)的數(shù)據(jù)成員和成員函數(shù)的個(gè)數(shù)是()。A、4B、3C、2D、l標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:因?yàn)樵诒Wo(hù)繼承的情況下,基類中的公有成員voidset(intn)和intget()const在派生類中是保護(hù)成員,再加上派生類自身的保護(hù)成員i,一共是三個(gè)保護(hù)成員。27、下列關(guān)于繼承的描述中,錯(cuò)誤的是()。A、析構(gòu)函數(shù)不能被繼承B、派生類是基類的組合C、派生類的成員除了它自己的成員外,還包含了它的基類的成員D、派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:派生類中繼承的基類成員的訪問權(quán)限到派生類會(huì)發(fā)生變化,例如:私有繼承時(shí),派生類不能訪問基類的成員,所以選項(xiàng)D)錯(cuò)誤,其他選項(xiàng)均正確。28、類的析構(gòu)函數(shù)的作用是()。A、一般成員函數(shù)B、類的初始化C、對象的初始化D、釋放由對象所占用的資源標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:類的在撤銷對象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用類的析構(gòu)函數(shù),析構(gòu)函數(shù)用來釋放由對象所占用的資源。29、如果表達(dá)式y(tǒng)*x++中,“*”是作為成員函數(shù)重載的運(yùn)算符,“++”是作為友元函數(shù)重載的運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格式,該表達(dá)式還可表示為()。A、x.operator++(0).operator*(y)B、operator*(x.operator++(0),y)C、y.operator*(operator++(x,0))D、operator*(operator++(x,0),y)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:運(yùn)算符函數(shù)有兩種調(diào)用形式,第一種是像一般函數(shù)那樣用函數(shù)名調(diào)用,即y.operator*(z)或者operator*(y,z);另一種是通過運(yùn)算符構(gòu)成表達(dá)式,即y*z。因?yàn)椤?+”運(yùn)算符既可以作為前綴運(yùn)算符,又可以作為后綴運(yùn)算符,所以重載這個(gè)運(yùn)算符時(shí),重載后綴“++”時(shí)必須多一個(gè)虛擬參數(shù):int。30、有如下程序:#includeusingnamespacestd;classXX{protected:intk:public:XX(intn=5):k(n){);~XX(){cout<<”XX”;}virtualvoidfoconst=0;};inlinevoidXX::f()const{cout<A、28XXB、28YYXXC、33XXD、-33XXYY標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:類YY公有派生于類XX,派生類對象可以替代基類對象向基類對象的引用進(jìn)行賦值初始化,XX&p=*newYY語句定義了XX對象p引用,并用YY對象初始化,p并不是YY對象的別名,是XX基類對象的別名,故先調(diào)用基類XX的構(gòu)造函數(shù)將k初始化為5,p.f()首先輸出k一3即2,然后調(diào)用XX::f()輸出k+3即8,delete&p刪除p,調(diào)用XX的析構(gòu)函數(shù)輸出“XX”。31、有如下函數(shù)模板:templateTcast(Uu){returnu;)其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是()。A、cast(i);B、cast
(i);C、cast(i);D、cast(i);標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:選項(xiàng)D)是將double類型的數(shù)據(jù)轉(zhuǎn)化成int類型的數(shù)據(jù),正確。32、閱讀下面的程序:#includevoidmain(){intx;cin>>x;if(x++>5)cout<A、4,6B、3,6C、4,7D、5,7標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:此題首先讀入數(shù)值4賦給變量x,因?yàn)閤++>5不成立,因?yàn)椤?+”后綴,之后x的值變?yōu)?,執(zhí)行語句cout<5成立,所以執(zhí)行語句cout<33、按照標(biāo)識符的要求,下列選項(xiàng)中,()符號不能組成標(biāo)識符。A、連接符B、下劃線C、大小寫字母D、數(shù)字字符標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:此題考查的是標(biāo)識符。標(biāo)識符是由數(shù)字、字母以及下劃線構(gòu)成,其第一個(gè)字符必須是字母或下劃線,中間不能有空格;標(biāo)識符的長度是任意的,但由于編譯系統(tǒng)的限制一般不超過31個(gè)字符;標(biāo)識符中的大小寫字母是不同的;定義標(biāo)識符時(shí)不能采用系統(tǒng)的保留字。34、已知枚舉類型定義語句為:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10);則下列敘述中錯(cuò)誤的是()。A、枚舉常量NAME的值為1B、枚舉常量NUMBER的值為1C、枚舉常量MINUS的值為6D、枚舉常量PRINT的值為10標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:此題考查的是枚舉類型的聲明。聲明枚舉類型的語法形式為:enum類型名{枚舉值表}。需注意的是:當(dāng)n個(gè)枚舉值全部未賦常量值時(shí),它們自左至右分別與整數(shù)0、1、2、3…n-1對應(yīng);若第i個(gè)枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數(shù)m+1、m+2…對應(yīng),直到下一個(gè)賦了值的枚舉值或結(jié)束。枚舉常量NAME的值為0。35、類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;會(huì)調(diào)用兩次類MyClass的構(gòu)造函數(shù)C、對語句*P.SetVariable(5)的調(diào)用是正確的D、語句p->SetVariable(5)與語句my.SetVariable(5)等價(jià)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:選項(xiàng)A),語句p=&my;是把對象my的地址值賦值給指針變量p;選項(xiàng)B),語句MyClass*p,my;,由于p只是一個(gè)指向?qū)ο蟮闹羔?,因此定義指針p不調(diào)用構(gòu)造函數(shù),所以此語句只調(diào)用一次構(gòu)造函數(shù);對成員函數(shù)的引用可以通過兩種形式:指針.>成員函數(shù)(形參表)或者對象名.成語函數(shù)名(形參表),故選項(xiàng)C)錯(cuò)誤,選項(xiàng)D)正確。36、下列關(guān)于虛函數(shù)的描述中,正確的是()。A、虛函數(shù)是一個(gè)static類型的成員函數(shù)B、虛函數(shù)是一個(gè)非成員函數(shù)C、基類中采用virtual說明一個(gè)虛函數(shù)后,派生類中定義相同原型的函數(shù)時(shí)可不必加virtual說明D、派生類中的虛函數(shù)與基類中相同原型的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)或類型標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:此題考查虛函數(shù)的概念。在成員函數(shù)聲明的前面加上virtual修飾,即把該函數(shù)聲明為虛函數(shù)。虛函數(shù)只能是類中的一個(gè)成員函數(shù),但不能是靜態(tài)成員函數(shù),所以選項(xiàng)A)和B)錯(cuò)誤;在派生類中重新定義虛函數(shù)時(shí)必須有相同的函數(shù)類型,包括函數(shù)的返回類型、函數(shù)名、參數(shù)個(gè)數(shù)、參數(shù)類型的順序必須相同。故選項(xiàng)D)錯(cuò)誤。37、有如下程序:#includevoidfun(iInt&x,inty){intt=x;x=y;y=t;)intmain(){inta[2]={23,42);fun(a[1],a[0]);std::cout<A、42,42B、23,23C、23,42D、42,23標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:此題考查的是函數(shù)的調(diào)用以及參數(shù)值的傳遞。函數(shù)fun中的第一個(gè)參數(shù)是引用傳值方式,是雙向的;第二個(gè)參數(shù)是按值傳遞,是單向的。38、有如下程序:#includeusingnamespacestd;classA{public:staticinta;voidinit(){a=1;)A(inta=2){init();a++;)};intA::a=0;Aobj;intmain(){cout<A、0B、1C、2D、3標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:此題實(shí)際考查的是變量作用域的屏蔽效應(yīng)。在C++中,當(dāng)標(biāo)識符的作用域發(fā)生重疊時(shí),在一個(gè)函數(shù)中聲明的標(biāo)識符可以屏蔽函數(shù)外聲明的標(biāo)識符或全局標(biāo)識符。聲明類A的全局對象時(shí),構(gòu)造函數(shù)首先調(diào)用int函數(shù),但由于靜態(tài)成員變量a被構(gòu)造函數(shù)內(nèi)部的形參a所屏蔽所以a++改變的是形參a的值,對靜態(tài)成員變量a沒有影響。國家二級C++機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共38題,每題1.0分,共38分。)1、下列敘述中正確的是A、所謂算法就是計(jì)算方法B、程序可以作為算法的一種描述方法C、算法設(shè)計(jì)只需考慮得到計(jì)算結(jié)果D、算法設(shè)計(jì)可以忽略算法的運(yùn)算時(shí)間標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:算法是指對解題方案的準(zhǔn)確而完整的描述,算法不等于數(shù)學(xué)上的計(jì)算方法,也不等于程序,A選項(xiàng)錯(cuò)誤。算法設(shè)計(jì)需要考慮可行性、確定性、有窮性與足夠的情報(bào),不能只考慮計(jì)算結(jié)果,C選項(xiàng)錯(cuò)誤。算法設(shè)計(jì)有窮性是指操作步驟有限且能在有限時(shí)間內(nèi)完成,如果一個(gè)算法執(zhí)行耗費(fèi)的時(shí)間太長,即使最終得出了正確結(jié)果,也是沒有意義的,D選項(xiàng)錯(cuò)誤。算法在實(shí)現(xiàn)時(shí)需要用具體的程序設(shè)計(jì)語言描述,所以程序可以作為算法的一種描述方法,B選項(xiàng)正確。2、下列各序列中不是堆的是A、(91,85,53,36,47,30,24,12)B、(91,85,53,47,36,30,24,12)C、(47,91,53,85,30,12,24,36)D、(91,85,53,47,30,12,24,36)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:若有n個(gè)元素的序列,將元素按順序組成一棵完全二叉樹,當(dāng)且僅當(dāng)滿足下列條件時(shí)稱為堆:大根堆,所有結(jié)點(diǎn)的值大于或等于左右子結(jié)點(diǎn)的值;小根堆,所有結(jié)點(diǎn)的值小于或等于左右子結(jié)點(diǎn)的值。A、B、D選項(xiàng)屬于大根堆,C選項(xiàng)由于47<91,判斷屬于小根堆,但91>85,不滿足條件,不是堆,故正確答案為C選項(xiàng)。3、深度為5的完全二叉樹的結(jié)點(diǎn)數(shù)不可能是A、15B、16C、17D、18標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:在樹結(jié)構(gòu)中,定義一棵樹的根結(jié)點(diǎn)所在的層次為1,其他結(jié)點(diǎn)所在的層次等于它的父結(jié)點(diǎn)所在的層次加1,樹的最大層次稱為樹的深度。完全二叉樹指除最后一層外,每一層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干結(jié)點(diǎn)。深度為5的二叉樹,結(jié)點(diǎn)個(gè)數(shù)最多為25-1=31,最少為24=16,不可能是15,故正確答案為A選項(xiàng)。4、設(shè)二叉樹如下:則前序序列為A、ABDEGCFHB、DBGEAFHCC、DGEBHFCAD、ABCDEFGH標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:二叉樹遍歷可以分為3種:前序遍歷(訪問根結(jié)點(diǎn)在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根結(jié)點(diǎn)在訪問左子樹和訪問右子樹兩者之間)、后序遍歷(訪問根結(jié)點(diǎn)在訪問左子樹和訪問右子樹之后)。本題中前序遍歷為ABDEGCFH,中序遍歷為DBGEAFHC,后序遍歷為DGEBHFCA,故A選項(xiàng)正確。5、下面描述不屬于軟件特點(diǎn)的是A、軟件是一種邏輯實(shí)體,具有抽象性B、軟件在使用中不存在磨損、老化問題C、軟件復(fù)雜性高D、軟件使用不涉及知識產(chǎn)權(quán)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:軟件具有以下特點(diǎn):軟件是一種邏輯實(shí)體,具有抽象性;軟件沒有明顯的制作過程;軟件在使用期間不存在磨損、老化問題;對硬件和環(huán)境具有依賴性;軟件復(fù)雜性高,成本昂貴;軟件開發(fā)涉及諸多的社會(huì)因素,如知識產(chǎn)權(quán)等。故選項(xiàng)D正確。6、下面對類-對象主要特征描述正確的是A、對象唯一性B、對象無關(guān)性C、類的單一性D、類的依賴性標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:對象的基本特點(diǎn)是:標(biāo)識唯一性、分類性、多態(tài)性、封裝性、模塊獨(dú)立性好。類是具有共同屬性、共同方法的對象的集合,是關(guān)于對象的抽象描述,反映屬于該對象類型的所有對象的性質(zhì)。對象具有的性質(zhì),類也具有。故A選項(xiàng)正確。7、在數(shù)據(jù)庫中,數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和A、數(shù)據(jù)約束B、數(shù)據(jù)類型C、關(guān)系運(yùn)算D、查詢標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作及數(shù)據(jù)約束3部分組成。故A選項(xiàng)正確。8、一個(gè)運(yùn)動(dòng)隊(duì)有多個(gè)隊(duì)員,一個(gè)隊(duì)員僅屬于一個(gè)運(yùn)動(dòng)隊(duì),一個(gè)隊(duì)一般都有一個(gè)教練,則實(shí)體運(yùn)動(dòng)隊(duì)和隊(duì)員的聯(lián)系是A、一對多B、一對一C、多對一D、多對多標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:一般來說,實(shí)體集之間必須通過聯(lián)系來建立聯(lián)接關(guān)系,分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。實(shí)體運(yùn)動(dòng)隊(duì)和隊(duì)員的關(guān)系為1:m聯(lián)系,故A選項(xiàng)正確。9、設(shè)循環(huán)隊(duì)列為Q(1:m),其初始狀態(tài)為front=rear=m。經(jīng)過一系列入隊(duì)與退隊(duì)運(yùn)算后,front=30,rear=10?,F(xiàn)要在該循環(huán)隊(duì)列中作順序查找,最壞情況下需要比較的次數(shù)為A、19B、20C、m-19D、m-20標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu),用隊(duì)尾指針rear指向隊(duì)列中的隊(duì)尾元素,用排頭指針front指向排頭元素的前一個(gè)位置,因此,從排頭指針front指向的后一個(gè)位置直到隊(duì)尾指針rear指向的位置之間所有的元素均為隊(duì)列中的元素,隊(duì)列初始狀態(tài)為front=rear=m,當(dāng)front=30,rear=10時(shí),隊(duì)列中有m-30+10+1=m-19個(gè)元素,比較次數(shù)為m-20次,D選項(xiàng)正確。10、下列字符串中不能作為C++標(biāo)識符使用的是A、DOUBLEB、ab~cC、_5_D、xyz標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:C++的標(biāo)識符由字母、數(shù)字和下劃線組成,其中必須以字母或下劃線開頭。選項(xiàng)B錯(cuò)誤,答案選B。11、下列語句中錯(cuò)誤的是A、constint*p=0;B、constinty=0;C、intx=0;D、constintp=newint(100);標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C++中使用new表達(dá)式動(dòng)態(tài)創(chuàng)建對象,new表達(dá)式返回指向新創(chuàng)建對象的指針,D選項(xiàng)將new返回的指針賦給整型const變量,語法錯(cuò)誤,答案選D。12、有如下程序:#includeusingnamespacestd;intmain(){intsum=0;for(inti=0;i<=3;i+=1){sum+=i;while(sum<100)sum+=i;}cout<<sum<A、輸出100B、輸出103C、輸出105D、死循環(huán)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:程序在for循環(huán)中嵌套while循環(huán)。for循環(huán)的初始條件為,sum、i初值為0;進(jìn)入for循環(huán)之后,首先將sum累加i,此時(shí)sum、i仍為0;while循環(huán)中,若sum小于100,則將sum累加i,繼續(xù)while循環(huán);當(dāng)sum不滿足條件時(shí),退出循環(huán)。由于sum、i初值為0,所以while循環(huán)中sum始終為0,始終滿足循環(huán)條件sum<100,所以程序進(jìn)入死循環(huán)。答案為D。13、有如下程序段:inti=1;intj=4;intmain(){intj=i,i=8;cout<A、14B、81C、88D、18標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:程序首先在main函數(shù)之前定義兩個(gè)int型全局變量i、j,并賦予初始值i=1,j=4;在main函數(shù)中又定義了兩個(gè)int型局部變量i、j,并使用全局變量i初始化局部變量j,使用數(shù)值8初始化局部變量i,所以局部變量j=1,局部變量i=8;由于在命名空間中,局部變量會(huì)覆蓋同名的全局變量,所以輸出的i、j都是局部變量,輸出結(jié)果為81,答案為B。14、已知有數(shù)組定義chara[3][4];下列表達(dá)式中正確的是A、a[0]="AAA"B、strcpy(a[1],"BBBBB")C、a[2][1]="CC"D、a[1][1]=a[1][1]標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:程序定義一個(gè)3行4列的二維字符數(shù)組。由于是二維數(shù)組,所以a[0]代表一維數(shù)組,數(shù)組是不能直接賦值的,A錯(cuò)誤;由于是二維數(shù)組,a[1]代表數(shù)組a的第二行行地址,可以使用strcpy函數(shù)賦值,但是a[1]只有4個(gè)字節(jié)大小的空間,而字符串"BBBBB"占6個(gè)字節(jié),拷貝越界,B錯(cuò)誤;同B情況一樣,a[2][1]只有1個(gè)字節(jié)空間,"CC"占3個(gè)字節(jié),無法完成賦值,C錯(cuò)誤;D選項(xiàng)是對a[1][1]完成自我賦值,正確;答案為D。15、有如下程序段:inti=0;while(1){i++;if(i==30)break;if(i/20==0)cout<<’*’;}執(zhí)行這個(gè)程序段輸出字符*的個(gè)數(shù)是A、0B、9C、19D、29標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:程序首先定義一個(gè)整型變量i并初始化為0,while循環(huán)條件為1,所以循環(huán)結(jié)束時(shí),必然執(zhí)行break語句;while循環(huán)體中,首先對i自增1,接著判斷i==30時(shí)退出循環(huán),最后判斷i/20==0(即,i<20)時(shí)輸出"*",所以當(dāng)i取值為0-18時(shí),通過自增1后,輸出"*";答案為C。16、下列選項(xiàng)中,正確的C++表達(dá)式是A、a+b=b+cB、xyz+C、www++9D、a[3]標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:A選項(xiàng)中,a+b是表達(dá)式,不可以作為左值;選項(xiàng)B中,運(yùn)算符"+"作為一元運(yùn)算符,應(yīng)該放在操作數(shù)之前,返回操作數(shù)本身;作為二元運(yùn)算符,必須作用于兩個(gè)操作數(shù)之間;選項(xiàng)C中,運(yùn)算符"++"是一元運(yùn)算符,只能有一個(gè)操作數(shù);答案為D。17、Windows環(huán)境下,由C++源程序文件編譯而成的目標(biāo)文件的擴(kuò)展名是A、oB、objC、exeD、h標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:A選項(xiàng)中,o是linux環(huán)境下編譯后的目標(biāo)文件的擴(kuò)展名;C選項(xiàng)中,exe是windows環(huán)境下程序鏈接之后的可執(zhí)行文件的擴(kuò)展名;D選項(xiàng)中,h是源程序頭文件;答案為B。18、執(zhí)行下列語句段后intn=0;for(inti=70;i>0;i-=3)n++;n的值是A、23B、24C、25D、71標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:for循環(huán)中,i初值為70,每次循環(huán)i自減3,n自增1,循環(huán)終止條件為i>0不成立;由70/3=23,可知循環(huán)最少執(zhí)行23次,之后i取值為1,仍然滿足循環(huán)條件,所以循環(huán)總共執(zhí)行24次,n自增24次,答案為B19、下列關(guān)于函數(shù)的敘述中,正確的是A、C++不允許函數(shù)嵌套定義B、C++中所有函數(shù)都有返回值C、函數(shù)的形參列表一定不能為空D、調(diào)用函數(shù)時(shí)一定會(huì)執(zhí)行完函數(shù)體的最后一條語句標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:C++中函數(shù)可以不返回任何值,不返回任何值指定返回類型為void類型;函數(shù)形參表可以為空,但不能省略;函數(shù)調(diào)用過程中,可能會(huì)由于return語句或者異常終止執(zhí)行,不一定會(huì)執(zhí)行完最后一條語句;B、C、D錯(cuò)誤;函數(shù)不允許嵌套定義,答案為A。20、下列關(guān)于運(yùn)算符重載的敘述中,正確的是A、不能改變重載運(yùn)算符的優(yōu)先級B、運(yùn)算符只能重載為類的成員函數(shù)C、C++中已有的任何運(yùn)算符都可以重載D、可以為重載運(yùn)算符函數(shù)的參數(shù)設(shè)置默認(rèn)值標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:操作符"<<"和">>"不能重載為成員函數(shù),選項(xiàng)B錯(cuò)誤;成員訪問操作符"."、成員指針訪問操作符".*"、域操作符"::"、sizeof和條件操作符"?:"是不能重載的,選項(xiàng)C錯(cuò)誤;除了函數(shù)調(diào)用操作符"()"外,重載操作符時(shí)使用默認(rèn)參數(shù)是非法的,選項(xiàng)D錯(cuò)誤;重載操作符不能改變操作符的優(yōu)先級別,選項(xiàng)A正確;答案為A。21、下列運(yùn)算符中,可以重載為類的友元函數(shù)的運(yùn)算符是A、=B、()C、.D、<<標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C++規(guī)定,賦值操作符"="、下標(biāo)操作符"[]"、調(diào)用操作符"()"和成員訪問箭頭操作符"->"必須重載為成員函數(shù),這些操作符定義為非成員函數(shù)將在編譯時(shí)標(biāo)記為錯(cuò)誤,友元函數(shù)是非成員函數(shù),上面四種操作符不能重載為類的友元函數(shù),另外成員訪問操作符"."不能重載,答案為D。22、下列關(guān)于內(nèi)聯(lián)函數(shù)的敘述中,錯(cuò)誤的是A、內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前B、內(nèi)聯(lián)函數(shù)主要解決程序的運(yùn)行效率問題C、類體中定義的函數(shù)都是內(nèi)聯(lián)函數(shù)D、內(nèi)聯(lián)函數(shù)不能有參數(shù)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:內(nèi)聯(lián)函數(shù)的函數(shù)定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前;內(nèi)聯(lián)函數(shù)可以避免函數(shù)頻繁調(diào)用時(shí)的開銷,提高程序運(yùn)行效率;在類定義體內(nèi)部定義的成員函數(shù),編譯器都將其視為內(nèi)聯(lián)函數(shù);A、B、C正確;內(nèi)聯(lián)函數(shù)也可以有參數(shù),D錯(cuò)誤,答案為D。23、求n階勒讓德多項(xiàng)式的遞歸函數(shù)定義如下:doubleP(doublex,intn){if(n==0)return1;if(n==1)returnx;if(n>1)return((2*n-1)*x-P(x,n-1)-(n-1)*P(x,n-2))/n;}若執(zhí)行函數(shù)調(diào)用表達(dá)式P(1.3,2),函數(shù)P被調(diào)用的次數(shù)是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:內(nèi)聯(lián)函數(shù)的函數(shù)定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前;內(nèi)聯(lián)函數(shù)可以避免函數(shù)頻繁調(diào)用時(shí)的開銷,提高程序運(yùn)行效率;在類定義體內(nèi)部定義的成員函數(shù),編譯器都將其視為內(nèi)聯(lián)函數(shù);A、B、C正確;內(nèi)聯(lián)函數(shù)也可以有參數(shù),D錯(cuò)誤,答案為D。24、有如下類定義:classMyClass{public:MyClass(doubled=0.0):val(d){}______________//類型轉(zhuǎn)換運(yùn)算符double的定義private:doubleval;};若要使語句序列MyClassx(2.1);cout<A、operatordouble()const{returnval;}B、friendoperatordouble()const{returnval;}C、doubleoperator()const{returnval;}D、frienddoubleoperator()const{returnval;}標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:題目需要定義類型轉(zhuǎn)換運(yùn)算符double,類型轉(zhuǎn)換運(yùn)算符是一種特殊的類成員函數(shù),它定義將類類型的值轉(zhuǎn)變?yōu)槠渌愋椭?,由于轉(zhuǎn)換函數(shù)必須是成員函數(shù),選項(xiàng)B、D錯(cuò)誤;另外轉(zhuǎn)換函數(shù)不能指定返回類型,并且形參列表必須為空,選項(xiàng)C錯(cuò)誤;所以double類型轉(zhuǎn)換運(yùn)算符的定義為:operatordouble()const{returnval;};答案為A。25、由于常對象不能被更新,因此A、通過常對象只能調(diào)用它的常成員函數(shù)B、通過常對象只能調(diào)用靜態(tài)成員函數(shù)C、常對象只包含其所屬類型的常成員D、通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:常對象是指對象的數(shù)據(jù)成員的值在對象被調(diào)用時(shí)不能被改變,常對象必須進(jìn)行初始化,且不能被更新,不能通過常對象調(diào)用普通成員函數(shù),常對象只能調(diào)用常成員函數(shù),選項(xiàng)B、D錯(cuò)誤;常對象是可以包含普通成員的,選項(xiàng)C錯(cuò)誤;答案為A。26、以下關(guān)鍵字與類的訪問權(quán)限無關(guān)的是A、friendB、constC、constD、private標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:C++中,關(guān)鍵字public、protected、private用來聲明類的訪問權(quán)限,另外friend關(guān)鍵字可以用來聲明友元,同樣可以控制類的訪問權(quán)限;const用來修飾常量性,與類的訪問權(quán)限無關(guān),答案為B。27、ClassA是一個(gè)類,且有如下語句序列ClassAc1,*c2;ClassA*c3=newMyClass;ClassA&c4=c1;則ClassA的構(gòu)造函數(shù)被調(diào)用的次數(shù)是A、1B、2C、3D、5標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:定義一個(gè)ClassA類型的對象c1,生成新對象c1,調(diào)用默認(rèn)構(gòu)造函數(shù);定義一個(gè)ClassA類型的指針c2,指針未賦初值,沒有新對象生成,沒有調(diào)用構(gòu)造函數(shù);定義一個(gè)ClassA類型的指針c3,使用動(dòng)態(tài)分配方式為c3分配內(nèi)存,生成新的對象,將c3初始化為新對象的地址,調(diào)用默認(rèn)構(gòu)造函數(shù);定義一個(gè)ClassA類型的引用c4,引用c1對象,沒有新對象生成,未調(diào)用構(gòu)造函數(shù);答案為B。28、下列關(guān)于虛函數(shù)的表述中,正確的是A、虛函數(shù)不得是靜態(tài)成員函數(shù)B、抽象類中的成員函數(shù)都是純虛函數(shù)C、只能通過指針或引用調(diào)用虛函數(shù)D、抽象類中的成員函數(shù)都是虛函數(shù)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:在函數(shù)形參表后面添加"=0"可以指定該函數(shù)為純虛函數(shù),類中含有一個(gè)或多個(gè)純虛函數(shù),該類就是抽象類,選項(xiàng)B錯(cuò)誤;可以通過對象指針或引用調(diào)用虛函數(shù),也可以使用對象直接調(diào)用虛函數(shù),只不過使用對象直接調(diào)用虛函數(shù)和調(diào)用普通成員函數(shù)一樣,沒有動(dòng)態(tài)綁定,不具有多態(tài)性,選項(xiàng)C錯(cuò)誤;抽象類中的成員函數(shù)至少有一個(gè)純虛函數(shù),對虛函數(shù)沒有要求,選項(xiàng)D錯(cuò)誤;一個(gè)函數(shù)定義為虛函數(shù),它就是動(dòng)態(tài)綁定的,在派生類中可以覆蓋,而靜態(tài)成員函數(shù)是屬于整個(gè)類,不屬于某個(gè)類對象,對于每個(gè)類來說只有一份代碼,所有同類的對象共享這份代碼,沒有動(dòng)態(tài)綁定的必要,選項(xiàng)A正確;答案為A。29、有如下類和變量定義:classParents{public:intpublicData;private:intprivateData;};classdA:publicParents{/*類體略*/};classdB:privateParents{/*類體略*/};dAx;dBy;下列表達(dá)式中正確的是A、x.publicDataB、x.privateDataC、y.privateDataD、y.publicData標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:dA公有繼承Parents,dB私有繼承Parents,所以Parents中的公有成員publicData在dA中是公有成員,對x可見,在dB中是私有成員,對y不可見,Parents中的私有成員privateData對x和y都不可見;由此可知:只有x可以訪問publicData,答案為A。30、有如下類定義:classPass{staticintcount;public:Pass(){}voidshow()const;friendintgetCount();staticintincre();};在所聲明的4個(gè)函數(shù)中,具有this指針的有A、Pass和showB、Pass和showC、show和increD、getCount和incre標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:C++的類定義中,只有非靜態(tài)成員函數(shù)具有this指針,Pass類中g(shù)etCount()函數(shù)是友元函數(shù),不屬于成員函數(shù),沒有this指針,選項(xiàng)B、D錯(cuò)誤;incre()函數(shù)是靜態(tài)成員函數(shù),沒有this指針,選項(xiàng)C錯(cuò)誤;答案為A。31、有如下程序:#includeusingnamespacestd;classShape{//圖形類public://圖形繪制函數(shù)(用顯示字母模擬)virtualvoiddraw()const{cout<<’S’;}};classCircle:publicShape{//圓形類public:voiddraw()const{cout<<’C’;}};voidplot(Shape&s){s.draw();}intmain(){Shape*ps=newCircle;Circlet;ps->draw();t.draw();plot(t);deleteps;return0;}運(yùn)行這個(gè)程序的輸出是A、SCCB、SCSC、CSSD、CCC標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C++中,多態(tài)性調(diào)用需要滿足兩個(gè)條件,1、被調(diào)用成員函數(shù)必須是虛函數(shù);2、必須通過基類類型的引用或指針進(jìn)行函數(shù)調(diào)用。多態(tài)性使程序在運(yùn)行時(shí)期根據(jù)指針或引用所指對象的類型來決定調(diào)用哪個(gè)函數(shù)。程序中,類Shape定義了虛函數(shù)draw(),在派生類Circle中重寫了函數(shù)draw();main函數(shù)中,分別使用指針、對象、引用三種方式調(diào)用函數(shù)draw(),指針ps是基類指針,指向的是派生類的對象,所以這里根據(jù)多態(tài)性,將調(diào)用Circle中的draw函數(shù),輸出"C";對象t是Circle對象,也調(diào)用Circle中的draw函數(shù),輸出"C";函數(shù)plot()執(zhí)行時(shí)引用s引用的是實(shí)參t,引用對象是派生類Circle對象,根據(jù)多態(tài)性,同樣調(diào)用Circle中的draw函數(shù),輸出"C";結(jié)果輸出為"CCC";答案為D。32、有如下類及函數(shù)的定義:classWow{intk;public:Wow(intn=0):k(n){}intincre(){return++k;}intdecre();voidshow()const;};intWow::decre(){return--k;}inlinevoiddisplay(Woww){w.show();}voidWow::show()const{cout<A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:類定義體內(nèi)部定義的函數(shù),編譯器都默認(rèn)為內(nèi)聯(lián)函數(shù),類定義體外部定義的函數(shù),使用關(guān)鍵字inline修飾的函數(shù)為內(nèi)聯(lián)函數(shù),所以內(nèi)聯(lián)函數(shù)有:Wow(intn=0)、incre()、display(Woww),答案為C。33、有如下類聲明:classHow{intk;public:friendvoidshow();};則類How所擁有的構(gòu)造函數(shù)的數(shù)量是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:類How的定義體中沒有定義任何構(gòu)造函數(shù),所以編譯器需要自動(dòng)生成一個(gè)默認(rèn)構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù),答案為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025農(nóng)村信用合作社聘用合同樣本
- 二零二五年度國際貨物出口合同范文:非洲新興市場合作項(xiàng)目
- 2025年度公廁工程承包合同書(含社區(qū)共建)3篇
- 二零二五年度公司施工隊(duì)鋼結(jié)構(gòu)工程施工合作協(xié)議3篇
- 二零二五年度全新高空橋梁施工意外事故免責(zé)責(zé)任書3篇
- 二零二五年度智能倉儲(chǔ)物流系統(tǒng)采購合同模板2篇
- 二零二五年度消防隊(duì)伍后勤保障服務(wù)合同3篇
- 2025年度農(nóng)村出租房租賃與農(nóng)村電子商務(wù)運(yùn)營服務(wù)合同
- 2025年度智慧城市建設(shè)項(xiàng)目合同2篇
- 二零二五年度農(nóng)村集體土地房屋產(chǎn)權(quán)轉(zhuǎn)讓合同下載
- 《皮膚病中成藥導(dǎo)引》課件
- 2024-2030年中國除顫儀行業(yè)市場分析報(bào)告
- 廣東省廣州市天河區(qū)2023-2024學(xué)年八年級上學(xué)期期末考試物理試題(含答案)
- 2024年高一上學(xué)期期末數(shù)學(xué)考點(diǎn)《壓軸題》含答案解析
- 成都中醫(yī)藥大學(xué)博士申請
- 太空軍事法律問題-洞察分析
- 招標(biāo)代理崗位職責(zé)規(guī)章制度
- 家校攜手育桃李 齊心合力創(chuàng)輝煌 課件高二上學(xué)期期末家長會(huì)
- 二零二四年風(fēng)力發(fā)電項(xiàng)目EPC總承包合同
- 文化傳媒企業(yè)資質(zhì)掛靠合作協(xié)議書
- 眼鏡學(xué)智慧樹知到答案2024年溫州醫(yī)科大學(xué)
評論
0/150
提交評論