




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
國家二級C++機試(選擇題)模擬試卷19(共9套)(共217題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共23題,每題1.0分,共23分。)1、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9;eout<<“Thevalueatp:”<<*p;retum0:編譯運行程序將出現的情況是()。A、編譯時出現語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:先定義指針變量,然后給指針變量賦初值有三種情況:①用取地址運算符“&”將變量地址賦給指針變量,如p=&a;②將一個指針變量中的地址賦給另一個指針變量,如p=p1;③給指針變量賦空值0,如q=0,表示該指針變量不指向任何變量。而不能用一個常量給指針變量賦初值,所以本題選D。2、下列敘述中正確的是()。A、棧是“先進先出”的線性表B、隊列是“先進后出”的線性表C、循環(huán)隊列是非線性結構D、有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構標準答案:D知識點解析:棧是“先進后出”,隊列“是先進先出”。棧和隊列都是一種線性表,屬于線性結構。有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構。采用鏈式存儲結構的線性表稱之為線性鏈表。3、在深度為7的滿二叉樹中,葉子結點的個數為()。A、32B、31C、64D、63標準答案:C知識點解析:所謂滿二叉樹是指這樣的一種二叉樹:除最后一層外,每一層上的所有結點都有兩個子結點。也就是在滿二叉樹中,每一層上的結點數都是最大結點數,即在滿二叉樹的第k層上有2k-1個結點,且深度為m的滿二叉樹有2m-1個結點。對于深度為7的滿二叉樹,葉子結點所在的是第7層,一共有27-1=64個葉子結點。全部結點共27-1=127個。4、下列描述中,不符合良好程序設計風格要求的是()。A、程序的效率第一,清晰第二B、程序的可讀性好C、程序中要有必要的注釋D、輸入數據前要有提示信息標準答案:A知識點解析:一般來講,程序設計風格是指編寫程序時所表現出的特點、習慣和邏輯思路。程序設計風格總體而言應該強調簡單和清晰,程序必須是可以理解的。著名的“清晰第一,效率第二”的論點已成為當今主導的程序設計風格。5、軟件生命周期中的活動不包括()。A、市場調研B、需求分析C、軟件測試D、軟件維護標準答案:A知識點解析:軟件的生命周期描述了軟件從產生到最終消亡的全過程,生命崗期中的活動包括需求分析、軟件設計(分為概要設計和詳細設計)、軟件實現、軟件測試和軟件維護,不包括市場調研。6、下i面程序輸出的結果為()。#include<iostream.h>voidfun(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=1;n=2:fun(m,n);cout<<m<<’’’’<<n<<end1:}A、12B、21C、22D、程序有錯誤標準答案:A知識點解析:函數fun中定義的參數a和b為形式參數,它們并不是實際存在的數據,只有在發(fā)生函數調用時才被分配內存空間,結束后,形參所占有的內存單元也被釋放。并且函數fun沒有返回值,它做的交換操作,并不能影響實際參數m和n。所以輸出值保持不變,仍然是1和2,即輸出:12。7、在E―R圖中,用來表示實體聯系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形標準答案:C知識點解析:在E―R圖中實體集用矩形,屬性用橢圓,聯系用菱形。8、用樹形結構表示實體之間聯系的模型是()。A、關系模型B、網狀模型C、層次模型D、以上三個都是標準答案:C知識點解析:層次模型的基本結構是樹形結構,這種結構方式在現實世界中很普遍,它們自頂向下、層次分明。9、如果表達式y(tǒng)*x++中,“*”是作為成員函數重載的運算符,“++”是作為友元函數重載的運算符,采用運算符函數調用格式,該表達式還可表示為()。A、x.operator++(0).operator*(y)B、operator*(x.operator++(0),y)C、y.operator*(operator++(x,0))D、operator*(operator++(x,0),y)標準答案:C知識點解析:運算符函數有兩種調用形式,第一種是像一般函數那樣用函數名調用,即y.opemtor*(z)或者operator*(y,z);另一種是通過運算符構成表達式,即y*z。因為“++”運算符既可以作為前綴運算符,又可以作為后綴運算符,所以重載這個運算符時,重載后綴“++”時必須多一個虛擬參數:int。10、下列符號中,正確的C++標識符是()。A、enumB、100bitC、s-1D、_int標準答案:D知識點解析:此題考查的是c++語言中標識符的概念。標識符是由數字、字母以及下劃線構成,其第一個字符必須是字母或下劃線,中間不能有空格;標識符的長度是任意的,但由于編譯系統(tǒng)的限制一般不超過31個字符;標識符中的大小寫字母是不同的;定義標識符時不能采用系統(tǒng)的保留字。11、下列字符串中,正確的C++標識符是()。A、foo—1B、2bC、newD、_256標準答案:D知識點解析:此題考查的是C++語言中標識符的定義。標識符由字母、數字或下劃線構成,但第一個字符必須是字母或下劃線;標識符中大小寫字母是不同的;用戶定義標識符時,不允許采用系統(tǒng)的關鍵字。12、下列敘述中,錯誤的是()。A、false是一個邏輯型常量B、’’b’’是一個字符型常量C、365是一個int常量D、3.1415926是一個double常量標準答案:B知識點解析:字符常量簡稱字符,它以單引號作為起止符號,中間有一個或若干個字符?;蛘咭浴埃堋遍_頭的包括多個字符的字符序列也符合規(guī)定的字符常量。13、在為一個類重載下列運算符時,只能作為該類成員函數重載的運算符是()。A、+B、()C、<<D、++標準答案:B知識點解析:本題考查重載運算符,C++規(guī)定有的運算符(如賦值運算符、下標運算符、函數調用運算符)必須定義為類的成員函數。所以本題選B。14、數據庫設計中反映用戶對數據要求的模式是A、內模式B、概念模式C、外模式D、設計模式標準答案:C知識點解析:概念模式,是由數據庫設計者綜合所有用戶的數據,按照統(tǒng)一的觀點構造的全局邏輯結構,是對數據庫中全部數據的邏輯結構和特征的總體描述,是所有用戶的公共數據視圖(全局視圖)。它是由數據庫管理系統(tǒng)提供的數據模式描述語言(DataDescriptionLanguage,DDL)來描述、定義的,體現、反映了數據庫系統(tǒng)的整體觀。外模式,對應于用戶級,它是某個或某幾個用戶所看到的數據庫的數據視圖,是與某一應用有關的數據的邏輯表示。外模式是從模式導出的一個子集,也稱為子模式或用戶模式,它是用戶的數據視圖,也就是用戶所見到的數據模式,它反映了用戶對數據的要求。包含模式中允許特定用戶使用的那部分數據,用戶可以通過外模式描述語言來描述、定義對應于用戶的數據記錄(外模式),也可以利用數據操縱語言(DataManipulationLanguage,DML)對這些數據記錄進行描述。內模式,對應于物理級,它是數據庫中全體數據的內部表示或底層描述,是數據庫最低一級的邏輯描述,它描述了數據在存儲介質上的存儲方式和物理結構,對應著實際存儲在外存儲介質上的數據庫。內模式由內模式描述語言來描述、定義,它是數據庫的存儲觀。15、有如下程序段:inti=5;while(inti=0){cout<<’*’;i--;}運行時輸出“*”的個數是()。A、0+B、1C、5D、無窮標準答案:A知識點解析:因為while循環(huán)中,因為i的值等于0,所以while循環(huán)體一次也不執(zhí)行。因而運行時輸出“*”,的個數是0。16、有如下程序:#includeusingnamespacestd;classCl{public:~4210{cout<<1;}};classC2:publicC1{public:~C2(){cout<<2;}};intmain(){C2cb2;C1*cb1;return0;}運行時的輸出結果是()。A、121B、21C、211D、12標準答案:B知識點解析:在主函數中定義C2類的對象,當程序結束時,首先調用C2類的析構函數~C2,輸出2,再調用C1類的析構函數~C1,輸出1。所以程序運行的結果就是21。17、下列關于函數重載的敘述中,錯誤的是()。A、重載函數的參數個數可以不同B、重載函數的參數類型可以不同C、重載函數的返回值類型必須不同D、重載函數的參數個數或參數類型必須有所不同標準答案:C知識點解析:兩個或兩個以上的函數,具有相同的函數名,但是形參的個數或者類型不同,編譯器根據實參和形參的類型及個數進行最佳匹配,自動確定調用哪個函數,這就是函數的重載。18、有如下程序:#inc1ude<iostream>#inc1ude<cstring>.usingnamespacestd;classXCD{char*a:intb:public:XCD(char*aa,intbb){a=newchar[strlen(aa)+1];strcpy(a,aa),b=bb;}char*Geta(){returna;}intGetb(){returnb;}};intmain(){char*p1="abcd",*p2="weirong";intd1=6,d2=8;XCDx(p1,d1),y(p2,d2);cout<<strlen(x.Geta())+y.Getb()<<end1;return0;}運行時的輸出結果是()。A、12B、16C、14D、11標準答案:A知識點解析:由類XCD的定義可知,成員函數Geta()返回的是字符串的長度,Getb0返回的是參數b的值。在主函數中strlen(x.Geta(》的值等于4,y.Getb()的值等于8,所以輸出兩者的和為12。19、在下列枚舉符號中,用來表示“相對于當前位置”文件定位方式的是()。A、ios_base∷curB、ios_base∷begC、ios_base∷outD、ios_base∷end標準答案:A知識點解析:C++流的定位方式(也就是指針移動方式)有三種,被定義為ios_base∷seek_dir中的一組枚舉符號:ios_base∷beg相當于文件首;ios_base∷cur相當于當前位置(負數表示當前位置之前);ios_base∷end相對于文件尾。20、下列是重載乘法運算符的函數原型聲明,其中錯誤的是()。A、MyClassoperator*(double,double);B、MyClassoperator*(double,MyClass);C、MyClassoperator*(MyClass,double);D、MyClassoperator*(MyClass,MyClass);標準答案:A知識點解析:此題考查的是運算符重載。本題中,選項A重載運算符“-”使用的形參是兩個double,而系統(tǒng)中的“*”運算原本就能計算兩個double,所以這樣違反了重載函數的原則,當執(zhí)行a*b這樣的表達式時,系統(tǒng)不能識別是否執(zhí)行運算符重載函數。故答案是A選項。21、有如下函數模板定義:template<classT>Tfunc(Tx,Ty){retumx*x+y*y;}在下列對func的調用中,錯誤的是()。A、func(3,5);B、func(3.0,5.5);C、func(3,5.5);D、func<int>(3,5.5);標準答案:C知識點解析:此題考查的是函數模板的使用。引用模板函數和引用~般函數在語法形式上基本相同。需要注意的是說明一個函數模板后,當編譯系統(tǒng)發(fā)現有一個對應的函數調用時,將根據實參中的類型來確認是否匹配函數模板中的對應形參。本題C選項中,編譯系統(tǒng)從第一個參數“3”獲得信息“int”和從第二個參數獲得信息“double”兩者矛盾,錯誤;A、B選項正確;D選項中,函數名后的<int>是模板實參表,編譯系統(tǒng)會將double型的形參“5.5”自動轉化成int類型。22、下列有關運算符重載的敘述中,正確的是()。A、運算符重載是多態(tài)性的一種表現B、C++中可以通過運算符重載創(chuàng)造新的運算符C、C++中所有運算符都可以作為非成員函數重載D、重載運算符時可以改變基結合性標準答案:A知識點解析:此題考查的是運算符重載。C++中運算符重載是多態(tài)性的一種表現;運算符重載是針對C++原有運算符進行的,不可能通過重載創(chuàng)造出新的運算符;除了“.”、“.*”、“->”、“::”、“?:”這五個運算符外,其它運算符都可以重載;但“=”“[]”“->”及所有的類型轉換運算符只能作為成員函數重載,運算符重載不可改變其結合性、操作數個數和優(yōu)先級。23、下列控制對齊方式的操作符中,錯誤的是()。A、internalB、centerC、leftD、fight標準答案:B知識點解析:對齊方式的控制操作符left的含義是在設定的寬度內左對齊輸出,右端填已設定的填充字符:right(此為默認設置)在設定的寬度內右對齊輸出;intemal在設定的寬度內右對齊輸出,但若有符號(-或+),符號置于最左端。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、算法的效率只與問題的規(guī)模有關,而與數據的存儲結構無關B、算法的時間復雜度是指執(zhí)行算法所需要的計算工作量C、數據的邏輯結構與存儲結構是一一對應的D、算法的時間復雜度與空間復雜度一定相關標準答案:B知識點解析:算法的時間復雜度是指執(zhí)行算法所需要的計算工作量。算法的工作量用算法所執(zhí)行的基本運算的次數來度量,而算法所執(zhí)行的基本運算次數是問題規(guī)模的函數;算法的空間復雜度一般是指執(zhí)行這個算法所需要的內存空間。算法的時間夏雜度與空間復雜度并不相關。數據的邏輯結構就是數據元素之間的邏輯關系,它是從邏輯上描述數據元素之間的關系,是獨立于計算機的:數據的存儲結構是研究數據元素和數據元素之間的關系如何在計算機中表示,它們并非一一對應。算法的執(zhí)行效率不僅與問題的規(guī)模有關,還與數據的存儲結構有關。2、下列描述中正確的是()。A、數據的邏輯結構與存儲結構必定是一一對應的B、由于計算機存儲空間是向量式的存儲結構,因此,數據的存儲結構一定是線性結構C、程序設計語言中的數據一般是順序存儲結構,因此,利用數組只能處理線性結構D、以上三種說法都不對標準答案:D知識點解析:數據的邏輯結構是指反映數據元素之間邏輯關系的數據結構。數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構(也稱數據的物理結構)。一般來說,一種數據的邏輯結構根據需要可以表示成多種存儲結構,常用的存儲結構有順序、鏈接、索引等。3、下列選項中,正確的C++標識符是()。A、6_groupB、group~6C、age+3D、_group_6標準答案:D知識點解析:C++中標識符的命名遵循如卜規(guī)則:不能是C十十關鍵字,第一個字母必須是字母或下劃線,中間不能有空格,變量名中不能包括“.”、“:”、“,”、“”’、“””+.之類的特殊符號??傊畼俗R符中除了能使用26個英文大小寫字母和數字外,只能使用下劃線“一”。4、設一棵完全二叉樹共有700個結點,則此二叉樹中的葉子結點數為()。A、85B、120C、250D、350標準答案:D知識點解析:①具有n個結點的完全二叉樹的深度為[long2n]+1,計算出該完全二叉樹的深度為10。②設度為0的結點(即葉子結點)為n0,度為1的結點為n1,度為2的結點為n2,總結點數為n,深度為k。n=n1+n2+n0,由于n0=n2+1則n2=n0-1,故n=n1+n0-1+n0=n1+2n0-1。由于完全二叉樹中度為1的結點數只有兩種可能:0或1。③假設度為1的結點數為0即滿二叉樹,根據滿二叉樹的定義,其2m-1個結點,根據以上計算所得的深度10來計算,應有210-1=1024-1=1023個結點,顯然與題目中700個結點不符。因此,度為1的結點數必然為1。故n=n1+2n0-1=1+2n0-1=2n0,則n0=n/2=700/2=350。5、若字符指針P所指向的字符串為"abcdefg",在執(zhí)行語句()。char*ap=newchar[strlen(p)+1];之后,ap指向的字符數組的元素個數為A、9B、8C、7D、6標準答案:B知識點解析:字符指針p所指向的字符串為"abcdefg",所以函數strlen(p)的值等于7,再加1,等于8。6、下列選項中屬于面向對象設計方法主要特征的是A、繼承B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:面向對象設計方法的豐要特征有封裝性、繼承性和多態(tài)性。而結構化程序設計方法的主要原則有自頂向下,逐步求精,模塊化.限制使用goto語句。7、軟件設計中模塊劃分應遵循的準則是()。A、低內聚低耦合B、高內聚低耦合C、低內聚高耦合D、高內聚高耦合標準答案:B知識點解析:耦合性和內聚性是模塊獨立性的兩個定性標準,各模塊的內聚性越強,則耦合性越弱。軟件設計應該遵循高內聚低耦合。8、下面敘述中錯誤的是()。A、軟件測試的目的是發(fā)現錯誤并改正錯誤B、對被調試的程序進行“錯誤定位”是程序調試的必要步驟C、程序調試通常也稱為DebugD、軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性標準答案:A知識點解析:軟件測試是為了發(fā)現錯誤而執(zhí)行程序的過程。軟件測試要嚴格執(zhí)行測試計劃,排除測試的隨意性。程序調試通常也稱Debug,對被調試的程序進行“錯誤”定位是程序調試的必要步驟。9、已知枚舉類型定義語句為:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};則下列敘述中錯誤的是()。A、枚舉常量NAME的值為1B、枚舉常量NUMBER的值為1C、枚舉常量MINUS的值為6D、枚舉常量PRINT的值為10標準答案:A知識點解析:此題考查的是C++語言的數據類型。第一個枚舉常量的值為0;允許程序顯示的定義中指定部分或全部枚舉常量的值,枚舉常量默認時,在前一枚舉常量值的基礎上以此增1。10、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;d1.data=0;∥①d2.data=0;∥②return0;}下列關于程序編譯結果的描述中,正確的是()。A、①②皆無編譯錯誤B、①有編澤錯誤,②無編譯錯誤C、①無編譯錯誤,②有編譯錯誤D、①②皆有編譯錯誤標準答案:C知識點解析:保護繼承的類Dervied2不能訪問基類Base中的公共數據成員data。11、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){intf,f1=0,f2=1;for(inti=3;i<=6;i++){f=f1+f2;f1=f2;f2=f;}cout<<f<<end1;return0;}運行時的輸出結果是()。A、2B、3C、5D、8標準答案:C知識點解析:在主函數中for循環(huán)語句執(zhí)行4次,第一次循環(huán)結束時,變量f的值等于l,f1的值等于1,f2的值等于1:第二次循環(huán)結束時,變量f的值等于2,fl的值等于1,f2的值等于2;第三次循環(huán)結束時,變量f的值等于3,f1的值等于2,f2的值等于3;第四次循環(huán)結束時,變量f的值等于5,f1的值等于3,f2的值等于5;結束循環(huán)。12、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout<A、編譯出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數標準答案:D知識點解析:此題考查的是函數參數的傳遞。C++語言中,函數在傳遞參數時,總是將實參的值傳遞給被調用函數的形參,即傳值調用。因此,在函數中對形參所作的任何操作都不會改變實參的值。13、有如下程序:#inc1ude<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){retumn;}intget()const{returnn+1,}};intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();+return0;}執(zhí)行后的輸出結果是()。A、55B、57C、75D、77標準答案:B知識點解析:此題考查的是常成員函數和函數的重載。所謂函數重載,是指同一個函數名可以對應著多個函數實現?!銓ο骯既可以調用普通成員函數get,也可以調用常成員函數get,由于常成員函數不能更新對象的數據成員,所以題目中通過對象a調用的函數為常成員函數:常對象b只能調用普通成員函數。14、有如下類定義:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:Foo(){}//③intvalue=0;//④};其中存在語法錯誤的行是()。A、①B、②C、③D、④標準答案:D知識點解析:此題考查的是類的定義。C++語言規(guī)定,在類體內不允許對所定義的數據成員進行初始化。15、下列敘述中,錯誤的是()。A、false是一個邏輯型常量B、b是一個字符型常量C、365是一個int常量D、3.1415926是一個double常量標準答案:B知識點解析:字符常量簡稱字符,它以單引號作為起止符號,中問有一個或若干個字符。或者以“\”開頭的包括多個字符的字符序列也符合規(guī)定的字符常量。16、下列語句中錯誤的是()。A、constinta;B、constinta=10;C、eonstint*point=0;D、constint*point=newint(10);標準答案:A知識點解析:由關鍵字const聲明符號常量的同時必須為其賦初值。17、已知函數f的原型是“voidflint*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調用語句中,正確的是()。A、f(v1,V2);B、f(v1,&V2);C、f(&v1,v2);D、f(&v1,&v2);標準答案:C知識點解析:在函數f的形參表達式中第一個形參為整型指針變量,第二個為整型引用變量,所以用實參v1的指針初始化第一個形參,用實參v2初始化第二形參。18、下列有關繼承和派生的敘述中,正確的是()。A、如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員B、派生類的成員函數可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現基類的一個純虛函數,則該派生類是一個描象類標準答案:D知識點解析:此題考查的是繼承和派生。無論是哪種繼承方式,派生類都能夠訪問基類的公有和保護成員,而不能訪問基類的私有成員,故選項A和B錯誤;公有繼承時,基類的對象不可作為派生類的對象處理,即基類對象不可賦值給派生類對象,所以選項C錯誤。19、將運算符“+”重載為非成員函數,下列原型聲明中,錯誤的是()。A、MycloCkoperator+(MyClock,long);B、MycloCkoperator+(MyClock,MyClock);C、MycloCkoperator+(long,long);D、MycloCkoperator+(long,MyClock);標準答案:C知識點解析:運算符重載不能有二義性,故選項C)不能區(qū)分運算符的準確含義。20、有類定義如下:classType{public:Type(inti=0);Typeoperator-(int);friendTypeoperator+(Type,Type);private:intval;};若有對象定義Typec1;則下列語句序列中,錯誤的是()。A、Type(3)+c1;B、c1+Type(3);C、3-c1;D、c1-3:標準答案:C知識點解析:由于在類Type中對“-”進行了重載,所以根據“-”重載的形式定義,c1-3是正確的,而3-c1是錯誤的表達式。21、下列關于函數模板的描述中,錯誤的是()。A、從模板實參表和從模板函數實參表獲得信息矛盾時,以模板實參的信息為準B、對于常規(guī)參數所對應的模板實參,任何情況下都不能省略C、虛擬類型參數沒有出現在模板函數的形參表中時,不能省略模板實參D、模板參數表不能為空標準答案:D知識點解析:在調用一個模板函數時,如果編譯系統(tǒng)能夠從模板實參表判斷其中或全部虛擬類型參數對應的實際參數,而且它們正好是參數表中最后的若干參數,則模板實參表中的那幾個參數可以省略。22、有如下模板聲明:templateclassA;下列聲明中,與上述聲明不等價的是()。A、templateclassA;B、templateclassA;C、templateclassA;D、templateclassA;標準答案:D知識點解析:在類模板中,數據類型本身成了它的參數,因而是一種參數化類型的類,是類的生成器。聲明一個類模板的格式是:template<<模板形參表聲明>><類聲明>,<模板形參表聲明>是由一個或多個模板形參組成。對于本題來說,模板形參表中包括類型T1和T2兩個類型參數,而在選項D中T1說明其類型,而T2沒有說明其類型,與題干中的模板說明不一致。23、要利用C++流實現輸入輸出的各種格式控制,必須在程序中包含的頭文件是()。A、fstreamB、istrearaC、ostreamD、iomanip標準答案:D知識點解析:要使用setw、fixed等操作符,須包含iomanip這個文件。24、下列語句分別是不同程序中的第一個輸入輸出語句,若去掉其中的“<A、cout<B、cout<C、cout<D、cout<標準答案:B知識點解析:此題考查的是C++流。setfill0作用是設置填充字符:left是使輸出數據在指定寬度內左對齊:setw()的作用是設置輸入輸出寬度,且只對當前一次有效。25、下列關于輸入流類成員函數getline()的描述中,錯誤的是()。A、該函數是用來讀取鍵盤輸入的字符串的B、該函數讀取的字符串長度是受限制的C、該函數讀取字符串時,遇到終止符便停止D、該函數讀取字符串時,可以包含空格標準答案:A知識點解析:此題考查的是getline0函數。getline()函數的原型為:istream_type&getline(char_type*s,streamsize,char_typedelim);。其功能是從當前輸入位置開始提取字符存入s所指向的具有n個字節(jié)的字符空間中。遇到以下情況時停止:已提取并存儲了n一1個字符;到流尾,無字符可??;下一個要提取的字符等于結束標志字符delim。故選項B、C、D都是正確的。getline()函數不僅可以用來讀取鍵盤輸入的字符串,還可以用來讀取文件等數據流,故選項A錯誤。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共22題,每題1.0分,共22分。)1、算法的有窮性是指A、算法程序的運行時間是有限的B、算法程序所處理的數據量是有限的C、算法程序的長度是有限的D、算法只能被有限的用戶使用標準答案:A知識點解析:算法的有窮性,是指算法必須能在有限的時間內做完,即算法必須能在執(zhí)行有限個步驟之后終止。2、下列敘述中正確的是()。A、算法就是程序B、設計算法時只需要考慮數據結構的設計C、設計算法時只需要考慮結果的可靠性D、以上三種說法都不對標準答案:D知識點解析:所謂算法是指解題方案的準確而完整的描述。是一組嚴謹地定義運算順序的規(guī)則,并且每一個規(guī)則都是有效的,且是明確的,此順序將在有限的次數下終止。算法不等于程序,也不等于計算方法。設計算法時不僅要考慮對數據對象的運算和操作,還要考慮算法的控制結構。3、由于常對象不能被更新,因此()。A、通過常對象只能調用它的常成員函數B、通過常對象只能調用靜態(tài)成員函數C、常對象的成員都是常成員D、通過常對象可以調用任何不改變對象值的成員函數標準答案:A知識點解析:本題考查常對象的基本知識,常對象只能調用它的常成員函數,而不能調用非const函數,常對象的成員函數不一定都是常成員函數,只需保證其數據成員是常數據成員即可。所以本題選A。4、下列關于棧的描述中正確的是A、在棧中只能插入元素而不能刪除元素B、在棧中只能刪除元素而不能插入元素C、棧是特殊的線性表,只能在一端插入或刪除元素D、棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素標準答案:C知識點解析:棧是限定在一端進行插入與刪除的線性表,在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。5、字符串“a+b=12\n\t”的長度為()。A、12B、10C、8D、6標準答案:C知識點解析:題目給出的字符串含有7個字符,再加字符串的結束字符,所以共8個字符。6、下列排序方法中,最壞情況下比較次數最少的是()。A、冒泡排序B、簡單選擇排序C、直接插入排序D、堆排序標準答案:D知識點解析:冒泡排序、簡單選擇排序和直接插入排序法在最壞的情況下比較次數為:n(n—1)/2。而堆排序法在最壞的情況下需要比較的次數為O(log2n)。其中堆排序的比較次數最少。7、計算斐波那契數列第n項的函數定義如下:intfib(intn){if(n==0)return1;elseif(n==1)return2;elsereturnfib(n-1)+fib(n-2);}若執(zhí)行函數調用表達式fib(2),函數fib被調用的次數是()。A、1B、2C、3D、4標準答案:B知識點解析:斐波那契數列是遞歸函數,所以fib(2)=fib(1)+fib(0)=2+1=3。因而執(zhí)行函數調用表達式fib(2)時,函數fib被調用的次是2次。8、下列程序的輸出結果是()。#mclude<iostream>usingnamespacestd;voidfun(inn&r){r*=2;}intmain(){intn=50;fun(n);cout<<n<<end1;return0;}A、0B、20C、50D、100標準答案:D知識點解析:題中主程序中首先定義整型變量n=50,然后調用函數fun,實際參數為n。函數fun中參數為引用,為地址。即函數中形參的改變會影響實參的值,函數的功能是參數乘以2。9、數據字典(DD)所定義的對象都包含于()。A、數據流圖(DFD圖)B、程序流程圖C、軟件結構圖D、方框圖標準答案:A知識點解析:數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明。10、下列關于數據庫設計的敘述中,正確的是()。A、在需求分析階段建立數據字典B、在概念設計階段建立數據字典C、在邏輯設計階段建立數據字典D、在物理設計階段建立數據字典標準答案:A知識點解析:數據庫設計目前一般采用生命周期法,即將整個數據庫應用系統(tǒng)的開發(fā)分解成目標獨立的若干階段。分別是:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、編碼階段、測試階段、運行階段、進一步修改階段。數據字典是對系統(tǒng)中數據的詳盡描述,是各類數據屬性的清單。對數據設計來講,數據字典是進行詳細的數據收集和數據分析所獲得的主要結果。11、已知類Myclass的定義如下classMyClass{public:voidfunction1(MyClass&c){cout<A、function1B、function2C、function3D、function4標準答案:D知識點解析:funcyion4()函數作為類的靜態(tài)成員函數,不能直接訪問類中說明的非靜態(tài)成員,即cout<12、數據庫系統(tǒng)的核心是()。A、數據模型B、數據庫管理系統(tǒng)C、數據庫D、數據庫管理員標準答案:B知識點解析:數據庫管理系統(tǒng)(DBMS)是數據庫的機構,它是一種系統(tǒng)軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等。所以,數據庫管理系統(tǒng)是數據系統(tǒng)的核心。13、數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一些特定的圖符構成。下面圖符名標識的圖符不屬于數據流圖合法圖符的是A、控制流B、加工C、數據存儲D、源和潭標準答案:A知識點解析:數據流圖中的主要圖形元素有加工(轉換)、數據流、存儲文件(數據源)、源和潭等。14、下列關于C++函數的敘述中,正確的是()。A、每個函數至少要具有一個參數B、每個函數都必須返回一個值C、函數在被調用之前必須先聲明D、函數不能自己調用自己標準答案:C知識點解析:此題考查的是函數的性質。當調用無參函數時主函數并不將數據傳送給被調函數,且可以帶回或不帶回函數值。函數的遞歸調用就是直接或間接的調用自己。15、有如下程序段:inti=5:while(inti=0){cout<<ˊ*ˊ;i--;}運行時輸出“*”的個數是()。A、0B、1C、5D、無窮標準答案:A知識點解析:因為while循環(huán)中,因為i的值等于0,所以while循環(huán)體一次也不執(zhí)行。因而運行時輸出“*”的個數是0。16、有如下程序:#include<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){returnn;}intget()const{returnn+1;}};intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();return0;}執(zhí)行后的輸出結果是()。A、55B、57C、75D、77標準答案:B知識點解析:此題考查的是常成員函數和函數的重載。所謂函數重載,是指同一個函數名可以對應著多個函數實現。一般對象a既可以調用普通成員函數get,也可以調用常成員函數get,由于常成員函數不能更新對象的數據成員,所以題目中通過對象a調用的函數為常成員函數;常對象b只能調用普通成員函數。17、下面是重載為非成員函數的運算符函數原型,其中錯誤的是()。A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator—(Fraction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);標準答案:C知識點解析:此題考查的是運算符重載。C++語言規(guī)定,“=”運算符只能作為成員函數重載。18、字面常量42、4.2、42L的數據類型分別是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long標準答案:C知識點解析:此題考查的知識點是字面常量。對于整型字面常量,只要沒有超過C++中整數所能表示的范圍,C++將自動按整數來存儲此數,也可以通過在整型字面常量后添加u或l來指定無符號整數或長整數來存儲;對于實型字面常量,C++將自動按照雙精度數來存儲,也可以通過在實型字面常量后添加f來指定按單精度數存儲。19、若要對Data類中重載的加法運算符成員函數進行聲明,下列選項中正確的是()。A、Data+(Data);B、Dataoperator+{Data};C、Data+operator{Data};D、operator+(Data,Data);標準答案:B知識點解析:“+”是一個二元運算符,因此作為成員函數重載時參數表中只有一個參數,對應于第二個操作數,而第一個操作數是對象本身。運算符函數的函數名是由運算符前加關鍵字operator構成的。20、下列關于派生類構造函數和析構函數的說法中,錯誤的是()。A、派生類的構造函數會隱含調用基類的構造函數B、如果基類中沒有缺省構造函數,那么派生類必須定義構造函數C、在建立派生類對象時,先調用基類的構造函數,再調用派生類的構造函數D、在銷毀派生類對象時,先調用基類的析構函數,再調用派生類的析構函數標準答案:D知識點解析:此題考查的是派生類的構造函數和析構函數。在撤銷派生類對象時,析構函數的執(zhí)行過程和構造函數嚴格相反,即:對派生類新增普通成員進行清理;調用成員對象析構函數,調用基類析構函數對基類進行清理。21、下列關于虛函數的說明中,正確的是()。A、從虛基類繼承的函數都是虛函數B、虛函數不得是靜態(tài)成員函數C、只能通過指針或引用調用虛函數D、抽象類中的成員函數都是虛函數標準答案:B知識點解析:此題考查的是虛函數的概念。在成員函數的聲明前面加上viual關鍵字,即可把函數聲明為虛函數。虛函數可以是另一個函數的友元函數而不能是靜態(tài)成員函數。22、語句ofstreamf("SALARY.DAT",ios_base::app);功能是建立流對象f,并試圖打開文件SALARY.DAT與f關聯,而且()。A、若文件存在,將其置為空文件;若文件不存在,打開失敗B、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D、若文件存在,打開失??;若文件不存在,建立一個新文件標準答案:B知識點解析:此題考查的是文件打開模式。文件打開模式iso_base::app是為添加數據而打開(總是在尾部寫),故只有選項B說法正確。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共24題,每題1.0分,共24分。)1、下列敘述中正確的是A、棧是一種先進先出的線性表。B、隊列是一種后進先出的線性表C、棧與隊列都是非線性結構D、以上三種說法都不對標準答案:D知識點解析:棧是先進后出的線性表,隊列是先進先出的線性表,二者均為線性結構。2、若字符指針P所指向的字符串為”abcdefg”,在執(zhí)行語句()。Char*ap=newchar[strlen(p)+1];之后,ap指向的字符數組的元素個數為A、9B、8C、7D、6標準答案:B知識點解析:字符指針p所指向的字符半為“abcdefg”,所以函數strlen(p)的值等于7,再加l,等于8。3、下列選項中不屬于結構化程序設計方法的是()。A、自頂向下B、逐步求精C、模塊化D、可復用標準答案:D知識點解析:結構化程序設計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化,限制使用goto語句。自項向下是指程序設計時應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。逐步求精是指對復雜問題應設計一些子目標過渡,逐步細化。模塊化是把程序要解決的總目標先分解成分目標,再進一步分解成具體的小目標,把每個小目標稱為一個模塊??蓮陀眯允侵杠浖夭患有薷某缮约有薷谋憧稍诓煌能浖_發(fā)過程中重復使用的性質。軟件可復用性是軟件工程追求的目標之一,是提高軟件生產效率的最主要方法,不屬于結構化程序設計方法。4、在關系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的()。A、連接碼B、關系碼C、外碼D、候選碼標準答案:D知識點解析:在關系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個作為用戶使用的鍵稱為主鍵或主碼。5、下面描述中,不屬于軟件危機表現的是()。A、軟件過程不規(guī)范B、軟件開發(fā)生產率低C、軟件質量難以控制D、軟件成本不斷提高標準答案:A知識點解析:軟件危機主要表現在以下6個方面:①軟件需求的增長得不到滿足。②軟件開發(fā)成本和進度無法控制。③軟件質量難以保證。④軟件不可維護或維護程度非常低。⑤軟件的成本不斷提高。⑥軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。6、以下關鍵字不能用來聲明類的訪問權限的是()。A、publicB、staticC、protectedD、private標準答案:B知識點解析:類的成員訪問權限有3種:public(公用)、protected(保護)、private(私有)。7、設二叉樹的后序序列為DGHEBIJFCA,中序序列為DBGEHACIFJ。則前序序列為A、ABDEGHCFIJB、JIHGFEDCBAC、GHIJDEFBCAD、ABCDEFGHIJ標準答案:A知識點解析:后序遍歷中,最后一個字母是根結點,也就是A是根結點:在中序遍歷中,根結點前面的是左子樹、后面的是右子樹。后序中C在A前面、中序中C在A的后面,說明C是A的右結點;后序中F在C的前面、中序中在C后面,且后序和中序中,I均在F前面由此可確定,I為F的左結點,F為C的右結點。同C理J為F的右結點。后續(xù)中B為左子樹的根結點,因此B為A的左結點,以此劃分,在中序中B前面的D為左結點,后面的GEH為右子樹,后序中,E在最后,應為剩下3個結點的根結點,也就是B的右子樹,再根據中序中的順序,可得出G為E的左結點.H為E的右結點。由此可畫出這個二叉樹,然后根據二叉樹可的前序序列為ABDEGHCFIJ。8、下列選項中屬于面向對象設計方法主要特征的是A、繼承B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:面向對象設計方法的豐要特征有封裝性、繼承性和多態(tài)性。而結構化程序設計方法的主要原則有自頂向下,逐步求精,模塊化.限制使用goto語句。9、下列描述中正確的是()。A、軟件測試應該由程序開發(fā)者來完成B、程序經調試后一般不需要再測試C、軟件維護只包括對程序代碼的維護D、以上三種說法都不對標準答案:D知識點解析:為了達到好的測試效果,應該由獨立的第三方進行測試工作。因為從心理學角度講,程序人員或設計方在測試自己的程序時,要采取客觀的態(tài)度是會不同程度地存在障礙的,所以選項A)錯誤。在程序調試時,修改了一個錯誤的同時可能引入了新的錯誤,解決的辦法是在修改了錯誤之后,必須進行回歸測試,所以選項B)錯誤。所謂軟件維護,就是將交付的軟件投入運行,并在運行使用中不斷地維護,根據新提出的需求進行必要而且可能的擴充和刪改,所以選項C)錯誤。10、軟件生命周期是指()。A、軟件產品從提出、實現、使用維護到停止使用退役的過程B、軟件從需求分析、設計、實現到測試完成的過程C、軟件的開發(fā)過程D、軟件的運行維護過程標準答案:A知識點解析:通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。11、有三個關系R、S和T如下:由關系R和S通過運算得到關系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關系R與S經交運算后所得到的關系是由那些既在R內又在S內的有序組組成的,記為R∩S。12、下列符號中不屬于C++關鍵字的是()。A、friendB、namespaceC、continueD、byte標準答案:D知識點解析:此題考查的是C++語言的關鍵字。Friend是聲明友元函數或友元類時用到的關鍵字;namespace是定義或使用名字空間時用到的關鍵字;continue是終止本次循環(huán)直接開始下一次循環(huán)所用到的關鍵字;byte是字節(jié)的意思,它不是C++語言中的關鍵字。13、建立一個有成員對象的派生類對象時,各構造函數體的執(zhí)行次序為()。A、派生類、成員對象類、基類B、成員對象類、基類、派生類C、基類、成員對象類、派生類D、基類、派生類、成員對象類標準答案:C知識點解析:建立派生類對象的時候,構造函數的執(zhí)行順序如下:執(zhí)行基類的構造函數,調用的順序按照基類被繼承時候的順序(白左陽右)。然后是執(zhí)行成員對象的構造函數,調用順序按照各個成員對象在類中的聲明順序(自上而下),最后是執(zhí)行派生類的構造函數。14、要定義一個具有5個元素的一維數組vect,并使其各元素的初值依次是30,50,—88,0和0,則下列定義語句中錯誤的是()。A、intvect[]={30,50,—88};B、intvect[l={30,50,—88,0,0};C、intvect[5]={30,50,—88};D、intvect[5]={30,50,—88,0,0};標準答案:A知識點解析:此題考查的是一維數組定義時的初始化。當數組聲明時沒有給出數組的大小但是有初始化列表時,數組的大小就由列表中元素的個數來確定。所以選項A中數組只定義3個元素,不符合題目。15、若一個函數的原型為“int*Xfun1(intx,int&y,charz);”,則該函數的返回值類型為()。A、int*B、intC、int&D、char標準答案:A知識點解析:由“int*Xfun1(intx,int&y,charz);”的定義可知,其返回值為指向int指針的函數。16、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標準答案:B知識點解析:此題考查的是基本類型和派生型。C++語言中,基本類型的字長及其取值范圍可以放大和縮小,改變后的類型就叫做基本類型和派生類型。本題A選項中,unsignedlongint的省略形式為unsignedlong;選項B中,signedshortint的省略形式是short;選項C中,unsignedshort的省略形式是unsignedshort;選項D中,shortint的省略形式short。17、在下列函數原型中,可以作為類AA構造函數的是(>。A、voidAA(int);B、intAA();C、AA(int)const;D、AA(int);標準答案:D知識點解析:此題考查的是構造函數的概念。構造函數是類的一個特殊成員函數,它與類同名,并且沒有返回值。選項A、B不符合要求。選項C中函數AA,會更新對象的數據成員。18、若有如下類聲明classMyclass{public:Myclass(){cout<<l;)};執(zhí)行下列語句Myclassa,b[2],*p[2]:以后,程序的輸出結果是()。A、11B、111C、1111D、11111標準答案:B知識點解析:此題考查的是對象的構造。本題共聲明了一個MyClass對象a,一個包含2個MyClass對象的數組b和…個包含2個MyClass對象指針的數組p,所以一共創(chuàng)建了3個MyClass類的對象,即調用了3次構造函數。19、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assONE{intC;public:ONE():c(O){cout<<l;)ONE(intn):c(n){cout<<2;)};c1assTWO{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<3;}};intmain(){TWOt(4);return0;}運行時的輸出結果是()。A、3B、23C、123D、213標準答案:C知識點解析:由類TWO的定義可知,其成員為類ONE的兩個對象onel和one2。所以在主函數中構建類TWO的對象t(4)時,先后調用類ONE的構造函數ONE():(0)(count<<1,}和ONE(intn):c(n){cout<<2:j輸出12,然后再調用類TWO的構造函數TWO(intm):one2(m){cout<<3;},輸出3。20、在下列原型所示的C++函數中,按“傳值”方式傳遞參數的是()。A、voidfi(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);標準答案:A知識點解析:傳值方式是將實參復制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數的形參看做是函數的局部變量。其中BC選項為按低值傳遞D選賢為按引用傳遞。21、若要重載+、=、<<、==和[]運算符,則必須作為類成員重載的運算符是()。A、+和=B、=和<<C、==和<<D、:和[]標準答案:D知識點解析:=、[]、()、->以及所有的類型轉換運算符只能作為成員函數重載,而且不能是針對枚舉類型操作數的重載。22、若有如下類定義:classB{voidfun1(){}protected:doublevar1;public:voidfun2(){)};classD:publicB{protected:voidfun3(){}};已知obj是類D的對象,下列句中不違反類成員訪問控制權限的是()。A、obj.fun1();B、obj.var1;C、obj.fun2();D、obj.fun3();標準答案:C知識點解析:此題考查的是基類成員在派生類中的訪問屬性。派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。派生類從基類公有繼承時,基類的公有成員和保護成員在派生類中仍然是公有成員和保護成員;派生類從基類私有繼承時,基類的公有成員和保護成員在派生類中都變成私有成員;派生類從基類保護繼承時,基類的公有成員在派生類中變成保護成員,鏨類的保護成員在派生類中仍然是保護成員。根據以上分析可知,本題中只有從B類繼承的fun2()為公有屬性,故選C選項。23、在類中重載賦值運算符時,應將其聲明為類的()。A、靜態(tài)函數B、友元函數C、成員函數D、構造函數標準答案:C知識點解析:賦值運算符只能作為類的成員函數重載。24、下列有關C++流的敘述中,錯誤的是()。A、C++操作符setw設置的輸出寬度永久有效B、C++操作符endl可以實現輸出的回車換行C、處理文件I/O時,要包含頭文件fstreamD、進行輸入操作時,eof()函數用于檢測是否到達文件尾標準答案:A知識點解析:此題考查的是C++流。C++操作符setw()的作用是設置輸入輸出寬度,且只對當前一次有效,并非永久有效,故選項A敘述錯誤。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共32題,每題1.0分,共32分。)1、算法的有窮性是指A、算法程序的運行時間是有限的B、算法程序所處理的數據量是有限的C、算法程序的長度是有限的D、算法只能被有限的用戶使用標準答案:A知識點解析:算法的有窮性,是指算法必須能在有限的時間內做完,即算法必須能在執(zhí)行有限個步驟之后終止。2、有如下程序:#include<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}-TestO{n-=3;}staticintgetNum(){returnn;}private:staticintn:};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<’’n=’’<<Test::getNum()<<end1;return0;}執(zhí)行后的輸出結果是()。A、n=0B、n=1C、n=2D、n=3標準答案:A知識點解析:語句Test*p=newTest;會調用類的構造函數Test(){n+=2;},使n的值由原來的1變?yōu)?,然后deletep調用類的析構函數~Test(){n-=3;},因為n是static型變量,所以會在3的基礎上減3使得輸出結果為0。3、若AA為一個類,a為該類的私有整型數據成員,getA0為該類的一個非靜態(tài)公有成員函數,功能是返回a的值。如果X為該類的一個對象,要在類外訪問X對象中a的值,正確的訪問格式為()。A、AA.getA()B、x。getA()C、x.aD、AA::a標準答案:B知識點解析:要在類外訪問x對象中a的值,必須調用類的非靜態(tài)公有成員函數getA()。4、面向對象方法中,繼承是指A、一組對象所具有的相似性質B、一個對象具有另一個對象的性質C、各對象之間的共同性質D、類之間共享屬性和操作的機制標準答案:D知識點解析:面向對象方法中,繼承是使用已有的類定義作為基礎建立新類的定義技術。廣義地說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們。5、有如下程序:#includeusingnamespacestd;classA{public:A(inti):r1(i){}voidprint(){cout<<’E’<*r1<<’一’;}private:intr1;};intmain(){Aa1(2);constAa2(4);a1.print();a2.print();return0;}運行時的輸出結果是()。A、運行時出錯B、E2-C16-C、C4-C16D、E2-E4-標準答案:B知識點解析:類A包括一個整型數據成員r1,一個一般成員函數print(),一個常成員函數print()const。在主函數中定義了對象a1,并對r1的值賦2和常對象a2,并對r1的值賦4,在C++中,常對象不能被更新,所以常對象只能調用類的常成員函數,而不能調用一般成員函數。而一般的對象,既可以調用一般成員函數也可以調用常成員函數。所以在本題中,當執(zhí)行a1.print()時,輸出為E2-,執(zhí)行a2.print()時,輸出為C16-。6、在下列double型常量表示中,錯誤的是()。A、E15B、.35C、3E5D、3E-5標準答案:A知識點解析:在C++中,科學計數法表示小數的方法:E(e)左右必須有數,且E(e)的右側只能為整數。7、關于虛函數,以下說法正確的是()。A、若在重定義虛函數時使用了virtual,則該重定義函數還是虛函數B、虛函數不能聲明為友元C、子類必須重定義父類的虛函數D、虛函數不能是static的標準答案:D知識點解析:在C++中,虛函數可以是友元函數,但不能是靜態(tài)成員。虛函數的重定義函數,無論是否使用virtual關鍵字,仍然是虛函數。所以答案選擇D。8、將以下程序寫成三目運算表達式是()。if(x<y)min=x;elserain=y;A、min=(x>y)?x:yB、min=(x<y)?x:yC、min=(x<y)x:yD、min=(x<y)?x,y標準答案:B知識點解析:題目中給出的程序是求x,y中的小值。即如果x小于y,那么min=x,否則min=y。條件運算符為“?:”,(x<y)?x:y是當x小于y時取x,否則取y。9、有如下程序:#include<iostream>usingnamespacestd;classXX{protected:intk;public:XX(intn=5):k(n){};~XX(){cout<<’’XX’’;}virtualvoidf()const=0;};inlinevoidXX::f()const{cout<<k+3;};classYY:publicXX{public:~YY(){cout<<’’YY’’;}voidf()const{cout<<k-3;XX::f();}};intmain(){XX&p=*newYY:p.f();delete&p;return0;}執(zhí)行上面的程序將輸出()。A、28XXB、28YYXXC、33XXD、-33XXYY標準答案:A知識點解析:類YY公有派生于類:XX,派生類對象可以替代基類對象向基類對象的引用進行賦值初始化,XX&p=*newYY語句定義了XX對象p引用,并用YY對象初始化,p并不是YY對象的別名,是XX基類對象的別名,故先調用基類XX的構造函數將k初始化為5,p.f()首先輸出k-3即2,然后調用XX::f()輸出k+3即8,delete&p刪除p,調用XX的析構函數輸出“XX”。10、關于new運算符的下列描述中,錯誤的是()。A、它可以用來動態(tài)創(chuàng)建對象和對象數組B、使用它創(chuàng)建的對象或對象數組可以通過運算符delete刪除C、使用它創(chuàng)建對象時要調用構造函數D、使用它創(chuàng)建對象數組時必須指定初始值標準答案:D知識點解析:用new創(chuàng)建對象是不用顯式調用構造函數的,它自己會自動調用。11、下列描述中正確的是A、為了建立一個關系,首先要構造數據的邏輯關系B、表示關系的二維表中各元組的每一個分量還可以分成若干數據項C、一個關系的屬性名表稱為關系模式D、一個關系可以包括多個二維表標準答案:C知識點解析:為了建立一個關系,首先要指定關系的屬性,所以選項A是錯誤的。表示關系的二維表中各元組的每一個分量必須是不可分的基本數據項,所以選項B是錯誤的。在關系數據庫中,把數據表示成_維表,而一個二維表就是一個關系,所以選項D足錯誤的。一個關系的屬性名表稱為該關系的關系模式,其記法為:<關系名>(<屬性名1>,<屬性名2>,…,<屬性名n>)。12、在下列原型所示的C++函數中,按“傳值”方式傳遞參數的是()。A、voidf1(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);標準答案:A知識點解析:傳值方式是將實參復制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數的形參看做是函數的局部變量。其中BC選項為按低值傳遞D選賢為按引用傳遞。13、下面是重載為非成員函數的運算符函數原型,其中錯誤的是()。A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator-(Fraction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);標準答案:C知識點解析:此題考查的是運算符重載。C++語言規(guī)定,“=”運算符只能作為成員函數重載。14、下列敘述中正確的是A、關系模式可以沒有候選關鍵字B、關系模式的候選關鍵字只能有1個C、關系模式必須有2個以上的候選關鍵字D、關系模式的候選關鍵字可以有1個或多個標準答案:D知識點解析:關系的描述稱為關系模式(RelationSchema),形式化地表示為:R(U,D,dom,F)。其中R為關系名,U為組成該關系的屬性名集合,D為屬性組U中屬性所來的域,dom為屬性向域的映象集合,F為屬性間數據的依賴關系集合。關系模式的候選關鍵字可以有1個或多個。15、已知函數fun的原型為intfun(int,int,int),下列重載函數原型中錯誤的是()。A、charfun(int,int),B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標準答案:D知識點解析:重載函數至少要在參數個數或參數類型上不同。而選項D中的函數與原函數只是函數類型不同,而其他完全相同(參數個數及類型),則不能作為重載函數來使用。16、下列運算符函數中,肯定不屬于類Value的成員函數的是()。A、Valueoperator+(Value);B、Valueoperator-(Value,Value);C、Valueoperator*(int);D、Valueoperator/(Value);標準答案:B知識點解析:運算符作為非成員函數時,由于沒有隱含this指針,因此所有的操作數必須出現在參數表中。對于第二個選項,出現了兩個操作數,必然是非成員函數,但是對于其他三個選項,有可能都是要求兩個操作數的成員函數。17、有如下函數模板定義:template<typenameT1,TypenameT2>T1Fun(T2n){returnn*5.0;)若要求以int型數據9作為函數實參調用該模板,并返回一個double型數據,則該調用應表示為()。A、FUN(9)B、FUN<9>C、FUN<double>[9]D、FUN<9>(double)標準答案:C知識點解析:根據函數模板的定義,在選項C的請用中,把double類型傳遞給T1,int型傳遞給T2。18、下列選項中,正確的C++表達式是()。A、counter++3B、element3+C、a+=bD、’a’=b標準答案:C知識點解析:在C++中由一個或多個操作數與操作符連接而成的有效運算式稱為表達式。選項C)是C++的合法表達式。19、若有下面的函數調用:fun(a+b,3,max(n-1,b))則fun的實參個數是()。A、3B、4C、5D、6標準答案:A知識點解析:此題考查的是函數的調用。C++中函數調用的一般形式為:函數名(實參表),其中實參表是用逗號分隔的一系列表達式。因此,本題中fun()函數的實參表由a+b、3和max(n-1,b)組成。20、有如下類和對象的定義:classConstants{public;staticdoublegetPl(){return3.1416;}};Constantsconstants;下列各組語句中,能輸出3.1416的是()。A、cout<<constants->getPI();和cout<<Constants::gerPI();B、cout<<constants.getPI();和cout<<Constants.getPI();C、cout<<constants->getaI();和cout<<Constants->getPI();D、cout<<constants.getPI();和cout<<Constants::getPI();標準答案:D知識點解析:此題考查的是靜態(tài)成員函數的引用。getPI()是類C0nstants的靜態(tài)成員函數。引用靜態(tài)成員函數可以有兩種形式:一是通過類名直接進行調用,例如類名::靜態(tài)成員函數名;另一種是用類的任何對象名進行調用其作用僅是通過對象名間接的指出類名,例如constants.getPI()選項D即是這種調用方式。21、有如下程序:#include<iostrcam>usingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);}protected:Chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列敘述中正確的是()。A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句①和②都出錯標準答案:C知識點解析:派生類Jazz不能訪問基類Music中的私有成員title。22、有如下程序:#includeusingnamespacestd;classInstrument{public:virtualvoidDisplay()=0:};classPiano:publicInstrument{public:voidDisplay(){/*函數體程序略*/}};intmain(){Instruments;Instrumen
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度手摩托俱樂部賽事冠名權買賣合同
- 2025年度科技成果轉化贈與協議書范文
- 2025年浸滲膠合作協議書
- 2025年度代駕服務行業(yè)競爭情報共享合同
- 2025年度商鋪租賃合同終止及租賃期滿退租協議
- 2025年度專業(yè)廚師團隊定制合作合同書
- 2025年度手房買賣合同(含糾紛解決機制)
- Module8教學設計海南 2024-2025學年外研版九年級英語上冊
- 肝移植術后護理診斷
- 金屬波紋管膨脹節(jié)(鋁)項目績效評估報告
- 員工調整薪酬面談表
- 輔警報名登記表
- 初中數學競賽試題匯編
- 外研版英語五年級下冊第一單元全部試題
- 培養(yǎng)小學生課外閱讀興趣課題研究方案
- 部編版四年級語文下冊課程綱要
- 【課件】第二單元第三節(jié)漢族民歌課件-2021-2022學年高中音樂人音版(2019)必修音樂鑒賞
- 高中人音版必修 音樂鑒賞20人民音樂家課件
- 圓二色譜儀操作規(guī)程培訓
- 華文出版社三年級下冊書法教案
- GB_T 30789.3-2014 色漆和清漆 涂層老化的評價 缺陷的數量和大小以及外觀均勻變化程度的標識 第3部分:生銹等級的評定
評論
0/150
提交評論