版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
國家二級C++機試(選擇題)模擬試卷3(共9套)(共209題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共23題,每題1.0分,共23分。)1、下列關于線性鏈表的敘述中,正確的是()。A、各數(shù)據(jù)結點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致B、各數(shù)據(jù)結點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)C、進行插入與刪除時,不需要移動表中的元素D、以上都不正確標準答案:C知識點解析:線性表的鏈式存儲結構稱為線性鏈表。在鏈式存儲結構中,存儲數(shù)據(jù)結構的存儲空間可以不連續(xù),各數(shù)據(jù)結點的存儲順序與數(shù)據(jù)元素之間的邏輯關系可以不一致,而數(shù)據(jù)元素之間的邏輯關系是由指針域來確定的。2、有如下說明:inta[10]={1,2,3,4,5,6,7,8,9,10},*P=a;則數(shù)值為9的表達式是()。A、*P+9B、*(P+8)C、*P+=9D、P+8標準答案:B知識點解析:本題考查指向數(shù)組的指針,本題中指針變量p指向數(shù)組a,那么,*p的值就是1,即表示數(shù)組的第一個元素,那么數(shù)值為9的表達式就是將指針向后移動8個地址,即p+8指向的是數(shù)組元素值為9,所以數(shù)值為9的表達式是術(p+8)。3、對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。A、log2nB、n/2C、nD、n+1標準答案:C知識點解析:在進行順序查找過程中,如果被查的元素是線性表中的最后一個元素,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中的所有元素進行比較,這是順序查找的最壞情況,需要比較的次數(shù)為n次。4、對于長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數(shù)中正確的是A、冒泡排序為n/2B、冒泡排序為nC、快速排序為nD、快速排序為n(n一1)/2標準答案:D知識點解析:假設線性表的長度為n,則在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2??焖倥判蚍ㄒ彩且环N交換類的排序方法,但由于它比冒泡排序法的速度快,因此,稱為快速排序法。5、對長度為n的線性表作快速排序,在最壞情況下,比較次數(shù)為()。A、nB、n-1C、n(n-1)D、n(n-1)/2標準答案:D知識點解析:假設線性表的長度為n,則在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2??焖倥判蚍ㄒ彩且环N互換類的排序方法,但由于它比冒泡排序法的速度快,因此,稱為快速排序法。6、開發(fā)大型軟件時,產(chǎn)生困難的根本原因是()。A、大型系統(tǒng)的復雜性B、人員知識不足C、客觀世界千變萬化D、時間緊、任務重標準答案:A知識點解析:隨著計算機軟件規(guī)模的擴大,軟件本身的復雜性不斷增加,研制周期顯著變長,正確性難以保證,軟件開發(fā)費用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機”。7、有如下類定義:classAA{inta;Publc:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)};其中橫線處的缺失部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}標準答案:B知識點解析:本題考查公用繼承對基類成員的訪問屬性。公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有,本題中若要給派生類繼承下來基類的私有成員賦值,那么只能調用基類的成員函數(shù)來對它賦值,成員變量默認的訪問權限為私有,即a為私有變量。所以本題答案為B。8、—個教師講授多門課程,一門課程由多個教師講授。則實體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標準答案:D知識點解析:一個教師可講授多門課程,一門課程可由多個教師講授,則實體教師和課程的聯(lián)系是多對多的聯(lián)系。9、已知函數(shù)print()沒有返回值,如果在類中將之聲明為常成員函數(shù),正確的是()。A、voidprint()const;B、constvoidprint();C、voidconstprint();D、voidprint(const);標準答案:A知識點解析:const成員函數(shù)表示該成員函數(shù)只能讀類數(shù)據(jù)成員,而不能修改類成員數(shù)據(jù)。定義const成員函數(shù)時,把const關鍵字放在函數(shù)的參數(shù)表和函數(shù)體之間。10、若x和y是程序中的兩個整型變量,則下列if語句中正確的是()。A、if(x==0)y=1;elsey=2;B、if(x==0)theny=1elsey=2;C、if(x==0)y=1elsey=2;D、if(x==0)y=1;elsey=2;標準答案:A知識點解析:ifelse語句的形式為:if(<條件>)<語句1>else<語句2>所以符合以上形式的ifelse語句為選項A)。11、有如下函數(shù)模板定義:template<typenameT1,hata2,inta3>T1sum(T1a1){return(a1+a2+a3);}則以下調用中正確的是()。A、sum<int,4,3>(5);B、sum<4,3>(5);C、sum<int,int,int>(5);D、sum(5);標準答案:A知識點解析:本題考查的函數(shù)模板的使用,有時不能根據(jù)用戶傳進來的參數(shù)決定所有模板函數(shù)的值類型,如函數(shù)的返回值,還有用戶希望自己指定參數(shù)類型,這時就需要顯式地指出參數(shù)模板的類型,顯示指定模板的類型格式為:返回值類型函數(shù)模板<參數(shù)類型表>(參數(shù)表)。12、下列關于函數(shù)模板的描述中,正確的是()。A、函數(shù)模板是一個實例函數(shù)B、使用函數(shù)模板定義的函數(shù)沒有返回類型C、函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)相同D、通過使用不同的類型參數(shù),可以從函數(shù)模板得到不同的實例函數(shù)標準答案:D知識點解析:函數(shù)模板是一系列相關函數(shù)的模型或樣板,這些函數(shù)的源代碼相同,只是所針對的數(shù)據(jù)類型不同。數(shù)據(jù)類型成了函數(shù)模板的參數(shù),所以函數(shù)模板是一種參數(shù)化類型的函數(shù)。13、已知類Myclass的定義如下classMyClass{public:voidfunction1(MyClass&c){cout<<c.data;}staticvoidfunction2(MyClass&c){cout<<c.data;}voidfunction3(){cout<<data;}staricvoidfunction4(){cout<<data;}private:intdata;};其中有編譯錯誤的函數(shù)是()。A、function1B、function2C、function3D、functicIn4標準答案:D知識點解析:funcyion4()函數(shù)作為類的靜態(tài)成員函數(shù),不能直接訪問類中說明的非靜態(tài)成員,即cout<<data在編譯時會出錯。14、有如下程序:#inc1ude<iostream>#inc1ude<cmath>usingstd::cout;classPoint{public:frienddoubledistance(constPoint&p);//p距原點的距離Point(intxx=0,intyy=0):x(xx),y(yy){}//①private:intx,y;};doubledistance(constPoint&p){//②returnsqrt(p.x*p.x+p.y*p,y);}intmain(){Pointpl(3,4);cout<<distance(pl);//③return0;}下列敘述中正確的是()。A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句③出錯標準答案:A知識點解析:這段程序是正確的,計算p距離原點的距離。語句①是類Point的構造函數(shù),在構造函數(shù)中給變量xx和yy賦初值0。語句②是計算點p距原點的距離的函數(shù)distance。語句③是計算點pl距離原點的距離并輸出。15、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derivedldl;Derived2d2;dl.data=0;//①d2.data=0://②return0:}下列關于程序編譯結果的描述中,正確的是()。A、①②皆無編譯錯誤B、①有編澤錯誤,②無編譯錯誤C、①無編譯錯誤,②有編譯錯誤D、①②皆有編譯錯誤標準答案:C知識點解析:保護繼承的類Dervied2不能訪問基類Base中的公共數(shù)據(jù)成員data。16、有如下程序;#include<iostream>usingnamespacestd;classB{public:virtualvoidshow(){cout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();}voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();}intmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);return0;}程序的輸出結果是()。A、BBBB、BBDC、DBBD、DBD標準答案:C知識點解析:此題考查的是虛函數(shù)與多態(tài)性。在成員函數(shù)的聲明前面加上virual關鍵字,即可把函數(shù)聲明為虛函數(shù);在C++中,一個基類指針可以用于指向它的派生類對象,而且通過這樣的指針調用虛函數(shù)時,被調用的是該指針實際所指向的對象類的那個重定義版本。此題中,fun1()和fun2()的形參分別是基類的指針和引用,給fun1()傳入的實參是指向派生類對象的指針p,fun1()將調用D類中的show()輸出字符‘D’;給fun2()出入的實參是基類對象,fun2()調用類B中的show()輸出字符‘B’:fun3()由于形參是基類對象,調用的始終都是基類的show(),輸出字符‘B’。故最終輸出結果是DBB。17、下列有關繼承和派生的敘述中,正確的是()。A、如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標準答案:D知識點解析:此題考查的是繼承和派生。無論是哪種繼承方式,派生類都能夠訪問基類的公有和保護成員,而不能訪問基類的私有成員,故選項A和B錯誤;公有繼承時,基類的對象不可作為派生類的對象處理,即基類對象不可賦值給派生類對象,所以選項c錯誤。18、若要重載+、=、<<、==和[]運算符,則必須作為類成員重載的運算符是()。A、+和=B、=和<<C、==和<<D、=和[]標準答案:D知識點解析:=、[]、()、—>以及所有的類型轉換運算符只能作為成員函數(shù)重載,而且不能是針對枚舉類型操作數(shù)的重載。19、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";}};classB{public:B(){cout<<"B";}}classC:publicA{Bb:public:C(){cout<<"C";}};intmain(){Cobj;return0;}執(zhí)行后的輸出結果是()。A、CBAB、BACC、ACBD、ABC標準答案:D知識點解析:此題考查的是類的繼承和派生。系統(tǒng)首先要通過派生類的構造函數(shù)調用基類的構造函數(shù),對基類成員初始化;然后對派生類中的新增成員初始化。20、若有函數(shù)模板mySwap和一些變量定義如下:()。template<classT>voidmySwap(Tx,Ty);doubled1,d2;inti1,i2;下列對mySwap的調用中,錯誤的是A、mySwap(i1,i2)B、mySwap(d1,d2)C、mySwap(i1,d1)D、mySwap<int>(i2,d2)標準答案:C知識點解析:按照函數(shù)模板mySwap的定義,變量x和y應該是同一類型,而在選項C的定義中變量i1和d1屬于不同的數(shù)據(jù)類型。21、有如下程序:#include<iostream>usingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r);im(i){}doublereal()const{fetumre;}doubleimage()const{returnim;}Complex&operator+=(Complexa){re+=a.re;im+=a.im;return*this:}};ostream&operator<<(ostrearn&s,constComplex&z){returns<<’(’<<z.real()<<’,’<<z.image()<<’)’;}intmain(){Complexx(1,-2),y(2,3);cout<<(x+=y)<<endt;return0:}執(zhí)行這個程序的輸出結果是()。A、(1,-2)B、(2,3)C、(3,5)D、(3,1)標準答案:D知識點解析:此題考查了運算符重載應用。因為x和y都是Complex類的對象,Complex類中已經(jīng)重載了+=運算符,表達式x+=y就等價與x.operator+=(y),執(zhí)行后得到(3,1);接著計算cout<<(x+=y),其等價于調用operator<<(cout,(x+=y)),最后輸出結果是(3,1)。22、有如下程序:#include#includeusingnamespacestd;intmain(){cout<A、***123***456B、***123456***C、***123456D、123456標準答案:C知識點解析:在主函數(shù)中第一次輸出時調用函數(shù)setfill(’*’)設置填充字符為‘*’,調用函數(shù)setw(6)設置每次輸出的寬度為6,所以第一次輸出123時,多余的三個空位用‘*’填充,即結果為***123,第二次從輸出流中輸出456。23、要建立文件流并打開當前目錄下的文件file.dat用于輸入,下列語句中錯誤的是()。A、ifstreamfin=ifstream.open(’’file.dat’’);B、itstream*fin=ewifstream(’’file.dat’’);C、ifstreamfin;fin.open(’’file.dat’’);D、ifstream*fin=newifstream0;fin->open(’’file.dat’’);標準答案:A知識點解析:在選項A中,在賦值號的左側表示建立一個輸入流對象fin,而在賦值號的右側的表達式不正確,因為文件輸入流類ifstream不能直接調用其成員函數(shù)open。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共22題,每題1.0分,共22分。)1、下列敘述中正確的是()。A、算法就是程序B、設計算法時只需要考慮數(shù)據(jù)結構的設計C、設計算法時只需要考慮結果的可靠性D、以上三種說法都不對標準答案:D知識點解析:所謂算法是指解題方案的準確而完整的描述。是一組嚴謹?shù)囟x運算順序的規(guī)則,并且每一個規(guī)則都是有效的,且是明確的,此順序將在有限的次數(shù)下終止。算法不等于程序,也不等于計算方法。設計算法時不僅要考慮對數(shù)據(jù)對象的運算和操作,還要考慮算法的控制結構。2、有如下程序:#includeusingnamespacestd;classBasel{public:Basel(intd){cout<A、1234B、2134C、12D、21標準答案:D知識點解析:本題考查派生類的構造函數(shù)和析構函數(shù),在定義一個派生類的對象時,先調用基類的構造函數(shù),然后再執(zhí)行派生類的構造函數(shù),對象釋放時,先執(zhí)行派生類的析構函數(shù),再執(zhí)行基類的析構函數(shù)。本題中定義一個派生類對象時,分別調用基類的構造函數(shù),所以分別輸出21。3、在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)標準答案:C知識點解析:對于長度為n的有序線性表,在最壞情況下,二分法查找只需比較log2n次,而順序查找需要比較n次。4、下列關于函數(shù)的描述中,錯誤的是()。A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板標準答案:D知識點解析:本題考查函數(shù)的基礎知識,函數(shù)可以沒有返回值,沒有參數(shù),也可以是一個類的成員,函數(shù)可以定義為模板,即模板函數(shù)。5、數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的()。A、存儲問題B、共享問題C、安全問題D、保護問題標準答案:B知識點解析:數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共享”之特點,即數(shù)據(jù)庫集中了各種應用的數(shù)據(jù),進行統(tǒng)一地構造與存儲,而使它們能被不同的應用程序所使用。因而數(shù)據(jù)庫技術的根本目標是解決數(shù)據(jù)的共享問題。6、下列方法中,屬于白盒法設計測試用例的方法的是()。A、錯誤推測B、因果圖C、基本路徑測試D、邊界值分析標準答案:C知識點解析:白盒測試方法也稱為結構測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。7、類的析構函數(shù)的作用是()。A、一般成員函數(shù)B、類的初始化C、對象的初始化D、釋放由對象所占用的資源標準答案:D知識點解析:類的在撤銷對象時,系統(tǒng)會自動調用類的析構函數(shù),析構函數(shù)用來釋放由對象所占用的資源。8、必須用一對大括號括起來的程序段是()。A、switch語句中的case標號語句B、if語句的分支C、循環(huán)語句的循環(huán)體D、函數(shù)的函數(shù)體標準答案:D知識點解析:此題考查的是語句塊和函數(shù)。if語句的分支和循環(huán)語句的循環(huán)體可以是一條語句也可以使一個語句塊,所以不是必須用一個大括號括起來:switch語句中的case標號語句可以是一系列語句,也可以包含語句塊,也不是必須用一對大括號括起來;函數(shù)的函數(shù)體必須用一對大括號括起來。9、有如下程序:#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知識點解析:在主函數(shù)中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)。10、有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是()。A、*p+9B、*(p+8)C、*p+=9D、p+8標準答案:B知識點解析:此題考查的是指針的運用。選項A中,*p返回的是數(shù)組元素a[0]的值,所以最后結果是1+9=10;選項B是指針p后移8個單位位置處的值,即a[8]其值為9;選項C中表達式的值和選項A相同;選項D的值是一個地址值,該值無法確定。11、下列是重載乘法運算符的函數(shù)原型聲明,其中錯誤的是()。A、MyClassoperator*(double,double);B、MyClassoperator*(double,MyClass);C、MyClassoperator*(MyClass,double);D、MyClassoperator*(MyClass,MyClass);標準答案:A知識點解析:此題考查的是運算符重載。本題中,選項A重載運算符“*”使用的形參是兩個double,而系統(tǒng)中的“*”運算原本就能計算兩個double,所以這樣違反了重載函數(shù)的原則,當執(zhí)行a*b這樣的表達式時,系統(tǒng)不能識別是否執(zhí)行運算符重載函數(shù)。故答案是A選項。12、有如下程序:#include<iostream>#include<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()<<endl;return0;}運行時的輸出結果是()。A、12B、16C、14D、11標準答案:A知識點解析:由類XCD的定義可知,成員函數(shù)Geta()返回的是字符串的長度,Getb()返回的是參數(shù)b的值。在主函數(shù)中strlen(x.Geta())的值等于4,y.Getb()的值等于8,所以輸出兩者的和為12。13、有如下程序#include<iostream>usingnamespacestd;classBase{protected:Base(){cout<<’A’;}Base(charc){cout<<c;}};classDerived:publicBase{public:Derived(charc){cout<<c;}};intmain(){Derivedd1(’B’);return0;}執(zhí)行這個程序屏幕上將顯示輸出()。A、BB、BAC、ABD、BB標準答案:C知識點解析:此題考查的是派生類對象的構造。建立派生類對象時,構造函數(shù)的執(zhí)行順序是:執(zhí)行基類的構造函數(shù),調用順序按照各個基類被被繼承時聲明的順序;執(zhí)行成員對象的構造函數(shù),調用順序按照各個成員對象在類中聲明的順序:執(zhí)行派生類的構造函數(shù)。此題中,在建立派生類Derived的對象dl時會先調用基類Base的構造,調用的是默認構造函數(shù),輸出字符‘A’;然后調用自身的構造函數(shù),輸出‘B’;故程序的輸出結果是:AB。14、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assXX{intx;public:XX(intxx=0):x(xx){}intgetX(){returnx;)};c1assYY:publicXX{inty;public:YY(intxx,intyy):XX(xx),y(yy){}intgetV(){retumgetX()+y;}};intmain(){YYc(3,4);cout<<c.getV()+c.getXO<<end1;return0;}運行這個程序的輸出結果是()。A、3B、4C、7D、10標準答案:D知識點解析:由于類YY公開繼承自類XX,所以執(zhí)行表達式c.getVO+c.getXO的值等于3+3+4=10。15、下面程序中對一維坐標點類Point進行運算符重載#includeusingnamespacestd;classPoint{public:Point(intval){x=val;}Point&operator++(){x++;return*this;}Pointoperator++(int){Pointold=*this;++(*this);returnold;}IntGetX()const{returnx;}private:intx:};intmain(){Pointa(10);cout<<(++a).GetX();cout<A、運行時輸出1011B、運行時輸出1111C、運行時輸出1112D、編譯有錯標準答案:B知識點解析:此題考查的是重載增1運算符“++”。此題中,Point&operator++()重載的是前綴形式,而Pointoperator++(int)重載的是后綴形式。所以主函數(shù)中第1條輸出語句輸出11,此時a.x的值為11;第2條輸出語句,首先創(chuàng)建了一個Point對象old保存自身,然后通過語句++(*this);調用前綴++的重載函數(shù),因為返回值是改變前保存的old對象,故仍輸出11。16、已知在一個類體中包含如下函數(shù)原型:VOLUMEoperator—(VOLUME)const;,下列關于這個函數(shù)的敘述中,錯誤的是()。A、這是運算符.的重載運算符函數(shù)B、這個函數(shù)所重載的運算符是一個一元運算符C、這是一個成員函數(shù)D、這個函數(shù)不改變類的任何數(shù)據(jù)成員的值標準答案:B知識點解析:此題考查的是運算符的重載。運算符“.”有一元和二元兩種,在本題中它作為一個二元運算符,所以它不能更新對象的數(shù)據(jù)成員,也不能調用該類中沒有const修飾的成員函數(shù)。17、下列關于類模板的模板參數(shù)的敘述中,錯誤的是()。A、模板參數(shù)可以作為數(shù)據(jù)成員的類型B、模板參數(shù)可以作為成員函數(shù)的返回類型C、模板參數(shù)可以作為成員函數(shù)的參數(shù)類型D、模板參數(shù)不能作為成員函數(shù)的局部變量的類型標準答案:D知識點解析:此題考查的是模板參數(shù)。模板參數(shù)是一種參數(shù)化的數(shù)據(jù)。模型,在模板類或模板函數(shù)中,只要使用數(shù)據(jù)類型的地方都能使用模板參數(shù)來代表一種未知的數(shù)據(jù)類型。所以,模板參數(shù)可以作為成員函數(shù)的局部變量類型。18、在定義一個類模板時,模板形參表是用一對括號括起來的,所采用的括號是()。A、()B、[]C、<>D、{}標準答案:C知識點解析:聲明一個類模板的格式是:template<<模板形參聲明>><類聲明>。19、在C++中,打開一個文件時與該文件建立聯(lián)系的是()。A、流對象B、模板C、函數(shù)D、類標準答案:A知識點解析:在CH中,打開一個文件時與該文件建立聯(lián)系的是流對象。20、有如下程序:#inc1ude<iomanip>#inc1ude<iostream>usingnamespacestd;intmain(){cout<<setfill(’*’)<<setw(6)<<123<<456;return0:}運行時的輸出結果是()。A、***123***456B、***l23456***C、***123456D、123456標準答案:C知識點解析:在主函數(shù)中第一次輸出時調用函數(shù)setfill(’*’)設置填充字符為‘*’,調用函數(shù)setw(6)設置每次輸出的寬度為6,所以第一次輸出123時,多余的三個空位用‘*’填充,即結果為***l23,第二次從輸出流中輸出456。21、若磁盤上已存在某個文本文件,其全路徑文件名為d:\ncre\test.txt,下列語句中不能打開該文件的是()。A、ifstreamfile(’’d:\ncre\test.txt’’);B、ifStreamfile(’’d:\ncre\\test.txt’’);C、ifstreamfile;file.open(’’d:\\ncre\\test.txt’’);ifstream(’’d:\\ncre\\test.txt’’);D、ifstream*pFile=new標準答案:A知識點解析:此題考查的是轉義字符。在字符常量或字符串中,以“\”開頭的一系列字符被看做是一個轉義字符。要表示“\”字符,必須使用轉義字符“\\”。22、有如下類定義classMyClasspublic:Private:intdata;};若要為MyClass類重載流輸入運算符>>,使得程序中可以“cin>>obj;”形式輸入MyClass類的對象obj,則橫線處的聲明語句應為()。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知識點解析:C++的輸入運算符>>作為非類成員函數(shù)重載。在一個類中,可將輸入運算符>>聲明為友元函數(shù),在類MyClass重載輸入運算符>>的形式如選項A)所示。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共20題,每題1.0分,共20分。)1、下列敘述中正確的是()。A、—個算法的空間復雜度大,則其時間復雜度也必定大B、—個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度大,則其空間復雜度必定小D、算法的時間復雜度與空間復雜度沒有直接關系標準答案:D知識點解析:算法的復雜度主要包括時間復雜度和空間復雜度。算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,算法的工作量用算法所執(zhí)行的基本運算次數(shù)來度量,而算法所執(zhí)行的基本運算次數(shù)是問題規(guī)模的函數(shù),即算法的工作量=f(n),其中n是問題的規(guī)模;算法的空間復雜度,一般是指執(zhí)行這個算法所需要的內存空間。一個算法所占用的存儲空間包括算法程序所占用的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。根據(jù)各自的定義可知,算法的時間復雜度與空間復雜度并不相關。2、下列關于C++函數(shù)的敘述中,正確的是()。A、每個函數(shù)至少要具有一個參數(shù)B、每個函數(shù)都必須返回一個值C、函數(shù)在被調用之前必須先聲明D、函數(shù)不能自己調用自己標準答案:C知識點解析:此題考查的是函數(shù)的性質。當調用無參函數(shù)時主函數(shù)并不將數(shù)據(jù)傳送給被調函數(shù),且可以帶回或不帶回函數(shù)值。函數(shù)的遞歸調用就是直接或間接的調用自己。3、下列運算符不能重載為友元函數(shù)的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=標準答案:A知識點解析:此題考查的是運算符重載的概念。C++語言規(guī)定,=、[]、()、->以及所有的類型轉換運算符只能作為成員函數(shù)重載,如果要重載為友元函數(shù)就必須重載為非成員函數(shù)。4、下列敘述中正確的是()。A、線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的B、線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構C、線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構D、以上都不正確標準答案:B知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的。而在鏈式存儲的方式中,將存儲空間的每一個存儲結點分為兩部分,一部分用于存儲數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。5、類MyClass的定義如下,若要對value賦值,則下面語句正確的是()。classMyClass{public:MyClass(){}MyClass(inti){value=newint(i);}int*value;};A、MyClassmy;my.value=10;B、MyClassmy;*my.value=10;C、MyClassmy;my.*value=10;D、MyClassmy(10);標準答案:D知識點解析:因題目中定義的指針value是指向變量i的,所以直接利用語句MyClass(inti){value=newint(i);}對value進行賦值即可。6、下列重載函數(shù)中,正確的是()。A、voidfun(inta,floatb);voidfun(intC,floatd)B、voidfun(inta,floatb);voidfun(floata,intb)C、floatfun(inta,floatb);intfun(intb,floata)D、intfun(inta,intb);floatfun(inta,intb)標準答案:B知識點解析:所謂函數(shù)重載是指同一函數(shù)名可以對應多個函數(shù)實現(xiàn)。進行函數(shù)重載時,要求同名函數(shù)在參數(shù)個數(shù)上不同,或者參數(shù)類型上不同。7、有如下類定義:classPoint{private;staticinthow_many;};_______how_many=0;要初始化point的靜態(tài)成員how_many,下劃線處應填入的內容是()。A、ingB、staticintC、intPoint∷D、staticintPoint∷標準答案:C知識點解析:此題考查的是靜態(tài)數(shù)據(jù)成員的韌始化,靜態(tài)數(shù)據(jù)成員應在類體外進行初始化,且初始化的一般格式為:數(shù)據(jù)類型類名∷靜態(tài)數(shù)據(jù)成員名=初始值。8、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<<x;)};classDerived:publicBase{public:Derived(intx=0){cout<<x;)private:Baseval;);intmain(){Derivedd(1);return0:}程序的輸出結果是()。A、0B、1C、01D、001標準答案:D知識點解析:此題考查的是類的構造。建立類的對象時,構造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構造函數(shù),調用順序按照各個基類被繼承時聲明的順序(自左向右).>執(zhí)行成員對象的構造函數(shù),調用順序按照各個成員對象在類中聲明的順序.>執(zhí)行自身的構造函數(shù)。本題中,首先會構造基類Base,調用Base類的構造函數(shù),輸出0;然后還定義了一個Base類的對象,再次調用Base類的默認構造函數(shù)輸出0;最后構造自身,因主函數(shù)中傳入了構造參數(shù)l,所以輸出1。故最后輸出結果是:001。9、下面屬于黑盒測試方法的是()。A、語句覆蓋B、邏輯覆蓋C、邊界值分析D、路徑覆蓋標準答案:C知識點解析:采用黑盒技術設計測試用例的方法有:等價類劃分、邊界值分析、錯誤推測、因果圖和綜合策略。10、下列描述中正確的是()。A、數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持B、數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題C、數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)D、以上三種說法都不對標準答案:B知識點解析:數(shù)據(jù)庫系統(tǒng)由如下幾個部分組成:數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。這五個部分構成了一個以數(shù)據(jù)庫為核心的完整的運行實體,稱為數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫技術的根本目的是要解決數(shù)據(jù)的共享問題。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共享”之特點,亦即數(shù)據(jù)庫集中了各種應用的數(shù)據(jù),進行統(tǒng)一地構造與存儲,而使它們可被不同應用程序所使用。數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,簡稱DBMS),是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操作、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等。它是數(shù)據(jù)庫系統(tǒng)的核心。11、有如下程序:usingstd::cout;DuDIIC:frienddoubledistance(constPoint&p);∥p距原點的距離Point(intXX=0,intyy=O):x(xx),y(yy){)∥①private:intX,y;doubledistance(constPoint&p){∥②returnsqrt(p.X木P.x+p.Y*P.y);)intmain(){Pointp1(3,4);cout<A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句③出錯標準答案:A知識點解析:這段程序是正確的,計算p距離原點的距離。語句①是類Point的構造函數(shù),在構造函數(shù)中給變量xx和yy賦初值0。語句②是計算點p距原點的距離的函數(shù)distance。語句③是計算點p1距離原點的距離并輸出。12、己知枚舉類型定義語句為:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};則下列敘述中錯誤的是()。A、枚舉常量NAME的值為1B、枚舉常量NUMBER的值為1C、枚舉常量MINUS的值為6D、枚舉常量PRINT的值為10標準答案:A知識點解析:此題考查的是C++語言的數(shù)據(jù)類型。第一個枚舉常量的值為0;允許程序顯示的定義中指定部分或全部枚舉常量的值,枚舉常量默認時,在前一枚舉常量值的基礎上以此增1。13、有三個關系R、S和T如下:則由關系R和S得到關系T的操作是A、自然連接B、差C、交D、并標準答案:B知識點解析:由三個關系R、S和T的結構可以知道,關系T是由關系R、S經(jīng)過差運算得到的。14、有如下程序:#inc1ude<iostream>voidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};std::cout<<a[0]<<","a[1]std::end1;return0;}執(zhí)行后的輸出結果是()。A、42,42B、23,23C、23,42D、42,23標準答案:B知識點解析:此題考查是是函數(shù)的調用以及參數(shù)值的傳遞。函數(shù)fun中的第一個參數(shù)是引用傳值方式,是雙向的:第二個參數(shù)是按值傳遞,是單向的。15、C++中的模板包括()。A、對象模板和函數(shù)模板B、對象模板和類模板C、函數(shù)模板和類模板D、變量模板和對象模板標準答案:C知識點解析:此題考查的是模板。在C++語言中,模板有兩類:函數(shù)模板和類模板。16、若為Fraction類重載前增1運算符++,應在類體中將其聲明為()。A、Fraction&operator++();B、Fraction&operator++fint);C、friendFraction&operator++();D、friendFraction&operator++(int);標準答案:A知識點解析:在類Fraction中重載前增l運算符++時,其聲明形式為Fraction&operator++();在類Fraction中重載后增1運算符++時,其聲明形式為Fraction&operator++(int);。17、有如下程序:#include<iostream>usingnamespacestd;classONE{intc;public:0NE():c(0){cout<<1;}ONE(intn):c(n){cout<<2;}};classTWO{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<3;}};intmain(){TWOt(4);return0;}運行時的輸出結果是()。A、3B、23C、123D、213標準答案:C知識點解析:由類TWO的定義可知,其成員為類ONE的兩個對象one1和one2。所以在主函數(shù)中構建類TWO的對象t(4)時,先后調用類ONE的構造函數(shù)ONE():c(0){cout<<1;}和ONE(intn):c(n){cout<<2;}輸出12,然后再調用類TWO的構造函數(shù)TWO(intm):one2(m){cout<<3;},輸出3。18、Sample是一個類,執(zhí)行下面語句后,調用Sample類的構造函數(shù)的次數(shù)是,()。Samplea[2],*P=newSample;A、0B、1C、2D、3標準答案:D知識點解析:在C++中,聲明一個類對象時,編譯程序需要調用類的構造函數(shù)為對象分配存儲空間,進行必須的初始化。在本題的這條語句中,聲明了一個Sample類型的包含2個數(shù)組元素的數(shù)組a[2],一個指向類Sample對象的指針P,所以Sample類的構造函數(shù)共調用了3次。19、有如下類模板定義:template<typenameT>classBigNumber{longn;public:BigNumber(Ti):n(i){}BigNumberoperator+(BigNumberb){retumBigNumber(n+b.n);}}己知bl.b2是BigNumber的兩個對象,則下列表達式中錯誤的是()。A、bl+b2B、b1+3C、3+blD、3+3標準答案:C知識點解析:C++運算符的重載有兩個方式,一種是做為成員函數(shù),另一種是做為友元函數(shù)。前種C++默認省略第一個參數(shù)(事實上是對象本身),而后一種是所有的參數(shù)都要寫全。比如對加法的重載:成員方式為COperatoroperator+(COperator&op);,在調用的過程中我們可以理解為result=operator+(op);友元方式為friendCOperatoroperator一(C0perator&opl,COperator&op2);,在調用的過程中我們可以理解為result=operator一(opl,op2);。對于本題來說,整數(shù)3與bl相加時,3是int型,bl是BigNumbe<>型,int型不能和別的型做運算。20、下列函數(shù)模版中的定義中,合法的是()。A、template<typenameT>Tabs(Tx){returnx<0?-x:x;}B、templateclass<T>Tabs(Tx){returnx<0?-x:x;}C、templateT<class.T>abs(Tx){returnx<0?-x:x;}D、templateTabs(Tx){returnx<07-x:x;}標準答案:A知識點解析:此題考查的是函數(shù)模板。聲明一個函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,其中的<模板形參表聲明>是由一個或多個“模板形參”組成的,每個“模板形參”可具有以下幾種形式:typename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共20題,每題1.0分,共20分。)1、下列關于類、對象、屬性和方法的敘述中,錯誤的是()。A、類是對一類具有相同的屬性和方法對象的描述B、屬性用于描述對象的狀態(tài)C、方法用于表示對象的行為D、基于同一個類產(chǎn)生的兩個對象不可以分別設置自己的屬性值標準答案:D知識點解析:類是對一類具有相同的屬性和方法對象的描述,屬性用于描述對象的狀態(tài),方法用于表示對象的行為,基于同一個類產(chǎn)生的兩個對象是可以分別設置自己的屬性值。2、若有如下程序:#include<iostream>usingnamespacestd;ints=0;classsample{staticintn:public:sample(inti){n=i;}staticvoidadd(){s+=n;}};intsample::n=0:intmain(){samplea(2),b(5);sample::add();cout<<s<<endl:return0:}程序運行后的輸出結果是()。A、2B、5C、7D、3標準答案:B知識點解析:執(zhí)行語句“samplea(2),b(5)”;的結果是使n的值最終變?yōu)?,sample::add()語句調用函數(shù)staticvoidadd(),使得S=S+n=5。3、冒泡排序在最壞情況下的比較次數(shù)是()。A、n(n+1)/2B、nlog2nC、n(n-1)/2D、n/2標準答案:C知識點解析:對n個結點的線性表采用冒泡排序,在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。4、下列描述中,不符合良好程序設計風格要求的是()。A、程序的效率第一,清晰第二B、程序的可讀性好C、程序中要有必要的注釋D、輸入數(shù)據(jù)前要有提示信息標準答案:A知識點解析:一般來講,程序設計風格是指編寫程序時所表現(xiàn)出的特點、習慣和邏輯思路。程序設計風格總體而言應該強調簡單和清晰,程序必須是可以理解的。著名的“清晰第一,效率第二”的論點已成為當今主導的程序設計風格。5、下列敘述中正確的是()。A、程序執(zhí)行的效率與數(shù)據(jù)的存儲結構密切相關B、程序執(zhí)行的效率只取決于程序的控制結構C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量D、以上都不正確標準答案:A知識點解析:影響程序執(zhí)行效率的因素有很多,如數(shù)據(jù)的存儲結構、程序處理的數(shù)據(jù)量、程序的算法等。順序存儲結構和鏈式存儲結構在數(shù)據(jù)插入和刪除操作上的效率就存在差別。其中,鏈式存儲結構的效率要高一些。6、下列有關內聯(lián)函數(shù)的敘述中,正確的是()。A、內聯(lián)函數(shù)在調用時發(fā)生控制轉移B、內聯(lián)函數(shù)必須通過關鍵字inline來定義C、內聯(lián)函數(shù)是通過編譯器來實現(xiàn)的D、內聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句標準答案:C知識點解析:此題考查的是內聯(lián)函數(shù)的概念。在調用時,內聯(lián)函數(shù)會像宏函數(shù)一樣的展開,將調用表達式用內聯(lián)函數(shù)體來替換所以它沒有一般函數(shù)的參數(shù)壓棧和和退棧操作,所以選項A錯誤:即使沒有使用inline說明,編譯器也會將在類的說明部分定義的函數(shù)認定為內聯(lián)函數(shù),所以選項B錯誤:內聯(lián)函數(shù)只是比普通函數(shù)有更高的執(zhí)行效率,所以選項D錯誤。7、有如下類定義:classMyClass{intb;chara;doublec;public:MyClass():c(0.0),b(0),a(’,’){}};創(chuàng)建這個類的對象時,數(shù)據(jù)成員的初始化順序是()。A、a,b,CB、c,b,aC、b,a,cD、c,a,b標準答案:C知識點解析:類的成員初始化順序與成員變量在構造函數(shù)中的位置先后順序無關,只與成員變量在類中定義的先后順序有關。8、下列選項中不屬于結構化程序設計方法的是A、自頂向下B、逐步求精C、模塊化D、可復用標準答案:D知識點解析:結構化程序設計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化,限制使用GOT0語句。自頂向下足指程序設計時應先考慮總體,后考慮細節(jié):先考慮全局目標,后考慮局部目標。逐步求精是指對復雜問題應設計一些子目標過渡,逐步細化。模塊化是把程序要解決的總目標先分解成分目標,再進一步分解成具體的小目標,把每個小目標稱為一個模塊??蓮陀眯允侵杠浖夭患有薷某缮约有薷谋憧稍诓煌能浖_發(fā)過程中重復使用的性質。軟件可復用性是軟件工程追求的目標之一,是提高軟件生產(chǎn)效率的最主要方法,不屬于結構化程序設計方法。9、下列程序用來判斷數(shù)組中特定元素的位置所在,則輸出結果為()。#include<conio.h>#include<iostream.h>intfun(int*p,intn,int*j){inti;*j=0;for(i=0;i<n;i++)if(p[*j]<p[i])*j=i;returnp[*j];}voidmain(){inta[10]={1,3,9,O,8,7,6,5,4,2};intj;fun(a,10,&j);cout<<j<<’,’<<a[j];}A、2,9B、3C、9D、3,9標準答案:A知識點解析:由程序中的主函數(shù)main入手,調用fun函數(shù)。其中第一個實參為數(shù)組a的名字,數(shù)組名作為實參,傳遞的是數(shù)組的起始地址。所以在fun函數(shù)中指針p指向了數(shù)組的第一個元素a[0]。另外實參整型j傳遞的是引用,也就是j的地址。在fun函數(shù)中在for循環(huán)中,依次將當前元素p[i]與j指針值為標識的p[*j]進行比較,取較大的。最后循環(huán)后的結果就是p[*j]存放數(shù)組中的最大值,并且指針j為該值的標識位??梢钥闯鰯?shù)組的最大值是9標識位為2。10、下面描述中不屬于數(shù)據(jù)庫系統(tǒng)特點的是()。A、數(shù)據(jù)共享B、數(shù)據(jù)完整性C、數(shù)據(jù)冗余度高D、數(shù)據(jù)獨立性高標準答案:C知識點解析:數(shù)據(jù)系統(tǒng)的基本特點有數(shù)據(jù)的集成性、數(shù)據(jù)的高共享性與低冗余性、數(shù)據(jù)的獨立性、數(shù)據(jù)統(tǒng)一管理與控制。11、已知類Myclass的定義如下:classMyClass{public:MyClass(intd){data=d;)MyClass0{)private:intdata;};下列對Myclass類對象數(shù)組的定義和初始化語句中,正確的是()。A、MyClassarrays[2];B、MyClassarrays[2]={MyClass(5)};C、MyClassarrays[2]={MyClass(5),MyClass(6)};D、MyClass*arrays:newMyClass[2];標準答案:C知識點解析:在選項C)中定義了類MyC:lass對象數(shù)組arrays[2],并用對象MyClass(5)和MyClass(6)對這個數(shù)組中的兩個元素賦初值。12、假定MyClass為一個類,則該類的拷貝初始化構造函數(shù)的聲明語句為()。A、MyClass&(MyClassx);B、MyClass(MyClassx)C、MyClass(MyClass&x):D、MyClass(MyClass*x)標準答案:C知識點解析:拷貝構造函數(shù)是一個特殊的構造函數(shù),它用一個己知的對象初始化一個正在創(chuàng)建的同類對象,它的一般格式是:類名::類名(const類名&引用對象名)。13、下列函數(shù)模版中的定義中,合法的是()。A、templateTabs(Tx){returnx<07一x:x;)B、templateclassTabs(Tx){retumxC、templateTabs(Tx){retumx<07一x:x;)D、templateTabs(Tx){returnx標準答案:A知識點解析:此題考查的是函數(shù)模板。聲明一個函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,其中的<模板形參表聲明>是由一個或多個“模板形參”組成的,每個“模板形參”可具有以下幾種形式:typename參數(shù)名:class參數(shù)名;類型修飾參數(shù)名。14、下列關于C++流的描述中,錯誤的是()。A、cout>>’A’表達式可輸出字符AB、eof()函數(shù)可以檢測是否到達文件尾C、對磁盤文件進行流操作時,必須包含頭文件fstreamD、以iosbase∷out模式打開的文件不存在時,將自動建立一個新文件標準答案:A知識點解析:tout是一個標準輸出流對象。>>稱之為提取運算符,它的功能是從輸入流中提取數(shù)據(jù)賦值給一個變量。<<為插入運算符,其功能是把表達式的值插入到輸出流中。當系統(tǒng)執(zhí)行cout<15、在下列關鍵字中,不能用來表示繼承方式的是()。A、privateB、staticC、publicD、protected標準答案:B知識點解析:此題考查的是繼承方式。繼承方式有私有(private)、保護(protected)、公有(public)三種。16、在公有繼承的情況下,允許派生類直接訪問的基類成員包括()。A、公有成員B、公有成員和保護成員C、公有成員、保護成員和私有成員D、保護成員標準答案:B知識點解析:此題考查的是派生類對基類成員的訪問?;惖某蓡T有公有、保護和私有三種訪問屬性;類的繼承方式也有公有繼承、保護繼承和私有繼承三種。無論那種繼承方式,派生類中的成員都不能訪問基類中的私有成員,但可以訪問基類中的公有成員和保護成員。17、虛函數(shù)支持多態(tài)調用,一個基類的指針可以指向派生類的對象,而且通過這樣的指針調用虛函數(shù)時,被調用的是指針所指的實際對象的虛函數(shù)。而非虛函數(shù)不支持多態(tài)調用。有如下程序:#include<iostream>usingnamespacestd;classBase{public:virtualvoidf(){cout<<"f0+";}voidg(){cout<<"g0+";}};classDerived:publicBase{public:voidf(){cout<<"f+";}voidgo{cout<<,"g+";}};intmain{Derivedd;Base*p=&d;p->f();p->g();return0:}運行時輸出的結果是()。A、f+g+B、f0+g+C、f+g0+D、f0+g0+標準答案:C知識點解析:此題考查的是虛函數(shù)和多態(tài)性。此題中,因為f()是虛函數(shù)具有多態(tài)性,所以通過指針p調用的fi()是派生類Derived中定義的f();而g()不是虛函數(shù),通過指針p調用的是Base中的g()。18、已知在一個類體中包含如下函數(shù)原型:VOLUMEoperator—(VOLUME)const;,下列關于這個函數(shù)的敘述中,錯誤的是()。A、這是運算符.的重載運算符函數(shù)B、這個函數(shù)所重載的運算符是一個一元運算符C、這是一個成員函數(shù)D、這個函數(shù)不改變類的任何數(shù)據(jù)成員的值標準答案:B知識點解析:此題考查的是運算符的重載。運算符“.”有一元和二元兩種,在本題中它作為一個二元運算符,所以它不能更新對象的數(shù)據(jù)成員,也不能調用該類中沒有const修飾的成員函數(shù)。19、下列關于函數(shù)模板的描述中,錯誤的是()。A、從模板實參表和從模板函數(shù)實參表獲得信息矛盾時,以模板實參的信息為準B、對于常規(guī)參數(shù)所對應的模板實參,任何情況下都不能省略C、虛擬類型參數(shù)沒有出現(xiàn)在模板函數(shù)的形參表中時,不能省略模板實參D、模板參數(shù)表不能為空標準答案:D知識點解析:在調用一個模板函數(shù)時,如果編譯系統(tǒng)能夠從模板實參表判斷其中或全部虛擬類型參數(shù)對應的實際參數(shù),而且它們正好是參數(shù)表中最后的若干參數(shù),則模板實參表中的那幾個參數(shù)可以省略。20、若需要為XV類重載乘法運算符,運算結果為XV類型,在將其聲明為類的成員函數(shù)時,下列原型聲明正確的是()。A、XVoperator*(XV,XV);B、XV*(XV);C、operator*(XV);D、XVoperator*(XV);標準答案:D知識點解析:“*”是一個二元運算符,在作為成員函數(shù)重載時參數(shù)表中只有一個參數(shù),對應于第二個操作數(shù),而第一個操作數(shù)就是對象本身,僅以this指針的形式隱藏在參數(shù)表中。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共21題,每題1.0分,共21分。)1、下列敘述中正確的是()。A、一個邏輯數(shù)據(jù)結構只能有一種存儲結構B、邏輯結構屬于線性結構,存儲結構屬于非線性結構C、一個邏輯數(shù)據(jù)結構可以有多種存儲結構,且各種存儲結構不影響數(shù)據(jù)處理的效率D、一個邏輯數(shù)據(jù)結構可以有多種存儲結構,且各種存儲結構影響數(shù)據(jù)處理的效率標準答案:D知識點解析:數(shù)據(jù)的存儲結構是指數(shù)據(jù)的邏輯結構在計算機存儲空間中的存放形式,一種數(shù)據(jù)結構可以根據(jù)需要采用不同的存儲結構,常用的存儲結構有順序和鏈式結構。采用不同的存儲結構,其處理的效率是不同的。2、下列關于棧敘述正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠不能被刪除D、以上三種說法都不對標準答案:A知識點解析:棧是先進后出的線性表,棧頂?shù)脑刈钕缺粍h除,棧底的元素最后被刪除。3、程序執(zhí)行后的輸出結果是()。#include<iostream.h>voidmain(){charflag=’c’;switch(flag){case’a’:cout<<"1"<<endl:case’b’:cout<<"2"<<endl:break;case’c’:cout<<"3"<<endl:default:cout<<"4"<<endl:break;}}A、12B、23C、34D、45標準答案:C知識點解析:因為flag=’c’,所以執(zhí)行cout<<"3"<<endl語句,由于沒有break短語,所以繼續(xù)執(zhí)行“cout<<"4"<<endl:break;”,語句輸出4。4、對于一個類定義,下列敘述中錯誤的是()。A、如果沒有定義拷貝構造函數(shù),編譯器將生成一個拷貝構造函數(shù)B、如果沒有定義缺省的構造函數(shù),編譯器一定將生成一個缺省的構造函數(shù)C、如果沒有定義構造函數(shù),編譯器將生成一個缺省的構造函數(shù)和一個拷貝構造函數(shù)D、如果已經(jīng)定義了構造函數(shù)和拷貝構造函數(shù),編譯器不會生成任何構造函數(shù)標準答案:B知識點解析:本題考查構造函數(shù)和復制構造函數(shù),如果沒有定義構造函數(shù),編譯器將生成一個缺省的構造函數(shù)和一個拷貝構造函數(shù),如果已經(jīng)定義了構造函數(shù)和拷貝構造函數(shù),編譯器不會生成任何構造函數(shù)。如果沒有定義拷貝構造函數(shù),編譯器將生成一個拷貝構造函數(shù)。5、已知類Myclass的定義如下classMyClass{public:voidfunctionl(MyClass&c){cout<A、functionlB、function2C、function3D、function4標準答案:D知識點解析:funcyion4()函數(shù)作為類的靜態(tài)成員函數(shù),不能直接訪問類中說明的非靜態(tài)成員,即cout<6、已知有數(shù)組定義chara[3][4];下列表達式中錯誤的是()。A、a[2]="WIN"B、strcpy(a[2],"WIN")C、a[2][3]=’W’D、a[0][1]=a[0][1]標準答案:A知識點解析:本題主要是對字符數(shù)組的考查。選項A中a[2]為一個地址,所以不能用等號進行賦值操作。7、定義學生選修課程的關系模式:SC(S#,Sn,C#,Cn,G)(其屬性分別為學號、姓名、課程號、課程名、成績)該關系的范式最高達到A、1NFB、2NFC、3NFD、BCNF標準答案:A知識點解析:第一范式(1NF)是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。如果出現(xiàn)重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。在第一范式(1NF)中表的每一行只包含一個實例的信息。第二范式(2NF)要求數(shù)據(jù)庫表中的每個實例或行必須可以被唯一地區(qū)分。本題中關系模式中的可能不被唯一地區(qū)分,因此它只能滿足第一范式,而滿足不了第二范式。8、有如下類定義:classMyClass{intb;chara;doublec;public:MyClass():c(0.0),b(0),a(’,’){}};創(chuàng)建這個類的對象時,數(shù)據(jù)成員的初始化順序是()。A、a,b,cB、c,b,aC、b,a,cD、c,a,b標準答案:C知識點解析:類的成員初始化順序與成員變量在構造函數(shù)中的位置先后順序無關,只與成員變量在類中定義的先后順序有關。9、有如下程序:#include<iostream>#include<cstfing>usingoamespacestd;classXCF{inta;public:XCF(intaa=0):a(aa){cout<<’’1’’;}XCF(XCF&x){a=x.a;cout<<’’2’’;}-XCF(){cout<<a;}intGeta(){return,a;}};intmain(){XCFd1(5),d2(d1);XCF*pd=newXCF(8);cout<<pd->Geta0;deletepd;return0;}運行時的輸出結果是()。A、1215588B、1218855C、12185D、128512標準答案:B知識點解析:在這個程序中在建立對象dl(5)時,調用構造函數(shù)XCF(intaa=0):a(aa){tout<<"1’’;),輸出1;在建立d2(d1)時,調用拷貝構造函數(shù)XCF(XCF&x){a=x.a(chǎn);cout<<’’2’’;},輸出2;在建立newXCF(8)對象時,調用構造函數(shù)XCF(intaa=0):a(aa){cout<<"1’’;},輸出1;語句cout<<pd->Geta()的功能是輸出8;語句deletepd;調用析構函數(shù)~XCF(),輸出8;當退出程序時,分別釋放對象d2、d1,輸出55。10、下列關于this指針的敘述中,正確的是()。A、任何與類相關的函數(shù)都有this指針B、類的成員函數(shù)都有this指針C、類的友元函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)才有this指針標準答案:D知識點解析:此題考查的是this指針的使用。類的每一個成員函數(shù)都有一個隱含的常量指針,即this指針。類的靜態(tài)成員函數(shù)小能含有this指針,因為this指針是一個指向本對象的指針。11、有如下程序:#include<iostream>usingnamespacestd;classVAC{public;intf()const{return3;}intf(){return5;}};Intmain(){VACv1;constVACv2;cout<<v1.f()<<v2.f();feturn0;}運行時的輸出結果是()。A、53B、35C、55D、33標準答案:A知識點解析:此題考查的是常成員函數(shù)的應用。VAC類中說明了兩個函數(shù),一個是常成員函數(shù),一個是普通函數(shù);在主函數(shù)中說明了兩個對象,通過普通對象vl調用的是普通函數(shù),輸出5;通過常對象V2調用的是常成員函數(shù),輸出3。12、建立一個有成員對象的派生類對象時,各構造函數(shù)體的執(zhí)行次序為()。A、派生類、成員對象類、基類B、成員對象類、基類、派生類C、基類、成員對象類、派生類D、基類、派生類、成員對象類標準答案:C知識點解析:建立派生類對象的時候,構造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構造函數(shù),調用的順序按照基類被繼承時候的順序(自左向右)。然后是執(zhí)行成員對象的構造函數(shù),調用順序按照各個成員對象在類中的聲明順序(自上而下),最后是執(zhí)行派生類的構造函數(shù)。13、對于通過公有繼承定義的派生類,若其成員函數(shù)可以直接訪問基類的某個成員,說明該基類成員的訪問權限是()。A、公有或私有B、私有C、保護或私有D、公有或保護標準答案:D知識點解析:通過公有繼承定義的派生類,其成員函數(shù)可以訪問基類的公有成員和保護成員,但不能訪問基類的私有成員。14、下列關于派生類和基類的描述中,正確的是()。A、派生類成員函數(shù)只能訪問基類的公有成員B、派生類成員函數(shù)只能訪問基類的公有和保護成員C、派生類成員函數(shù)可以訪問基類的所有成員D、派生類對基類的默認繼承方式是公有繼承標準答案:B知識點解析:派生類不論是采用那種繼承方式繼承基類,它的成員函數(shù)只能訪問基類的公有成員和保護成員。15、有如下類定義classAnimal{public:virtualvoidName()=0;};classKoala:publicAnimal{public:voidName(){/*函數(shù)體略*/)};關于上述類定義,下列描述中錯誤的是()。A、類Koala是類Animal的派生類B、類Koala中的Name函數(shù)是一個虛函數(shù)C、類Animal中的Name函數(shù)是一個純虛函數(shù)D、語句“Animala;”能夠建立類Animal的一個對象a標準答案:D知識點解析:在類Animal定義了純虛函數(shù)Name(),所以類Animal就是一個抽象類,而抽象類是不能夠建立對象的。16、下列關于運算符函數(shù)的描述中,錯誤的是()。A、運算符函數(shù)的名稱總是以operator為前綴B、運算符函數(shù)的參數(shù)可以是對象C、運算符函數(shù)只能定義為類的成員函數(shù)D、在表達式中使用重載的運算符相當于調用運算符重載函數(shù)標準答案:C知識點解析:C++把重載的運算符視為特殊的函數(shù),稱為運算符函數(shù)。編譯系統(tǒng)能夠依據(jù)使用運算符的不同環(huán)境,即參數(shù)(操作數(shù))的數(shù)量或類型的差異,區(qū)分同一運算符的不同含義。運算符函數(shù)作為非成員函數(shù)時,所有的操作數(shù)必須出現(xiàn)在參數(shù)表中。17、有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 造價咨詢招標文件的特點
- 高質量印刷服務合同協(xié)議書模板
- 影視主持人兼職合同
- 補充協(xié)議與合同的關系分析
- 專業(yè)營銷服務合同
- 低碳出行和諧生活的構建
- 園林綠化苗木購銷合同
- 硬件購買與技術支持合同模板
- 土地使用權轉讓合同履行障礙
- 模板選購合同內容
- 廣東省廣州市越秀區(qū)2023-2024學年八年級上學期期末道德與法治試題(含答案)
- 北京市海淀區(qū)2023-2024學年高二上學期期末考試 英語 含答案
- 國開2024年秋《大數(shù)據(jù)技術概論》形考作業(yè)1-4答案
- 技能人才評價新職業(yè)考評員培訓在線考試(四川省)
- 生物化學實驗智慧樹知到期末考試答案章節(jié)答案2024年浙江大學
- 2023年秋季國家開放大學-02154-數(shù)據(jù)庫應用技術期末考試題帶答案
- 湘教版八上數(shù)學知識點歸納
- 肝衰竭的護理查房
- 綠化起重吊裝專項方案
- 可比樓盤量化定價法
- xxxxx年豬文化節(jié)
評論
0/150
提交評論