版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C++機試(選擇題)模擬試卷10(共9套)(共239題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共18題,每題1.0分,共18分。)1、有如下程序:#includeusingnamespacestd;classBase{private:voidfunl()const{cout<<“funl”;}protected:voidfun2()const{cout<<“fun2”;}public:voidfun3()const{cout<<“fun3”;}};classDerived:pmtectedBase{public:voidfun4()cormt{cout<<“fun4”;}};intmain(){Derivedobi;obj.funl();//①obj.fun2();//②obj.fun3();//③obj.fun4();//④return0;}其中有語法錯誤的語句是()。A、①②③④B、①②③C、②③④D、①④標準答案:B知識點解析:本題考查保護繼承中派生類對基類的訪問屬性,受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,保護基類的所有成員在派生類中都被保護起來,在類外不能訪問,所以①②③錯誤。2、軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是()。A、編輯軟件B、操作系統(tǒng)C、教務(wù)管理系統(tǒng)D、瀏覽器標準答案:B知識點解析:軟件根據(jù)應(yīng)用目標的不同,是多種多樣的。軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。應(yīng)用軟件是為解決特定領(lǐng)域的應(yīng)用而開發(fā)的軟件。系統(tǒng)軟件是計算機管理自身資源,提高計算機使用效率并為計算機用戶提供各種服務(wù)的軟件。支撐軟件是介于系統(tǒng)軟件和應(yīng)用軟件之間,協(xié)助用戶開發(fā)軟件的工具性軟件,包括輔助和支持開發(fā)和維護應(yīng)用軟件的工具軟件,還包括輔助管理人員控制開發(fā)進程和項目管理的工具軟件。3、已知函數(shù)fun的原型為intfun(int,int,int);下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標準答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。4、關(guān)于this指針的說法不正確的是()。A、不能在程序中修改this指針B、this指針可以給其他指針賦值,但不能修改this指針C、靜態(tài)成員函數(shù)中沒有this指針D、this指針可以被賦值標準答案:D知識點解析:this指針不能在程序中修改,不能被幅值;靜態(tài)成員沒有this指針,因為類中只有一個靜態(tài)成員函數(shù)實例,使用this指針無意義。5、有如下程序:#includeusingnamespacestd;classA{public:A(inti=0):r1(i){}voidprint(){cout<<’E’<*r1<<’-’;}voidprint(intx){cout<<’p’<*r1*r1<<’-’;}private:intr1;};intmain(){Aa1;constAa2(4);a1.print(2);a2.print();return0;}運行時的輸出結(jié)果是()。A、P8-E4B、P8-C16-C、P0-E4-D、P0-C16-標準答案:D知識點解析:在主函數(shù)中創(chuàng)建a1對象時,調(diào)用類A的默認構(gòu)造函數(shù),其數(shù)據(jù)成員r1的值等于0。當執(zhí)行a1.print(2)語句時,調(diào)用帶參數(shù)的print成員函數(shù),所以輸出結(jié)果為p0-,對象a2為常成員,所以其成員變量r1的值等于4,因為常對象只能調(diào)用常成員函數(shù),所以當執(zhí)行語句a2.print()語句時,輸出結(jié)果為C14-。6、有如下程序:#includeusingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<‘?’;}Name(char*fname){strcpy(name,fname);cout<<‘?’;)};intmain(){Namenames[3]={Name("張三"),Name("李四")};return0:}運行此程序輸出符號?的個數(shù)是()。A、0B、1C、2D、3標準答案:D知識點解析:類Name有兩個構(gòu)造函數(shù),在默認構(gòu)造函數(shù)中,給字符數(shù)組。Flame賦窄值,并輸出一個?;在帶有字符指針的構(gòu)造函數(shù)中,把字符指針fname所指的字符串賦給字符數(shù)組name,并輸出一個?。所以在主函數(shù)中,定義了Name的三個對象,F(xiàn)lame[0]、name[1]、name[2],在創(chuàng)建這三個對象時,會調(diào)用構(gòu)造帶參數(shù)的函數(shù)對前兩個對象賦值,調(diào)用默認的構(gòu)造函數(shù)把name[2]的值賦為空值。這時會輸出j個“?”符號。7、下列字符串中不能作為C++標識符使用的是()。A、WHILEB、userC、_lvarD、9stars標準答案:D知識點解析:在C++中變量名的命名必須遵循一定的原則,其中之一即是第一個字符必須是字母或者下劃線。8、下列符號中不屬于C++關(guān)鍵字的是()。A、friendB、namespaceC、continueD、byte標準答案:D知識點解析:此題考查的是C++語言的關(guān)鍵字。Friend是聲明友元函數(shù)或友元類時用到的關(guān)鍵字:namespace是定義或使用名字空間時用到的關(guān)鍵字;continue是終止本次循環(huán)直接開始下一次循環(huán)所用到的關(guān)鍵字:byte是字節(jié)的意思,它不是C++語言中的關(guān)鍵字。9、下列說法中錯誤的是()。A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承時基類中的private成員在派生類中是public的C、私有繼承時基類中的public成員在派生類中是private的D、保護繼承時基類中的public成員在派生類中是protected的標準答案:B知識點解析:公有繼承中,基類的公有成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。所以B是錯誤的,即選擇B。10、己知函數(shù)FA調(diào)用FB,若要把這兩個函數(shù)定義在同一個文件中,則()。A、FA必須定義在FB之前B、FB必須定義在FA之前C、若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前D、若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前標準答案:D知識點解析:在C++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當函數(shù)FA調(diào)用FB時,函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項D)為正確答案。11、有如下程序:#includeusingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()const{returnim;}Complex&operator+=(Complexa){re+=a.re;im+=a.im;return*this;}};ostream&operator<<(ostream&s,constComplex&z){returns<<’(’<A、(1,-2)B、(2,3)C、(3,5)D、(3,1)標準答案:D知識點解析:此題考查了運算符重載應(yīng)用。因為x和y都是Complex類的對象,Complex類中已經(jīng)重載了+=運算符,表達式x+=y(tǒng)就等價與x.operator+=(y),執(zhí)行后得到(3,1);接著計算cout<<(x+=y(tǒng)),其等價于調(diào)用operator<<(cout,(x+=y(tǒng))),最后輸出結(jié)果是(3,1)。12、有如下類定義: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知識點解析:類的成員初始化順序與成員變量在構(gòu)造函數(shù)中的位置先后順序無關(guān),只與成員變量在類中定義的先后順序有關(guān)。13、執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是()。for(inti=50;i>1;I-=2)cout<<’*’;A、24B、25C、26D、50標準答案:B知識點解析:此題考查的是for循環(huán)語句。執(zhí)行循環(huán)語句,變量i從50遞減,每次減2,所以循環(huán)會執(zhí)行25次,輸出25個‘*’。14、有如下類定義:classPoint{private;staticinthow_many;};_________how_many=0;要初始化Point類的靜態(tài)成員how_many,下劃線處應(yīng)填入的內(nèi)容是()。A、ingB、staticintC、intPoint::D、staticintPoint::標準答案:C知識點解析:此題考查的是靜態(tài)數(shù)據(jù)成員的初始化。靜態(tài)數(shù)據(jù)成員應(yīng)在類體外進行初始化,且初始化的一般格式為:數(shù)據(jù)類型類名::靜態(tài)數(shù)據(jù)成員名=初始值。15、下列函數(shù)原型聲明中,錯誤的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n);標準答案:C知識點解析:在C++中,函數(shù)在使用之前要預(yù)先聲明。這種聲明在標準C++中稱為函數(shù)原型,函數(shù)原型給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須提供的參數(shù)個數(shù)和類型。其語法為:<返回類型><函數(shù)名>(<形參列表>);使用函數(shù)原型說明有兩種形式:①直接使用函數(shù)定義的頭部,并在后面加上一個分號;②在函數(shù)原型說明中省略參數(shù)列表中的形參變量名,僅給出函數(shù)名、函數(shù)類型、參數(shù)個數(shù)及次序。在選項C)中,給出了形參變量m的初值。16、下列有關(guān)繼承和派生的敘述中,正確的是()。A、如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標準答案:D知識點解析:此題考查的是繼承和派生。無論是哪種繼承方式,派生類都能夠訪問基類的公有和保護成員,而不能訪問基類的私有成員,故選項A和B錯誤:公有繼承時,基類的對象不可作為派生類的對象處理,即基類對象不可賦值給派生類對象,所以選項C錯誤。17、有如下4個語句:①cout<<’A’<<setfill(’*’)<<left<<setw(7)<<’B’<<endl;②cout<<setfill(’*’)<<left<<setw(7)<<’A’<<’B’<<endl;③cout<<’A’<<serfill(’*’)<<right<<setw(7)<<’B’<<endl;④cout<<setfill(’*’)<<right<<setw(7)<<’A’<<’B’<<endl;其中能顯示A******B的是()。A、①和③B、①和④C、②和③D、②和④標準答案:C知識點解析:此題考查C++流的使用。setfill()作用是設(shè)置填充字符;left是使輸出數(shù)據(jù)在指定寬度內(nèi)左對齊:fight是使輸出數(shù)據(jù)在指定寬度內(nèi)右對齊。18、為類Matrix重載下列運算符時,只能作為Matrix類成員函數(shù)重載的運算符是()。A、+B、=C、<<D、++標準答案:B知識點解析:在C++中,=、[]、()、->以及所有的類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共35題,每題1.0分,共35分。)1、對序線性表(23,29,34,55,60,70,78)用二分法查找值為60的元素時,需要比較次數(shù)為()。A、1B、2C、3D、4標準答案:C知識點解析:根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進行比較,由于60大于55,所以在線性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進行比較,由于60小于70,所以在線性表的前半部分查找。③第三次比較的元素是前半部分的中間元素,即60,這時兩者相等,即查找成功。2、下列描述中,正確的是()。A、線性鏈表是線性表的鏈式存儲結(jié)構(gòu)B、棧與隊列是非線性結(jié)構(gòu)C、雙向鏈表是非線性結(jié)構(gòu)D、只有根結(jié)點的二叉樹是線性結(jié)構(gòu)標準答案:A知識點解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)與非線性結(jié)構(gòu)。如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個條件:①有且只有一個根結(jié)點;②每個結(jié)點最多有一個前件,也最多有一個后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu),又稱線性表。所以線性表、棧與隊列、線性鏈表都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。3、開發(fā)大型軟件時,產(chǎn)生困難的根本原因是()。A、大型系統(tǒng)的復(fù)雜性B、人員知識不足C、客觀世界千變?nèi)f化D、時間緊、任務(wù)重標準答案:A知識點解析:隨著計算機軟件規(guī)模的擴大,軟件本身的復(fù)雜性不斷增加,研制周期顯著變長,正確性難以保證,軟件開發(fā)費用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機”。4、兩個或兩個以上的模塊之間關(guān)聯(lián)的緊密程度稱為()。A、耦合度B、內(nèi)聚度C、復(fù)雜度D、連接度標準答案:A知識點解析:耦合度是模塊間互相連接的緊密程度的度量;內(nèi)聚度是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量。5、下列關(guān)于線性表的敘述中,不正確的是()。A、線性表可以是空表B、線性表是一種線性結(jié)構(gòu)C、線性表的所有結(jié)點有且僅有一個前件和后件D、線性表是由n個元素組成的一個有限序列標準答案:C知識點解析:線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點沒有前件,最后一個結(jié)點沒有后件,其他結(jié)點有且只有一個前件和后件,所以選項C)是錯誤的。6、設(shè)有如下關(guān)系表:則下列操作正確的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=R∪S標準答案:C知識點解析:T就是關(guān)系R中有的,同時S中也有的有序組(4、5、6),即交運算(∩)。7、以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。A、可隨機訪問B、需要連續(xù)的存儲空間C、不便于插入和刪除D、邏輯相鄰的數(shù)據(jù)物理位置上不相鄰標準答案:D知識點解析:線性表的順序存儲是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。8、在三級模式之間引入兩層映像,其主要功能之一是()。A、使數(shù)據(jù)與程序具有較高的獨立性B、使系統(tǒng)具有較高的通道能力C、保持數(shù)據(jù)與程序的一致性D、提高存儲空間的利用率標準答案:A知識點解析:數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫的三級模式之間提供了兩層映像,保證了數(shù)據(jù)庫中數(shù)據(jù)的較高的邏輯獨立性和物理獨立性。9、下列方法中,屬于白盒法設(shè)計測試用例的方法的是()。A、錯誤推測B、因果圖C、基本路徑測試D、邊界值分析標準答案:C知識點解析:白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。10、假定MyClass為一個類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為()。A、MyClass(MyClassx);B、MyClass(MyClass&x);C、MyClass(&x);D、MyClass(x);標準答案:B知識點解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),所以函數(shù)名字為MyClass,但它只有一個參數(shù),這個參數(shù)是本類的對象,即x;而且采用對象的引用的形式,也就是&x。所以本題答案是B。11、下列函數(shù)的功能是判斷字符串str是否對稱,對稱則返回true,否則返回false,則橫線處應(yīng)填上()。Boolfun(char*str){inti=0,d=0;while(str[j])j++;for(j--;i<j&&str[i]=str[j];i++j--);reruni______j;}A、>==B、‖C、&&D、<=標準答案:A知識點解析:while循環(huán)取串長度,賦值給j,然后在for循環(huán)中由串兩邊開始向中間進行字符比較,當最后i和j標識字符位置的變量相等,那么奇數(shù)個字符,或者i大于j時那么偶數(shù)個字符,則表示是對稱的。12、有以下程序,輸出結(jié)果()。#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):re(r),im(i){}doublerealoconst{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;};intmain(){Complexa=Complex(1,1)+Complex(5);cout<<a.real()<<’+’<<a.imag()<<’i’<<end1;return0;}A、6+iB、2i+5C、6+1iD、1i+5標準答案:C知識點解析:由主函數(shù)入手,調(diào)用“Complexa=Complex(1,1)+Complex(5);”,實際是“Complexa=Complex(1,1)+Complex(5,0);”,調(diào)用“returnComplex(re+c.re,im+c.im);”結(jié)果為:6+1i。13、有以下程序段:#include<iostream.h>#defineMAX(x,y)(x)>(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=MAX(i,j)*10;cout<<k<<end1;}程序執(zhí)行后的輸出結(jié)果是()。A、15B、100C、150D、10標準答案:C知識點解析:題目程序中的MAX函數(shù)是利用條件運算符為?:求最大值。即(x>y)?(x):(y)是當x大于y時取x,否則取y。當i=10,j=15時,“MAX(i,i)”的值為15,所以“k=MAX(i,j)*10;”答案為:150。14、定義如下枚舉類型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};表達式Wednesday=Friday的值是()。A、falseB、trueC、2D、異常標準答案:B知識點解析:enum<枚舉類型名>{<枚舉元素表>);其中:關(guān)鍵詞“enum”表示定義的是枚舉類型,枚舉類型名由標識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達式值為真,即true。15、以下程序運行后的輸出結(jié)果是()。#include<iostream.h>voidmain(){charaH=’’abbcabbcabbc’’;inti=0,j=0,k=0;while(a[i]){if(a[i]==’a’)j++;if(a[i]==’b’)k++;i++;}cout<<j<<’’’’<<k<<end1;}A、2,6B、3,5C、4,7D、3,6標準答案:D知識點解析:程序中首先定義字符數(shù)組a,然后在while循環(huán)中統(tǒng)計字符a和b的個數(shù)。其中i記錄a的個數(shù),k記錄b的個數(shù)。第一個if語句是當?shù)趇個字符為a時,i加1;第二個if語句是當?shù)趇個字符為b時,k加1。16、假定a=3,下列程序的運行結(jié)果是()。#include<iostream.h>intfun(intn);voidmain(){cout<<’’Pleaseinputanumber:’’;inta,result=0;cin>>a;result=fun(a);cout<<result<<end1;}intfun(intn){iIltp=1,result=0;tbr(inti=1;i<=n;i++){p*=i;result+=p;}returnresult;}A、4B、8C、9D、20標準答案:C知識點解析:由程序main主函數(shù)入手,調(diào)用fun函數(shù)獲得返回值result輸出。題目中假定a=3,即調(diào)用語句fun(a.)中的輸入?yún)?shù)為a,進入fun函數(shù),在for循環(huán)中當i小于等于n,即輸入?yún)?shù)3時,循環(huán)3次執(zhí)行“p*=i;result+=p;”語句。即執(zhí)行三次p=p*i,result=result+p,result的結(jié)果為9。返回的fun函數(shù)結(jié)果為9,即“cout<<result<<end1;”輸出9。17、下列關(guān)于指針的運算中,()是非法的。A、兩個指針在一定條件下,可以進行相等或不等的比較運算B、可以將一個空指針賦值給某個指針C、一個指針可以加上兩個整數(shù)之差D、兩個指針在一定條件下可以相加標準答案:D知識點解析:指針變量如果指向同一個數(shù)組的元素,則可以進行比較,所以A是正確的。指針變量的賦值就是將一個變量地址賦給一個指針變量。并且指針變量可以是空值,即該指針不指向任何變量。B同樣也是正確的。指針變量加/減一個整數(shù)是將該指針變量的原值(是一個地址)和它指向的變量所占用的內(nèi)存單元字節(jié)數(shù)相加或相減。即C也是正確的。如果兩個指針指向同一個數(shù)組元素,兩個指針是可以相減的,標識兩個指針之間的元素個數(shù)。但是它們是不可相加的。18、下面程序的輸出結(jié)果為()。#include<iostream.h>voidmain(){intx;int&y=x;//變量引用y=99;cout<<’’x=’’<<x<<end1;}A、x=9913)x=9B、x=0C、異常標準答案:A知識點解析:程序中的“int&y=x;”語句中的“&”引用運算符。&y=x語句可以理解為y具有x的地址,所以y的值99,x的值也是99,所以答案是x=99。19、下i面程序輸出的結(jié)果為()。#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知識點解析:函數(shù)fun中定義的參數(shù)a和b為形式參數(shù),它們并不是實際存在的數(shù)據(jù),只有在發(fā)生函數(shù)調(diào)用時才被分配內(nèi)存空間,結(jié)束后,形參所占有的內(nèi)存單元也被釋放。并且函數(shù)fun沒有返回值,它做的交換操作,并不能影響實際參數(shù)m和n。所以輸出值保持不變,仍然是1和2,即輸出:12。20、存在定義inta[10],x,*pa;,若pa=&a[0],下列的哪個選項和其他3個選項不是等價的()?A、x=*pa;B、x=*(a+1);C、x=*(pa+1);D、x=a[1];標準答案:A知識點解析:選項B、C、D都是獲取a(1)元素,而選項A是獲取a(0)的元素。21、對數(shù)組名作函數(shù)的參數(shù),下面描述正確的是()。A、數(shù)組名作函數(shù)的參數(shù),調(diào)用時將實參數(shù)組復(fù)制給形參數(shù)組B、數(shù)組名作函數(shù)的參數(shù),主調(diào)函數(shù)和被調(diào)函數(shù)共用一段存儲單元C、數(shù)組名作參數(shù)時,形參定義的數(shù)組長度不能省略D、數(shù)組名作參數(shù),不能改變主調(diào)函數(shù)中的數(shù)據(jù)標準答案:B知識點解析:數(shù)組作為參數(shù)實參傳遞的是數(shù)組的首地址。所以主調(diào)函數(shù)和被調(diào)函數(shù)共用一段存儲單元。22、關(guān)于靜態(tài)成員的描述中,錯誤的是()。A、靜態(tài)成員可分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)B、靜態(tài)數(shù)據(jù)成員定義后必須在類體內(nèi)進行初始化C、靜態(tài)數(shù)據(jù)成員初始化不使用其構(gòu)造函數(shù)D、靜態(tài)數(shù)據(jù)成員函數(shù)中不能直接引用非靜態(tài)成員標準答案:C知識點解析:可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。23、下列程序的輸出結(jié)果是()。#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,然后調(diào)用函數(shù)fun,實際參數(shù)為n。函數(shù)fun中參數(shù)為引用,為地址。即函數(shù)中形參的改變會影響實參的值,函數(shù)的功能是參數(shù)乘以2。24、下列說法中錯誤的是()。A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承時基類中的private成員在派生類中仍是private的C、私有繼承時基類中的public成員在派生類中是private的D、保護繼承時基類中的public成員在派生類中是protected的標準答案:B知識點解析:此題考查的是繼承時基類成員屬性改變。選項B中,公有繼承時基類中的private成員在派生類中不是private的,而是不可訪問的。所以選項B錯誤;其他選項敘述均正確。25、多繼承的構(gòu)造順序可分為如下四步:①所有非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造②所有虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造③所有子對象的構(gòu)造函數(shù)按照它們聲明的順序構(gòu)造④派生類自己的構(gòu)造函數(shù)體這四個步驟的正確順序是()。A、④③①②B、②④⑨①C、②①③④D、③④①②標準答案:C知識點解析:多繼承派生類的構(gòu)造順序是:首先調(diào)用虛基類的構(gòu)造函數(shù),然后調(diào)用非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造,其次調(diào)用子對象的構(gòu)造函數(shù),最后是派生類構(gòu)造函數(shù)中的內(nèi)容。26、設(shè)有以下定義和程序:#include<iostream.h>classA1{public:voidshow1(){cout<<’’classA1’’<<end1;}};classA2:publicA1{public:voidshow2(){tout<<’’classA2’’<<end1;}};classA3:protectedA2{public:voidshow3(){cout<<’’classA1’’<<end1;}};voidmain(){A1obj1;A2obj2;A3obj3;}則以下不合語法的調(diào)用語句是()。A、obj1.show1();B、obj2.show1();C、obj3.show1();D、obj2.show2();標準答案:C知識點解析:由于classA3:protectedA2,所以類A3的對象obj3不能直接訪問基類A1的成員函數(shù)show1(),所以選項C是錯誤的;其他選項均有訪問的權(quán)限,正確。27、下面程序的輸出結(jié)果是()。#include<iostream>#include<math.h>usingnamespacestd;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<<distances(p1,p2)<<end1;return0;}A、2B、4C、8D、16標準答案:B知識點解析:分析題目,最終要實現(xiàn)的結(jié)果是sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)),其中的a.x和a.y分別指p1(1,2)中的1和2。這樣容易得到結(jié)果是(1-5)*(1-5)+(2-2)*(2-2)=16,再開方得到結(jié)果為4。28、有以下程序:#include<iostream>usingnamespacestd;classR{public:R(intr1,intr2){R1=rl;R2=r2;}voidprint();Voidprint()const;private:intR1,R2;};voidR::print(){cout<<Rl<<’’,’’<<R2<<end1;}voidR::print()const{cout<<R1<<’’,’’<<R2<<end1;}intmain(){Ra(5,4);constRb(20,52);b.print();return0;}執(zhí)行后的輸出結(jié)果是()。A、5,4B、4,5C、20,52D、52,20標準答案:C知識點解析:此題中,語句Ra(5,4)調(diào)用構(gòu)造函數(shù)R(intr1,intr2)但未有輸出結(jié)果;b.print();調(diào)用常成員函數(shù)(因為b是常對象)voidprin()const,輸出結(jié)果是20,52。29、下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;template<typenameT>Tfun(Ta,Tb){return(a<=b)?a:b;}intmain(){cout<<fun(3,6)<<’,’<<fun(3.14F,6.28F)<<end1;return0;}A、0,3.14B、3,3.14C、3,3D、3.14,3.14標準答案:B知識點解析:此函數(shù)模板的功能是輸出a、b兩數(shù)中較小的那個數(shù)。(3,6)輸出3,(3.14F,6.28F)輸出3.14。30、關(guān)于模板,下列說法不正確的是()。A、用類模板定義一個對象時,不能省略實參B、類模板只能有虛擬類型參數(shù)C、類模板本身在編譯中不會生成任何代碼D、類模板的成員函數(shù)都是模板函數(shù)標準答案:B知識點解析:類模板不是一個實實在在的類,本身在編譯中不會生成任何代碼;用類模板定義一個對象時,不能省略實參:類模板的成員函數(shù)都是模板函數(shù)。C++中可以為類模板的參數(shù)設(shè)置默認值,所以選項B錯誤。31、如果一個模板聲明列出了多個參數(shù),則每個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須使用()關(guān)鍵字來修飾。A、constB、staticC、voidD、class標準答案:D知識點解析:如果一個模板聲明列出了多個參數(shù),則每個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須使用class關(guān)鍵字來修飾。32、下列關(guān)于this指針的敘述中,正確的是()。A、this指針是一個隱含指針,它隱含于類的成員函數(shù)中B、只有在使用this時,系統(tǒng)才會將對象的地址賦值給thisC、類的友元函數(shù)也有this指針D、this指針表示了成員函數(shù)當前操作的數(shù)據(jù)所屬的對象標準答案:D知識點解析:this指針是成員函數(shù)所屬對象的指針,它指向類對象的地址;它隱含于每個類的非靜態(tài)成員函數(shù)中;this指針只能在類的成員函數(shù)中使用,它指向該成員函數(shù)被調(diào)用的對象;靜態(tài)成員函數(shù)沒有this指針,因為類中只有一個靜態(tài)成員函數(shù)實例,使用this指針無意義。33、下列有關(guān)函數(shù)重載的敘述中,錯誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認值標準答案:C知識點解析:此題考查的是函數(shù)重載的概念。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。故選項C錯誤。34、對于一個類定義,下列敘述中錯誤的是()。A、如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個拷貝構(gòu)造函數(shù)B、如果沒有定義缺省的構(gòu)造函數(shù),編譯器將一定生成一個缺省的構(gòu)造函數(shù)C、如果沒有定義構(gòu)造函數(shù),編譯器將生成一個缺省的構(gòu)造函數(shù)和一個拷貝構(gòu)造函數(shù)D、如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會生成任何構(gòu)造函數(shù)標準答案:B知識點解析:此題考查的是構(gòu)造函數(shù)。如果一個類中沒有定義任何構(gòu)造函數(shù),編譯器將生成一個不帶參數(shù)的公有缺省構(gòu)造函數(shù)。但只要定義了一個任意的構(gòu)造函數(shù),就不會生成缺省構(gòu)造函數(shù)了。35、下列關(guān)于派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的說法中,錯誤的是()。A、派生類的構(gòu)造函數(shù)會隱含調(diào)用基類的構(gòu)造函數(shù)B、如果基類中沒有缺省構(gòu)造函數(shù),那么派生類必須定義構(gòu)造函數(shù)C、在建立派生類對象時,先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)D、在撤銷派生類對象時,先調(diào)用基類的析構(gòu)函數(shù),再調(diào)用派生類的析構(gòu)函數(shù)標準答案:D知識點解析:此題考查的是派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。在撤銷派生類對象時,析構(gòu)函數(shù)的執(zhí)行過程和構(gòu)造函數(shù)嚴格相反,即:對派生類新增普通成員進行清理;調(diào)用成員對象析構(gòu)函數(shù),調(diào)用基類析構(gòu)函數(shù)對基類進行清理。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共21題,每題1.0分,共21分。)1、定義無符號整數(shù)類為UInt,下面可以作為類UInt實例化值的是()。A、—369B、369C、0.369D、整數(shù)集合{1,2,3,4,5)標準答案:B知識點解析:UInt表示的是無符號整數(shù)類,所以它的每個實例都是一個無符號整數(shù),所以排除選項A)和選項C),選項D)是整數(shù)集合,所以也排除。2、關(guān)于靜態(tài)成員的描述中,錯誤的是()。A、靜態(tài)成員可分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)B、靜態(tài)數(shù)據(jù)成員定義后必須在類體內(nèi)進行初始化C、靜態(tài)數(shù)據(jù)成員初始化不使用其構(gòu)造函數(shù)D、靜態(tài)數(shù)據(jù)成員函數(shù)中不能直接引用非靜態(tài)成員標準答案:C知識點解析:可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。3、下面不屬于軟件設(shè)計階段任務(wù)的是()。A、軟件總體設(shè)計B、算法設(shè)計C、制定軟件確認測試計劃D、數(shù)據(jù)庫設(shè)計標準答案:C知識點解析:軟件設(shè)計階段總體分為兩部分:概要設(shè)計和詳細設(shè)計,此階段的主要任務(wù)就是將需求規(guī)格說明文檔轉(zhuǎn)換為軟件設(shè)計文檔,將需求階段提出的問題,一一解釋,形成詳細設(shè)計文檔,并根據(jù)功能要求,定制相應(yīng)數(shù)據(jù)結(jié)構(gòu)、各種流程圖等,為下一步編碼做準備。4、算法的空間復(fù)雜度是指()。A、算法在執(zhí)行過程中所需要的計算機存儲空間B、算法所處理的數(shù)據(jù)量C、算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標準答案:A知識點解析:算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A。5、以下()不屬于對象的基本特征。A、繼承性B、封裝性C、分類性D、多態(tài)性標準答案:A知識點解析:對象具有如下特征:.標識惟一性。指對象是可區(qū)分的。.分類性。指可以將具有相同屬性和操作的對象抽象成類。.多態(tài)性。指同一個操作可以是不同對象的行為。.封裝性。從外面看只能看到對象的外部特征,而不知道也無需知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法。.模塊獨立性好。對象是面向?qū)ο蟮能浖幕灸K,對象內(nèi)部各種元素彼此結(jié)合得很緊密,內(nèi)聚性強。6、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)管理技術(shù)的發(fā)展經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。人工管理階段無共享,冗余度大;文件管理階段共享性差,冗余度大;數(shù)據(jù)庫系統(tǒng)管理階段共享性大,冗余度小。7、程序調(diào)試的任務(wù)是A、設(shè)計測試用例B、驗證程序的正確性C、發(fā)現(xiàn)程序中的錯誤D、診斷和改正程序中的錯誤標準答案:D知識點解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟什中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于一定的調(diào)試工具去執(zhí)行并找出錯誤的具體位置。軟件測試貫穿整個軟件生命期,調(diào)試主要在開發(fā)階段。8、如果表達式一x/y中的“一”和“/”是作為友元函數(shù)重載的運算符,采用運算符函數(shù)調(diào)用格式,該表達式還可表示為()。A、operator/(x.operato--(),y);B、operator/(operator--(x),y);C、x.operator--().operator/(y);D、y.operator/(operator--(x));標準答案:B知識點解析:運算符重載實際上時函數(shù)的重載。重載運算符的一般格式:函數(shù)類型operator運算符名稱(參數(shù)表)。重載運算符之后:函數(shù)operator+重載運算符“+”?!耙弧敝剌d為“operator-;”,“/”重載為“operator/”。另外重載不能改變運算的優(yōu)先級,-x/y計算-x后,除以y,所以表達式改寫為:operator/(operator-(x),y);。9、有如下程序段:inti=4;intj=1;intmain(){inti=8,j=i;eout<<i<<j<<end1;}運行時的輸出結(jié)果是()。A、44B、4lC、88D、81標準答案:C知識點解析:這個程序定義了全局整型對象i和i,其值分別等于4和1。而在主函數(shù)中定義了局部整型對象i和.j,i值賦予8,再把i值賦給i,接著輸出i和j的值,所以其結(jié)果為88。這個題日要注意的一點是,全局整型對象i和i和主函數(shù)中定義了局部整型對象i和j,在計算機內(nèi)存中表示的是不同的存儲單元。它們的值是獨自存放的,互相不同。10、在函數(shù)中,可以用auto、extem、register和static這四個關(guān)鍵字中的一個來說明變量的存儲類型,如果不說明存儲類型,則默認的存儲類型是()。A、autoB、externC、registerD、static標準答案:A知識點解析:此題考查的是存儲類型。C++語言變量的存儲類型分為如下幾種類型:auto一一一函數(shù)內(nèi)部的局部變量;static一一一靜態(tài)存儲分配;extern一一一全局變量;register一一一變量存儲在硬件寄存器中。11、下面關(guān)于虛函數(shù)的描述中正確的是()。A、虛函數(shù)是一個靜態(tài)成員函數(shù)B、虛函數(shù)是一個非成員函數(shù)C、虛函數(shù)既可以在函數(shù)說明時定義,也可以在函數(shù)實現(xiàn)時定義D、派生類的虛函數(shù)與基類中對應(yīng)的虛函數(shù)具有相同的參數(shù)個數(shù)和類型標準答案:D知識點解析:在基類中用vinual聲明成員函數(shù)為虛函數(shù),所以AB錯誤。在派生類中重新定義此函數(shù),要求函數(shù)名、函數(shù)類型、函數(shù)參數(shù)個數(shù)和類型全部與基類的虛函數(shù)相同。12、有如下程序:#includeusingnamespacestd;classPair{intm;intn;public:Pair(inti,intj):m(i),n(j){}booloperator>(Pajrp)const;∥須在類體外給出定義};intmain(){Pairp1(3,4),p2(4,3),p3(4,5);cout<<(p1>p2)<<(p2>p1)<的功能是比較兩個Pair對象的大小,當左邊對象大時,返回true,否則返回false。比較規(guī)則是首先比較兩對象的m成員,m大者為大:當m相等時比較n,n大者為大。程序輸出0101,下列對運算符重載函數(shù)的正確定義是()。A、boolPair∷operator>(Pairp)const{if(m!=p.In)returnm>p.m;returnn>p.n;}B、boolPair∷operator>(Pair.p){if(m!=p.m)retumm>p.m;return>p.n;}C、boolPair∷operator>(Pairp)const{if(m>p.m)retumtrue;returnn>p.n;}D、boolPair∷operator>(Pairp){if(m>p.m)returntrue;returnn>p.n;}標準答案:A知識點解析:按照比較規(guī)則:首先比較兩對象的m成員,m大者為大:當m相等時比較n,n大者為大。這條規(guī)則的用C++寫出來就是選項A。13、有如下程序段:inti=5;while(inti=0){cout<<’*’;i--;}運行時輸出’’*’’的個數(shù)是()。A、0B、1C、5D、無窮標準答案:A知識點解析:因為while循環(huán)中,因為i的值等于0,所以while循環(huán)體一次也不執(zhí)行。因而運行時輸出“*”的個數(shù)是0。14、有如下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operator=(constMyClass&x){cout<<3;return*this;}~MyClass0{cout<<4;}};intmain(){MyClassobj1(1),obj2(2),obj3(obj1);return0:}運行時的輸出結(jié)果是()。A、112444B、11114444C、121444D、11314444標準答案:A知識點解析:當創(chuàng)建MyClass類對象obj1(1)和obj2(2)時候,調(diào)用類構(gòu)造函數(shù)會輸出兩個1,然后創(chuàng)建類對象obj3(obj(1))時,會調(diào)用拷貝類構(gòu)造函數(shù),輸出一個2,然后當main函數(shù)結(jié)束時候,調(diào)用三個對象的析構(gòu)函數(shù)會輸出三個4。15、下列有一維數(shù)組a的定義中,語法正確的是()。A、inta(10);B、intn=7,a[n];C、intn;cin>>n;inta[n];D、constintsize=10;inta[size];標準答案:D知識點解析:定義一維數(shù)組的一般格式為:類型標識符數(shù)組名[常量表達式];常量表達式的值表示元素的個數(shù),即數(shù)組長度。常量表達式中可以包括常量、常變量和符號常量,但不能包含變量。也就是說,C++不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運行過程中變量的值。16、有如下類定義:ClassTest{chara;constcharb;public:Test(charc){a=c;b=c;)//第1行voidf(chara)const{this->a=a;}//第2行voidg(charb){this->b=b;)//第3行charh()const{returna;}//第4行};編譯時沒有錯誤的行是()。A、第1行B、第2行C、第3行D、第4行標準答案:D知識點解析:類Test中的常成員函數(shù)h()返回數(shù)據(jù)成員a的值。17、有如下兩個類定義:classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一個成員變量的定義是錯誤的,這個變量是()。A、vlB、v2C、v3D、v4標準答案:C知識點解析:在定義類的數(shù)據(jù)成員時,類中的數(shù)據(jù)成員可以是任意類型,包括整型、浮點型、字符符型、數(shù)組、指針和引用等,也可以是對象。但是要注意,只有另外一個類的對象,才可以作為該類的成員,即作為類的成員對象存在。自身類的對象是不可以作為自身類的成員存在,但自身類的指針可以。對于本題,在定義類BB時,不能包括其對象v3。18、若要對Data類中重載的加法運算符成員函數(shù)進行聲明,下列選項中正確的是()。A、Data+(Data);B、Dataoperator+{Data};C、Data+operator{Data};D、operator+(Data,Data);標準答案:B知識點解析:“+”是一個二元運算符,因此作為成員函數(shù)重載時參數(shù)表中只有一個參數(shù),對應(yīng)于第二個操作數(shù),而第一個操作數(shù)是對象本身。運算符函數(shù)的函數(shù)名是由運算符前加關(guān)鍵字operator構(gòu)成的。19、下列關(guān)于文件流的描述中,正確的是()。A、文件流只能完成針對磁盤文件的輸入和輸出B、建立一個文件流對象時,必須同時打開一個文件C、若輸入流要打開的文件不存在,將建立一個新文件D、若輸出流要打開的文件不存在,將建立一個新文件標準答案:D知識點解析:對于輸入文件流類ifstream,默認的打開模式是iosbase::in,當以這種方式打開文件而文件又不存在時,通過fail()可測試打開失敗(返回值為true),對于輸出文件流類ofstream,默認的打開模式是ios_base::out,當以這種方式.打開文件而文件又不存在時,將自動建立新文件。20、下列類模板的定義中語法格式錯誤的是()。A、template<classT>classBuffer{/*…*/};B、template<typenameT>classBuffer{/*…*/};C、template<classT1,classT2>classBuffer{/*…*/};D、template<T>classBuffer{/*…*/};標準答案:D知識點解析:定義類模板的一般形式是:template<類型名參數(shù)名1,類型名參數(shù)名2,…>class類名{類聲明體};模板的類型參數(shù)由關(guān)鍵字class或關(guān)鍵字typename及其后的標識符構(gòu)成。在模板參數(shù)表中關(guān)鍵字class和typename的意義相同。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知識點解析:此題考查的是轉(zhuǎn)義字符。在字符常量或字符串中,以“\”開頭的一系列字符被看做是一個轉(zhuǎn)義字符。要表示“\”字符,必須使用轉(zhuǎn)義字符“\\”。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共21題,每題1.0分,共21分。)1、數(shù)據(jù)的存儲結(jié)構(gòu)是指()。A、存儲在外存中的數(shù)據(jù)B、數(shù)據(jù)所占的存儲空間量C、數(shù)據(jù)在計算機中的順序存儲方式D、數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示標準答案:D知識點解析:在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系,即為數(shù)據(jù)的存儲結(jié)構(gòu)。2、下列運算符不能重載為友元函數(shù)的是()。A、=()()一>B、+一++一一C、><>=<=D、+=一=*=/=標準答案:A知識點解析:關(guān)于運算符重載為友元函數(shù)有如下規(guī)定:①一般情況下,單目運算符最好重載為類的成員函數(shù),雙目運算符則最好重載為類的友元函數(shù);②雙目運算符“=、()、[]、一>”不能重載為類的友元函數(shù)。所以本題答案為A。3、下列敘述中正確的是A、順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)的B、順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈式存儲結(jié)構(gòu)只針對非線性結(jié)構(gòu)C、順序存儲結(jié)構(gòu)能存儲有序表,鏈式存儲結(jié)構(gòu)不能存儲有序表D、鏈式存儲結(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間標準答案:A知識點解析:順序存儲方式主要用于線性的數(shù)據(jù)結(jié)構(gòu),它把邏輯上相鄰的數(shù)據(jù)元素存儲在物理上相鄰的存儲單元里,結(jié)點之間的關(guān)系由存儲單元的鄰接關(guān)系來體現(xiàn)。而鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)的。4、軟件是指()。A、程序B、程序和文檔C、算法加數(shù)據(jù)結(jié)構(gòu)D、程序、數(shù)據(jù)與相關(guān)文檔的完整集合標準答案:D知識點解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分.是包括程序、數(shù)據(jù)與相關(guān)文檔的完整集合。軟件由兩部分組成:一是機器可執(zhí)行的程序和數(shù)據(jù);二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關(guān)的文檔。5、關(guān)于靜態(tài)成員的描述中,錯誤的是()。A、靜態(tài)成員可分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)B、靜態(tài)數(shù)據(jù)成員定義后必須在類體內(nèi)進行初始化C、靜態(tài)數(shù)據(jù)成員初始化不使用其構(gòu)造函數(shù)D、靜態(tài)數(shù)據(jù)成員函數(shù)中不能直接引用非靜態(tài)成員標準答案:C知識點解析:可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。6、有如下程序:#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;_______return0:}若程序的輸出結(jié)果是:123則程序中橫線處的語句是()。A、cout<<fun1.value()<<Fun:i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<<fun2.value()<<Fun::i;D、cout<<fun2.value()<<Fun::i<<fun1.value();標準答案:A知識點解析:此題因為定義的變量i是static類型的(main()函數(shù)內(nèi)部的i只是一個局部變量),所以,選項A中fun1.value()的返回值是1,F(xiàn)un::i引用的是外部變量會輸出2;fun2.value();會調(diào)用常成員函數(shù)intvalue()const{returni+l;}使得外部靜態(tài)變量i的值增加為3,故輸出3。7、層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。A、記錄長度B、文件的大小C、聯(lián)系的復(fù)雜程度D、數(shù)據(jù)之間的聯(lián)系方式標準答案:D知識點解析:根據(jù)數(shù)據(jù)之間的聯(lián)系方式,可以把數(shù)據(jù)庫分為層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫,它們是根據(jù)數(shù)據(jù)之間的聯(lián)系方式來劃分的。8、下列程序用來判斷數(shù)組中特定元素的位置所在,則輸出結(jié)果為()。#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入手,調(diào)用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)后的結(jié)果就是p[*j]存放數(shù)組中的最大值,并且指針j為該值的標識位。可以看出數(shù)組的最大值是9標識位為2。9、有如下類定義:classXX{intxx;public:xx0:xx(0){cout<<‘A’;}XX(intn):xx(n){cout<<’B’;}};classYY:publicXX{intyy;public:YY():yy(0){cout<A、YYyl(0,0);B、YYy2(1);C、YYy3(0);D、YYy4;標準答案:D知識點解析:考查的是類的繼承。選項A的執(zhí)行結(jié)果為。BO,建立YY的對象vl,首先調(diào)用其構(gòu)造函數(shù),YY繼承于XX所以先調(diào)用的為XX的構(gòu)造函數(shù),根據(jù)輸入的參數(shù)可知輸出B,然后執(zhí)行YY的構(gòu)造函數(shù)輸出0;同理,選項B的執(zhí)行結(jié)果為B1,選項C的執(zhí)行結(jié)果為BO。10、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0):valB(x){cout<A、2332B、2323C、3232D、3223標準答案:A知識點解析:在主函數(shù)中創(chuàng)建類Derived對象obj12(2,3)時,因為類Derived是從基類Base派生而來,所以首先調(diào)用基類的構(gòu)造函數(shù),輸出2,再調(diào)用派生類構(gòu)造函數(shù),輸出3。當主函數(shù)運算結(jié)果時,首先調(diào)用派生類的析構(gòu)函數(shù),輸出3,再調(diào)用基類的析構(gòu)函數(shù)輸出2。所以輸出結(jié)果為2332。11、下列語句中,錯誤的是()。A、constintbuffeF256;B、constdouble*point;C、intconstbuffeF256;D、double*constpoint;標準答案:D知識點解析:此題考查的是常指針和指針常量的概念。常指針是指向一個常量的指針變量,指針自身的內(nèi)容可以改變但指針指向的內(nèi)容不可以改變;指針常量是一個常量,即不能修改指針自身的內(nèi)容,但可以通過指針修改其所指向的內(nèi)容。D選項中指針常量point沒有初始化,編譯無法通過。12、已知函數(shù)FA調(diào)用FB,若要把這兩個函數(shù)定義在同一個文件中,則()。A、FA必須定義在FB之前B、FB必須定義在FA之前C、若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前D、若EB定文在FA之后,則FB的原型必須出現(xiàn)在FA前定義之前標準答案:D知識點解析:在c++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當函數(shù)FA調(diào)用FB時,函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項D)為正確答案。13、已知函數(shù)fun的原型為intfun(int,int,int),下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標準答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。14、必須用對大括號括起來的程序段是()。A、switch語句中的case標號語句B、if語句的分支C、循環(huán)語句的循環(huán)體D、函數(shù)的函數(shù)體標準答案:D知識點解析:此題考查的是語句塊和函數(shù)。if語句的分支和循環(huán)語句的循環(huán)體可以是一條語句也可以使一個語句塊,所以不是必須用一個大括號括起來;switch語句中的case標號語句可以是一系列語句,也可以包含語句塊,也不是必須用一對大括號括起來:函數(shù)的函數(shù)體必須用一對大括號括起來。15、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assPoint{intx,y;public:Point(intx1=0,inty1=0):x(x1),y(y1){}intget(){retumx+y;}};c1assCirc1e{Pointcenter;intradius;public:Circ1e(intcx,intcy,intr):center(cx,cy),radius(r){}intget(){returncenter.get()+radius;}};intmain(){Circ1ec(3,4,5);cout<<c.get0<<end1;return0:}運行時的輸出結(jié)果是()。A、5B、7C、9D、12標準答案:D知識點解析:根據(jù)類Point和類Circle的定義可知,類Circle的實例c(3,4,5)的成員函數(shù)c.get()返回值為3+4+5=12。16、若有定義“intx=4,y=5;”,則表達式“y>x++?x--:y++”的值為()。A、3B、4C、5D、6標準答案:C知識點解析:在表達式“y>x++?x--:y++”中,由于自加(++)運行符的優(yōu)前級高于比較運算符(>),所以首先進行自加運算,即變量x的值前自加1,等于5。此時表達式y(tǒng)>x不成立,所以整個表達式的值等于y++的值,由于y++是后自加運算,所以其值等于5。17、在一個派生類的成員函數(shù)中,試圖調(diào)用其基類的成員函數(shù)“voidf();”,但無法通過編譯。這說明()。A、f()是基類的私有成員B、f()是基類的保護成員C、派生類的繼承方式為私有D、派生類的繼承方式為保護標準答案:A知識點解析:在派生類對基類的三種繼承形式中,都無法對基類的私有成員訪問A正確。在B中,三種繼承方式都能訪問基類的保護成員,故B不正確。C選項的情況在f()是基類私有成員情況下是對的,但是還有別的可能,并不一定正確。同樣D也不一定正確。18、有如下程序:#incLude<iostream>usingnamespacestd;c1assA{public:A(){cout<"A’;}~A(){cout<<’C’;}};c1assB:publicA{public:BO{cout<<’G’;}~BO{couK<’T’;}};intmain0{Bobj;return0;}運行這個程序的輸出結(jié)果是()。A、GATCB、AGTCC、GACTD、AGCT標準答案:B知識點解析:派生類B是由基類A公開繼承而來,所以在創(chuàng)建類B的obj對象時,首先執(zhí)行基類A的構(gòu)造函數(shù)A(),輸出A,再執(zhí)行派生類B的構(gòu)造函數(shù)BO,輸出G,當程序結(jié)束時,首先執(zhí)行派生類的析構(gòu)函數(shù)~BO,輸出T,再執(zhí)行基類A的析構(gòu)函數(shù)~A(),輸出C。19、下列運算符函數(shù)中肯定不屬于類FunNumber的成員函數(shù)的是()。A、intoperator-(FunNumber);B、FunNumberoperator-();C、FunNumberoperator-(int);D、.intoperator-(FunNumber,F(xiàn)unNumber);標準答案:D知識點解析:此題考查的是運算符“-”的重載。“-”運算符有一元和二元兩種,且均可以重載為成員函數(shù)和非成員函數(shù)。運算符重載為成員函數(shù)時,形參個數(shù)一般為運算符元數(shù)減1;重載為非成員函數(shù)時,形參個數(shù)一般和運算符元數(shù)相等。所以,“-”運算符重載為成員函數(shù)時,參數(shù)可以是0個或1個;而重載為非成員函數(shù)時,參數(shù)個數(shù)可以是1個或2個。所以D選項,肯定是重載為非成員函數(shù)。20、在C++中,cin是一個()。A、類B、對象C、模板D、函數(shù)標準答案:B知識點解析:cin為istream流類的對象。21、有如下程序:#include#includeusingnamespacestd;intmain(){ints[]={123,234};cout<A、123234B、***123234C、***123***234D、***123234***標準答案:B知識點解析:在輸出語句中定義了輸出的格式是字符寬度為6,并且向右對齊,不足的位用‘*’補齊。在C++中,輸出格式的發(fā)置只對第一次輸出有效,在完成了一個數(shù)據(jù)的輸出后,寬度設(shè)置自動恢復(fù)為0(表示按數(shù)據(jù)實際寬度輸出)。所以對于本題來說,在循環(huán)語句中輸出數(shù)組s[0]中的元素時,按照規(guī)定的格式輸出,其結(jié)果為***123,當輸出s[1]時,輸出格式已經(jīng)恢復(fù)到按數(shù)據(jù)實際寬度輸出,所以此時輸出為234。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共21題,每題1.0分,共21分。)1、下列敘述中正確的是()。A、棧是一種先進先出的線性表B、隊列是一種后進先出的線性表C、棧與隊列都是非線性結(jié)構(gòu)D、以上三種說法都不對標準答案:D知識點解析:棧是先進后出的線性表,隊列是先進先出的線性表,二者均為線性結(jié)構(gòu)。2、if語句的語法格式可描述為:格式1:if(<條件>)<語句>或格式2:if(<條件>)<語句1>else<語句2>關(guān)于上面的語法格式,下列表述中錯誤的是()。A、<條件>部分可以是一個if語句,例如if(if(a==0)…)…B、<語句>部分可以是一個if語句,例如if(…)if(…)…C、如果在<條件>前加上邏輯非運算符!并交換<語句1>和<語句2>的位置,語句功能不變D、<語句>部分可以是一個循環(huán)語句,例如if(…)while(…)…標準答案:A知識點解析:本題考查if語句,if語句的條件部分不能嵌套if語句,所以A選項錯誤;B選項就是if語句嵌套;c選項其實就是將判斷條件顛倒,然后執(zhí)行語句也顛倒,所以效果一樣;D選項也正確。3、下列選項中屬于面向?qū)ο笤O(shè)計方法主要特征的是()。A、繼承B、自項向下C、模塊化D、逐步求精標準答案:A知識點解析:面向?qū)ο笤O(shè)計方法的主要特征有封裝性、繼承性和多態(tài)性。而結(jié)構(gòu)化程序設(shè)計方法的主要原則有自頂向下,逐步求精,模塊化,限制使用goto語句。4、下列關(guān)于析構(gòu)函數(shù)的描述中,錯誤的是()。A、析構(gòu)函數(shù)可以重載B、析構(gòu)函數(shù)由系統(tǒng)自動調(diào)用C、每個對象的析構(gòu)函數(shù)只被調(diào)用一次D、每個類都有析構(gòu)函數(shù)標準答案:A知識點解析:一般情況下,析構(gòu)函數(shù)在對象的生存周期即將結(jié)束的時候由系統(tǒng)自動調(diào)用。在調(diào)用完成之后,對象也就消失了,相應(yīng)的內(nèi)存空間也被釋放。析構(gòu)函數(shù)沒有參數(shù),因此析構(gòu)函數(shù)不能重載,一個類中只能定義一個析構(gòu)函數(shù)。5、設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績),則表SC的關(guān)鍵字(鍵或碼)為()。A、課號,成績B、學(xué)號,成績C、學(xué)號,課號D、學(xué)號,姓名,成績標準答案:C知識點解析:關(guān)鍵字是指屬性或?qū)傩缘慕M合,其值能夠唯一地標識一個元組,而在SC中學(xué)號和課號的組合可以對元組進行唯一的標識。6、下列存儲類標識符中,可見性與存在性不一致的是()。A、外部類B、自動類C、內(nèi)部靜態(tài)類D、寄存器類標準答案:C知識點解析:可見性是函數(shù)內(nèi)部,存在整個程序中,第二次調(diào)用值不變。7、有如下程序:#includeusingnamespacestd;intmain(){.inta[6]={23,15,64,33,40,58);ints1,s2;s1=s2=a[0];for(int*p=a+1;p<a+6;p++){if(s1>*p)s1=*p;if(s2<*p)s2=*p;}cout<<s1+s2<<end1;return0;}運行時的輸出結(jié)果是()。A、23B、58C、64D、79標準答案:D知識點解析:變量s1和s2的初值都等于23,那么在執(zhí)行第一次for循環(huán)時,*p的值等于15,它小于23,所以把15賦給變量s1;執(zhí)行第二次for循環(huán)時,*p的值等于64,它大于23,所以把64賦給變量s2;而數(shù)組a中a[2]后面的元素的值都大于15,小于64,因而變量s1,s2的值不會再發(fā)生變化,最終值為15+64=79。8、要定義一個引用變量p,使之引用類MyClass的一個對象,正確的定義語句是()。A、MyClassp=MyClass;B、MyClassp=newMyClass;C、MyClass&p=newMyClass;D、MyClassa,&p=a;標準答案:D知識點解析:在選項D中,定義了MyClass類的一個對象a和引用變量p,并且聲明p初始化為對a的引用。9、Sample是一個類,執(zhí)行下面語句后,調(diào)用Sample類的構(gòu)造函數(shù)的次數(shù)是,()。Samplea[2],*P=newSample;A、0B、1C、2D、3標準答案:D知識點解析:在C++中,聲明一個類對象時,編譯程序需要調(diào)用類的構(gòu)造函數(shù)為對象分配存儲空間,進行必須的初始化。在本題的這條語句中,聲明了一個Sample類型的包含2個數(shù)組元素的數(shù)組a[2],一個指向類Sample對象的指針
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 照片濾鏡調(diào)色課程設(shè)計
- 二手車交易平臺營業(yè)員銷售總結(jié)
- 春游課程設(shè)計
- 家具設(shè)計師工作總結(jié)
- 風險防控方案計劃
- 法律服務(wù)行業(yè)風險防范方案
- 化工行業(yè)衛(wèi)生防護要點
- 物流運輸行業(yè)咨詢服務(wù)經(jīng)驗總結(jié)
- 藥店衛(wèi)生管理措施
- 金融領(lǐng)域的投資顧問職責
- GB/T 41904-2022信息技術(shù)自動化基礎(chǔ)設(shè)施管理(AIM)系統(tǒng)要求、數(shù)據(jù)交換及應(yīng)用
- GB/T 41908-2022人類糞便樣本采集與處理
- GB/T 3745.1-1983卡套式三通管接頭
- GB/T 26003-2010無負壓管網(wǎng)增壓穩(wěn)流給水設(shè)備
- 信息系統(tǒng)運維服務(wù)方案
- 簡支梁、懸臂梁撓度計算程序(自動版)
- 沛縣生活垃圾焚燒發(fā)電項目二期工程 環(huán)境影響報告書 報批稿
- DB44∕T 2149-2018 森林資源規(guī)劃設(shè)計調(diào)查技術(shù)規(guī)程
- 統(tǒng)編版小學(xué)四年級語文上冊五六單元測試卷(附答案)
- 商票保貼協(xié)議
- 高支模技術(shù)交底(新版)
評論
0/150
提交評論