版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C++機試(選擇題)模擬試卷6(共9套)(共209題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共34題,每題1.0分,共34分。)1、算法的空間復(fù)雜度是指()。A、算法程序的長度B、算法程序中的指令條數(shù)C、算法程序所占的存儲空間D、算法執(zhí)行過程中所需要的存儲空間標準答案:D知識點解析:算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。2、下列敘述中正確的是()。A、一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)B、邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)C、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率D、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率標準答案:D知識點解析:數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),常用的存儲結(jié)構(gòu)有順序和鏈式結(jié)構(gòu)。采用不同的存儲結(jié)構(gòu),其處理的效率是不同的。3、下列關(guān)于類、對象、屬性和方法的敘述中,錯誤的是()。A、類是對一類具有相同的屬性和方法對象的描述B、屬性用于描述對象的狀態(tài)C、方法用于表示對象的行為D、基于同一個類產(chǎn)生的兩個對象不可以分別設(shè)置自己的屬性值標準答案:D知識點解析:類是對一類具有相同的屬性和方法對象的描述,屬性用于描述對象的狀態(tài),方法用于表示對象的行為,基于同一個類產(chǎn)生的兩個對象是可以分別設(shè)置自己的屬性值。4、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、數(shù)據(jù)字典B、詳細設(shè)計說明書C、數(shù)據(jù)流圖說明書D、軟件需求規(guī)格說明書標準答案:D知識點解析:需求分析的最終結(jié)果是生成軟件需求規(guī)格說明書,可以為用戶、分析人員和設(shè)計人員之間的交流提供方便。5、數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和()。A、編碼設(shè)計B、測試階段C、運行階段D、物理設(shè)計標準答案:D知識點解析:數(shù)據(jù)庫設(shè)計目前一般采用生命周期法,即將整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的開分解成目標獨立的若干階段,它們是:需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段、編碼階段、測試階段、運行階段、進一步修改階段。在數(shù)據(jù)庫設(shè)計中采用上面幾個階段中的前四個階段,并且重點以數(shù)據(jù)結(jié)構(gòu)和模型設(shè)計為主線。6、在下列關(guān)系運算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是()。A、并B、交C、投影D、除標準答案:B知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組所組成,記為R∩S,交運算不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)。7、下列敘述中,正確的是()。A、軟件交付使用后還需要進行維護B、軟件一旦交付使用就不需要再進行維護C、軟件交付使用后其生命周期就結(jié)束D、軟件維護是指修復(fù)程序中被破壞的指令標準答案:A知識點解析:軟件的運行和維護是指將已交付的軟件投入運行,并在運行使用中不斷地維護,根據(jù)新提出的需求進行必要而且可能的擴充和刪改。而軟件生命周期是指軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程。8、設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A、6B、8C、9D、12標準答案:C知識點解析:R為n元關(guān)系,有p個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。9、下列選項中,不屬于數(shù)據(jù)庫管理的是()。A、數(shù)據(jù)庫的建立B、數(shù)據(jù)庫的調(diào)整C、數(shù)據(jù)庫的監(jiān)控D、數(shù)據(jù)庫的校對標準答案:D知識點解析:數(shù)據(jù)庫管理一般包括:數(shù)據(jù)庫的建立、數(shù)據(jù)庫的調(diào)整、數(shù)據(jù)庫的重組、數(shù)據(jù)庫的安全性控制與完整性控制、數(shù)據(jù)庫的故障恢復(fù)和數(shù)據(jù)庫的監(jiān)控。10、以下程序的輸出結(jié)果是()。#include<iostream.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;fbr(i=0;i<3;i++)fbr(j=i;j<=i;j++)t=t+b[i][b[j][j]];cout<<t;}A、2B、3C、4D、5標準答案:C知識點解析:程序中通過for二重循環(huán)依次取二維數(shù)組中的數(shù)值進行與t的累加。取數(shù)組中的元素為i行和符合循環(huán)條件的b[j][j]列的數(shù)據(jù)。循環(huán)為0,1,2行,對應(yīng)0,1,2列。即0,1,2。所以1+0+1+2=4。11、當循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列己滿,不能進行入隊運算。這種情況稱為()。A、下溢B、上溢C、異常D、溢出標準答案:B知識點解析:由于頭尾指針不斷前移,超出向量空間。這時整個向量空間及隊列是滿的卻產(chǎn)生了“上溢”現(xiàn)象。12、以下程序的輸出的結(jié)果是()。#include<iostream.h>voidmain(){irIti,k,a[10],p[3];k=5:fbr(i=0;i<9;i++)a[i]=i;fbr(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;cout<<k;}A、20B、21C、22D、23標準答案:B知識點解析:程序中首先在第一個for循環(huán)中將數(shù)組a每一個元素賦值為0,1,2,……。然后在第二個循環(huán)中數(shù)組p的第i元素為a中的第i*(i+1),即0,2,6,第三個循環(huán)中數(shù)組p中的每個元素值乘以2,然后加上5,累加。13、以下程序的執(zhí)行結(jié)果是()。#include<iostream.h>intfun(intb[],intn){inti,r=1;for(i=0;i<n;i++)r=r*b[i];returnr;}voidmain(){intx,a[]={1,2,3,4,5,6,7,8};x=fun(a,3);cout<<x<<end1;}A、5B、6C、7D、8標準答案:B知識點解析:由程序的main函數(shù)入手,調(diào)用fun函數(shù),其中參數(shù)為數(shù)組a和3。fun函數(shù)的功能是for循環(huán)中由第一個數(shù)組元素開始到第三個元素進行累積。14、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p;*p=9;cout<<’’Thevalueatp:’’<<*p;return0;}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:題目程序中“int*p;”是定義了一個指針變量p,“*p=9;”是將p當前指向的指針賦為9。指針p在執(zhí)行這個賦值操作前并沒有初始化這個變量p,所以會有p未初始化的警告錯誤。15、下列有關(guān)指針的用法中,錯誤的是()。A、inti;int*p=&i;B、inti;int*p;i=*p;C、int*p;p=0;D、inti=5;int*P;p=&i;標準答案:B知識點解析:“inti:”語句為定義了一個整型變量i?!癷nt*p”為定義一個整型指針p。選項A中的“int*p=&i;”是定義整型指針變量p,并指向整型i的地址。選項B)中“i=*p”語句是將p指向的變量賦值給i,而指針p沒有初始化,所以選項B錯誤。選項C中“p=0;”表示p指向0的地址。選項D中“&i”為取i的地址,并賦值給p。16、如果有以下定義及初始化:inta=3,*p=&a;則由此可以推斷,*p的值是()。A、變量a的值,即3B、變量a的地址值C、變量P的地址值D、無意義標準答案:A知識點解析:題目中的定義初始化是定義一個整型變量a,初始化為3。而“int*p=&a;”是定義一個整型指針變量p,將變量a的地址作為指針變量p的初值。木p是指針變量p指向的存儲單元的內(nèi)容,即變量值。所以木p指向a的值3。17、執(zhí)行語句序列intx=1,&y=x;cout<<x<<’一’<<y<<end1;輸出結(jié)果為()。A、x-xB、1-1C、1-0D、異常標準答案:B知識點解析:程序中的“intx=1”定義x為int型變量,并賦值為l。語句“&y=x”中“&”為引用運算符,&y=x語句可以理解為y具有x的地址,所以y的值也是1,即輸出為:1-1。18、下面c++標識符中正確的是()。A、abcB、3abC、intD、+ab標準答案:A知識點解析:C++標識符命名的規(guī)則:只能由’a’-’z’、’A’-’Z’、’0’-’9’、’’等字符組成,且數(shù)字不能開頭,不能與系統(tǒng)保留字沖突。19、下列哪項不是面向?qū)ο蟪绦蛟O(shè)計的主要特征()。A、封裝B、繼承C、多態(tài)D、結(jié)構(gòu)標準答案:D知識點解析:面向?qū)ο蟪绦蛟O(shè)計的特點:標識惟一性,分類性,多態(tài)性,封裝性,模塊獨立性好。20、若整型變量a、b、c、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是()。A、1B、2C、3D、4標準答案:A知識點解析:首先把c<d?c:d算出。結(jié)果為2,表達式a<b?a:c<d?c:d變?yōu)椋篴<b?a:2,結(jié)果為1。21、以下程序的輸出的結(jié)果是()。#include<iostream.h>voidmain(){inta,b,c,d(5);c=2,c+=10;a=b=10;a*=2;b/=2;c%=2;cout<<a<<’’,’’<<b<<’’,’<<c<<end1;}A、20,5,0B、20,7,0C、20,5,1D、5,20,0標準答案:A知識點解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0,所以輸出值20,5,0。22、以下程序的執(zhí)行結(jié)果是()。#include<iostream.h>classTcstClass2{public:TestClass2(){};TestClass2(inti,intj);voidprintb();private:inta,b;};classTestClass1{public:TestClass1(){}TestClass1(inti,intj);voidprinta();private:TestClass2c;};TestClass1::TestClass1(inti,intj):c(i,j){}voidTestClass1::printa(){c.printb();}TestClass2::TestClass2(inti,intj){a=i;b=j;}voidTestClass2::printb(){cout<<’’a="<<a<<’’,’’<<’’b=’’<<b<<end1;}voidmain(){TestClass1m(7,9);m.printa();}A、a=7,b=8B、a=8,b=7C、a=7,b=9D、a=8,b=9標準答案:C知識點解析:由主函數(shù)main入手,定義了TestClassl的對象m,其中參數(shù)為7和9?!癿.printa();”中TestClass1中printa為“c.printb();”,其中c為TestClass2的對象,所以printb為TestClass2中的“voidTestClass2::printb()”,即輸出為“a=7,b=9”。23、以下程序的輸出的結(jié)果是()。#include<iostream.h>intx=3;voidmain(){voidfun();inti;for(i=1;i<x;i++)fun();}voidfun(){staticintx=1;x*=x+1;cout<<x<<’’’’;}A、3,3B、2,2C、2,6D、2,5標準答案:C知識點解析:由主函數(shù)入手,在for循環(huán)中調(diào)用fun函數(shù),其中調(diào)用次數(shù)為2次。fun中x為靜態(tài)變量,有效到文件結(jié)束,所以第一次調(diào)用為x=x*(x+1)=1*(1+1)=2,第二次調(diào)用2*(2+1)=6。24、若有以下程序:#include<iostream>usingnamespacestd;intfun(){staticinti=0;ints=1;s+=i;i++;returns;}intmain(){inti,a=0;for(i=0;i<5;i++)a+=fun();cout<<a<<end1;return():}程序運行后,輸出的結(jié)果是()。A、20B、24C、25D、15標準答案:D知識點解析:由主函數(shù)入手,在for循環(huán)中調(diào)用fun函數(shù),其中調(diào)用次數(shù)為5。fun中i為靜態(tài)變量,有效到文件結(jié)束。第一次調(diào)用fun后為s=1,a=1;第二次調(diào)用后s=2,a=3第三次s=3,a=6;第四次s=4,a=10;第五次s=5,a=15。25、閱讀下面程序:#include<iostream.h>fun(inta,intB.{intc;c=a+b:returnC;}voidmain(){intx=6,y=7,z=8,r;r=fun((x--,y++,x+y),z--);cout<<r<<end1;}則該程序的輸出結(jié)果是()。A、11B、20C、21D、31標準答案:C知識點解析:由主函數(shù)入手,定義變量x、y、z,然后調(diào)用函數(shù)fun,其中的參數(shù)為(x--,y++,x+y)的計算結(jié)果和z--的計算結(jié)果,所以調(diào)用fun(13,8)計算結(jié)果為21。26、對虛函數(shù)的調(diào)用()。A、一定使用動態(tài)聯(lián)編B、必須使用動態(tài)聯(lián)編C、一定使用靜態(tài)聯(lián)編D、不一定使用動態(tài)聯(lián)編標準答案:D知識點解析:虛函數(shù)在運行階段和類的對象綁定在一起,這樣成為動態(tài)聯(lián)編。虛函數(shù)聲明只能出現(xiàn)在類聲明中虛函數(shù)原型中,而不能在成員的函數(shù)體實現(xiàn)的時候。必須由成員函數(shù)來調(diào)用或者通過指針、引用來訪問虛函數(shù)。如果通過對象名來訪問虛函數(shù),則聯(lián)編在編譯過程中認為是靜態(tài)聯(lián)編。27、下列函數(shù)的運行結(jié)果是()。#include<iostream.h>intadd(inta,intB.;voidmain(){externintx,y;cout<<add(x,y)<<end1;}intx(20),y(5);intadd(inta,intB.{ints=a+b;returns;}A、25B、30C、20D、15標準答案:A知識點解析:由主函數(shù)main入手,定義外部變量x和y,調(diào)用函數(shù)add。因為x,y為外部變量,所以“intx(20),y(5);”的賦值在add也是有效的,即add函數(shù)的運算結(jié)果為25。28、下面程序的輸出結(jié)果為()。#include<iostream.h>classTestClass{public:TestClass(){val++;}staticintval;};intTestClass::val=0;voidmain(){TestClasscsl;cout<<cs1.va1<<’’’’;TestClasscs2;TestClasscs3,cs4;cout<<cs2.va1<<end1;}A、03B、13C、14D、24標準答案:C知識點解析:由主函數(shù)main入手,定義TestClass類的對象cs1,執(zhí)行cs1.val,其中val為靜態(tài)變量,根據(jù)“intTestClass::val=0;”初始化,TestClass中的TestClass(){val++;)構(gòu)造函數(shù)執(zhí)行后,val值為1。主函數(shù)中接著定義對象cs2,cs3,cs4。執(zhí)行“cout<<cs2.val<<end1;”中的val值為4。29、下面程序的運行結(jié)果是()。#include<iostream>usingnamespacestd;classTestClass{staticintn;public:TestClass0{n++;}staticinttest(){for(inti=0;i<4;i++)n++;returnn;}};intTestClass::n=0;intmain(){tout<<TestClass::test()<<’’’’;TestClassc1,c2;tout<<TestClass::test()<<end1;return0;}A、4,10B、4,6C、0,6D、0,4標準答案:A知識點解析:在主函數(shù)中首先調(diào)用TestClass中的test函數(shù)輸出,類中的n為靜態(tài)數(shù)據(jù)成員,可以為所有的對象共享這些數(shù)據(jù),這里調(diào)用后n等于4。定義對象c1,c2調(diào)用構(gòu)造函數(shù)后n=6,所以主函數(shù)再次執(zhí)行“cout<<TestClass::test()<<end1;”后,n等于10。30、當需要將一個函數(shù)boolisnumber(charc)聲明為內(nèi)聯(lián)函數(shù)時,則此內(nèi)聯(lián)函數(shù)的函數(shù)原型為()。A、enumboolisnumber(charc);B、defineboolisnumber(charc);C、inlineboolisnumber(charc);D、extemboolisnumber(charc);標準答案:C知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)的相關(guān)知識點。函數(shù)原型應(yīng)指出函數(shù)名、返回值類型以及在調(diào)用函數(shù)時必須提供的參數(shù)的個數(shù)和類型,因為要聲明為內(nèi)聯(lián)函數(shù),故應(yīng)加inline關(guān)鍵字。31、下列關(guān)于類和對象的敘述中,錯誤的是()。A、一個類只能有一個對象B、對象是類的具體實例C、類是對某一類對象的抽象D、類和對象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系標準答案:A知識點解析:此題考查的是類和對象的相關(guān)概念。類是將不同的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝起來裝在一起的集合體。對象是類的具體實例,也即類是對某一類對象的抽象,類和對象之間可以說是數(shù)據(jù)類型與變量的關(guān)系。一個類可以有無數(shù)個對象。32、下列關(guān)于成員函數(shù)特征的描述中,錯誤的是()。A、成員函數(shù)一定是內(nèi)聯(lián)函數(shù)B、成員函數(shù)可以重載C、成員函數(shù)可以設(shè)置參數(shù)的默認值D、成員函數(shù)可以是靜態(tài)的標準答案:A知識點解析:因為成員函數(shù)可以在類體內(nèi)定義,也可以在類體外定義,所以成員函數(shù)不一定都是內(nèi)聯(lián)函數(shù);成員函數(shù)可以重載,可以設(shè)置參數(shù)的默認值,成員函數(shù)可以是靜態(tài)的。33、下列運算符不能重載為友元函數(shù)的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=標準答案:A知識點解析:此題考查的是運算符重載的概念。C++語言規(guī)定,=、[]、()、>以及所有的類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載,如果要重載為友元函數(shù)就必須重載為非成員函數(shù)。34、有如下函數(shù)模板:template<classT>Tsquare(Tx){returnx,x;}其中T是()。A、函數(shù)形參B、函數(shù)實參C、模板形參D、模板實參標準答案:C知識點解析:此題考查的是函數(shù)模板。聲明一個函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,{函數(shù)體}其中的<模板形參表聲明>是由一個或多個“模板形參”組成的,每個“模板形參”可具有以下幾種形式:typename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共22題,每題1.0分,共22分。)1、下列字符串中可以用作C++標識符的是()。A、2009varB、gotoC、test-2009D、_123標準答案:D知識點解析:標識符是用戶為程序中各種需要命名的“元素”所起的名字。標識符的組成要符合一定的規(guī)則:①標識符是一個以字母或下劃線開頭的,由字母、數(shù)字、下劃線組成的字符串。②標識符不能與任意一個關(guān)鍵字同名。③標識符中的字母區(qū)分大小寫。④標識符不宜過長。C++語言一般設(shè)定一個標識符的有效長度為32個字符。由這四條規(guī)則可知,選項D為正確答案。2、下列敘述中正確的是A、循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)B、循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)C、循環(huán)隊列是非線性結(jié)構(gòu)D、循環(huán)隊列是一種邏輯結(jié)構(gòu)標準答案:B知識點解析:本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的一種也應(yīng)該是線性結(jié)構(gòu)。隊列是一種邏輯結(jié)構(gòu),而循環(huán)隊列是一種順序存儲結(jié)構(gòu)的隊列。3、—棵二叉樹共有25個結(jié)點,其中5個是葉子結(jié)點,則度為l的結(jié)點數(shù)為()。A、16B、10C、6D、4標準答案:A知識點解析:根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個,故此度為l的結(jié)點個數(shù):總結(jié)點數(shù)·葉子節(jié)點數(shù).度為2的節(jié)點數(shù)=25—5—4=16。4、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:各種排序方法中最壞情況下需要比較的次數(shù)分別為:冒泡排序n(n-1)/2、快速排序n(n-1)/2、簡單插入排序n(n-1)/2、希爾排序O(n1.5)、簡單選擇排序n(n-1),2、堆排序O(nlog2n)。5、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:各種排序方法中最壞情況下需要比較的次數(shù)分別為:冒泡排序n(n-1)/2、快速排序n(n-1)/2、簡單插入排序n(n-1)/2、希爾排序O(n1.5)、簡單選擇排序n(n-1)/2、堆排序O(nlog2n)。6、下列描述中正確的是()。A、軟件交付使用后還需要再進行維護B、軟件工具交付使用就不需要再進行維護C、軟件交付使用后其生命周期就結(jié)束D、軟件維護是指修復(fù)程序中被破壞的指令標準答案:A知識點解析:通常將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護三個階段。已交付的軟件投入運行后,應(yīng)在運行使用中不斷地維護,根據(jù)新提出的需要進行必要而且可能的擴充和刪改。7、關(guān)于模板,下列說法不正確的是()。A、用類模板定義一個對象時,不能省略實參B、類模板只能有虛擬類型參數(shù)C、類模板本身在編譯中不會生成任何代碼D、類模板的成員函數(shù)都是模板函數(shù)標準答案:B知識點解析:類模板不是一個實實在在的類,本身在編譯中不會生成任何代碼;用類模板定義一個對象時,不能省略實參:類模板的成員函數(shù)都是模板函數(shù)。C++中可以為類模板的參數(shù)設(shè)置默認值,所以選項B錯誤。8、軟件測試的目的是()。A、評估軟件可靠性B、發(fā)現(xiàn)并改正程序中的錯誤C、改正程序中的錯誤D、發(fā)現(xiàn)程序中7的錯誤標準答案:D知識點解析:軟件測試的目的是為了發(fā)現(xiàn)程序中的錯誤,而軟件調(diào)試是為了更正程序中的錯誤。9、對于一個類定義,下列敘述中錯誤的是()。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ù)和復(fù)制構(gòu)造函數(shù),如果沒有定義構(gòu)造函數(shù),編譯器將生成一個缺省的構(gòu)造函數(shù)和一個拷貝構(gòu)造函數(shù),如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會生成任何構(gòu)造函數(shù)。如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個拷貝構(gòu)造函數(shù)。10、在數(shù)據(jù)庫系統(tǒng)中,用戶所見的數(shù)據(jù)模式為()。A、概念模式B、外模式C、內(nèi)模式D、物理模式標準答案:B知識點解析:用戶所見到的數(shù)據(jù)模式是外模式也稱用戶模式。它是用戶的數(shù)據(jù)視圖,它由概念模式導(dǎo)出。一個概念模式可以有若干個外模式,每個用戶只關(guān)心與它有關(guān)的外模式,這樣不僅可以屏蔽大量無關(guān)信息,而且有利于數(shù)據(jù)維護。11、公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有多名職員。則實體部門和職員間的聯(lián)系是()。A、1:1聯(lián)系B、m:1聯(lián)系C、1:m聯(lián)系D、m:n聯(lián)系標準答案:C知識點解析:一個部門可以有多名員工,所以實體部門和職員間的聯(lián)系是1:m聯(lián)系。12、下列關(guān)于繼承的描述中,錯誤的是()。A、析構(gòu)函數(shù)不能被繼承B、派生類是基類的組合C、派生類的成員除了它自己的成員外,還包含了它的基類的成員D、派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變標準答案:D知識點解析:派生類中繼承的基類成員的訪問權(quán)限到派生類會發(fā)生變化,例如:私有繼承時,派生類不能訪問基類的成員,所以選項D)錯誤,其他選項均正確。13、下列關(guān)于賦值運算符“=”重載的敘述中,正確的是()。A、賦值運算符只能作為類的成員函數(shù)重載B、默認的賦值運算符實現(xiàn)了“深層復(fù)制”功能C、重載的賦值運算符函數(shù)有兩個本類對象作為形參D、如果已經(jīng)定義了復(fù)制(拷貝)構(gòu)造函數(shù),就不能重載賦值運算符標準答案:A知識點解析:重載賦值運算符必須定義為類的成員函數(shù);所以選項A正確。重載賦值運算符時應(yīng)返回一個類的對象,所以C選項錯誤。如果已經(jīng)定義了復(fù)制(拷貝)構(gòu)造函數(shù),仍然可以重載賦值運算符,所以D選項錯誤。14、為了取代C中帶參數(shù)的宏,在C++中使用()。A、重載函數(shù)B、內(nèi)聯(lián)函數(shù)C、遞歸函數(shù)D、友元函數(shù)標準答案:B知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)。C++語言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C語言的預(yù)處理宏函數(shù)。故選項B正確。15、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p;*p=9;cout<<’’Thevalueatp:’’<<*p;return0;}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:此題考查的是指針的使用。本題中,在給*p賦值前,指針p并沒有指向一個具體的對象。此時可以通過編譯,但運行時由于p中為隨機值,該賦值可能會破壞內(nèi)存中某個重要的地址空間的內(nèi)容,導(dǎo)致程序出錯。16、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9:cout<<"Thevalueatp:"<<*p;return0;}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:此題考查的是指針的使用。本題中,在給*p賦值前,指針p并沒有指向一個具體的對象。此時可以通過編譯,但運行時由于p中為隨機值,該賦值可能會破壞內(nèi)存中某個重要的地址空間的內(nèi)容,導(dǎo)致程序出錯。17、有如下程序:#includeusingnamespacestd;classXA{inta:public:staticintb:XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA::b=0;intmain(){XAd1(4),d2(5);cout<A、9B、11C、13D、15標準答案:C知識點解析:在類XA的構(gòu)造函數(shù)中,定義了用成員變量a的值初始化變量aa,同時靜態(tài)成員變量b值加1。所以當在主main函數(shù)中定義類XA的對象d1(4)后,變量b的等于1,定義對象d2(5)后,變量b的值等于2,所以表達式d1.getA()+d2.getA()+XA::b+dl.b等于4+5+1+2+1=13。18、有如下類定義:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:Foo(){}//③intvalue=0://④};其中存在語法錯誤的行是()。A、①B、②C、③D、④標準答案:D知識點解析:此題考查的是類的定義。C++語言規(guī)定,在類體內(nèi)不允許對所定義的數(shù)據(jù)成員進行初始化。19、下列運算符函數(shù)中,肯定不屬于類Value的成員函數(shù)的是()。A、Valueoperator+(Value);B、Valueoperator-(Value,Value);C、Valueoperator*(int);D、Valueoperator/(Value);標準答案:B知識點解析:運算符作為非成員函數(shù)時,由于沒有隱含this指針,因此所有的操作數(shù)必須出現(xiàn)在參數(shù)表中。對于第二個選項,出現(xiàn)了兩個操作數(shù),必然是非成員函數(shù),但是對于其他三個選項,有可能都是要求兩個操作數(shù)的成員函數(shù)。20、在一個派生類對象結(jié)束其生命周期時()。A、先調(diào)用派生類的析構(gòu)函數(shù)后調(diào)用基類的析構(gòu)函數(shù)B、先調(diào)用基類的析構(gòu)函數(shù)后調(diào)用派生類的析構(gòu)函數(shù)C、如果基類沒有定義析構(gòu)函數(shù),則只調(diào)用派生類的析構(gòu)函數(shù)D、如果派生類沒有定義析構(gòu)函數(shù),則只調(diào)用基類的析構(gòu)函數(shù)標準答案:A知識點解析:此題考查的是派生類對象的析構(gòu)。釋放派生類對象時,析構(gòu)函數(shù)的執(zhí)行順序是:首先調(diào)用派生類自身的析構(gòu)函數(shù);然后調(diào)用類成員對象的析構(gòu)函數(shù);最后調(diào)用基類的析構(gòu)函數(shù)。所以四個選項中只有選項A正確。21、下列有關(guān)抽象類和純虛函數(shù)的敘述中,錯誤的是()。A、擁有純虛函數(shù)的類是抽象類,不能用來定義對象B、抽象類的派生類若不實現(xiàn)純虛函數(shù),它也是抽象類C、純虛函數(shù)的聲明以“=0;”結(jié)束D、純虛函數(shù)都不能有函數(shù)體標準答案:D知識點解析:此題考查的是抽象類和純虛函數(shù)的概念。純虛函數(shù)可以有函數(shù)體,它的實現(xiàn)由派生類給出。22、虛函數(shù)支持多態(tài)調(diào)用,一個基類的指針可以指向派生類的對象,而且通過這樣的指針調(diào)用虛函數(shù)時,被調(diào)用的是指針所指的實際對象的虛函數(shù)。而非虛函數(shù)不支持多態(tài)調(diào)用。有如下程序:#includeusingnamespacestd;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;}運行時輸出的結(jié)果是()。A、f+g+B、f0+g+C、f+g0+D、f0+g0+標準答案:C知識點解析:此題考查的是虛函數(shù)和多態(tài)性。此題中,因為f()是虛函數(shù)具有多態(tài)性,所以通過指針p調(diào)用的f()是派生類Derived中定義的f();而g()不是虛函數(shù),通過指針p調(diào)用的是Base中的g()。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共24題,每題1.0分,共24分。)1、下列敘述中正確的是A、棧是一種先進先出的線性表B、隊列是一種后進先出的線性表C、棧與隊列都是非線性結(jié)構(gòu)D、棧與隊列都是線性結(jié)構(gòu)標準答案:D知識點解析:棧是先進后出,隊列是先進先出。棧和隊列都是一種線性表,屬于線性結(jié)構(gòu)。2、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)()。A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為12層,每層只有一個結(jié)點。3、有如下程序:#includeusingnamespacestd;intmain(){int*p;*P=9:cout<<“Thevalueatp:“<<*p;return0:}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:此題考查的是指針的使用。本題中,存給*p賦值前,指針p并沒有指向一個具體的對象。此時可以通過編譯,但運行時由于p中為隨機值,該賦值可能會破壞內(nèi)存中某個重要的地址空間的內(nèi)容,導(dǎo)致程序出錯。4、對如下二叉樹進行后序遍歷的結(jié)果為()。A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA標準答案:D知識點解析:所謂后序遍歷是指在訪問根據(jù)結(jié)點、遍歷左子樹與遍歷右予樹這三者中,首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點,并且,在遍歷左、右子樹時,仍然先遍歷左予樹,然后遍歷右子樹,最后訪問根點。因此,后序遍歷二叉樹的過程也是一個遞歸過程。其簡單描述為:若二叉樹為空,則結(jié)束返回;否則,先后序遍歷左子樹,然后后序遍歷右子樹,最后訪問根結(jié)點。對于后序遍歷,第一個訪問的結(jié)點一定是最左下的結(jié)點,最后一個訪問的結(jié)點一定是根結(jié)點,所以選項D)為正確答案。5、下列描述中正確的是()。A、程序就是軟件B、軟件開發(fā)不受計算機系統(tǒng)的限制C、軟件既是邏輯實體,又是物理實體D、軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合標準答案:D知識點解析:計算機軟件與硬件是計算機系統(tǒng)中相互依存的兩部分。計算機軟件是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。軟件由兩部分組成:一部分是機器可執(zhí)行的程序和數(shù)據(jù);二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關(guān)的文檔。軟件具有以下六個特點:①軟件是一種邏輯實體,而不是物理實體,具有抽象性。②軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程。③軟件在運行、使用期間不存在磨損、老化問題。④軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導(dǎo)致了軟件移值的問題。⑤軟件復(fù)雜性高,成本昂貴。⑥軟件的開發(fā)涉及諸多社會因素。6、定義如下枚舉類型:enum{Monday,Tuesday,Wednesday,Thrusday,F(xiàn)riday=2};表達式Wednesday==Friday的值是()。A、falseB、trueC、2D、異常標準答案:B知識點解析:enum<枚舉類型名>{<枚舉元素表>};其中:關(guān)鍵詞“enum”表示定義的是枚舉類型,枚舉類型名由標識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達式值為真,即true。7、從工程管理角度看,軟件設(shè)計一般分為兩步完成,它們是()。A、概要設(shè)計與詳細設(shè)計B、數(shù)據(jù)設(shè)計與接口設(shè)計C、軟件結(jié)構(gòu)設(shè)計與數(shù)據(jù)設(shè)計D、過程設(shè)計與數(shù)據(jù)設(shè)計標準答案:A知識點解析:軟件設(shè)計是開發(fā)階段最重要的步驟。從工程管理的角度來看可分為兩步:概要設(shè)計和詳細設(shè)計。概要設(shè)計是將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu),確定系統(tǒng)級接口、全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式;詳細設(shè)計是指確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適應(yīng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。從技術(shù)觀點來看,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計(定義軟件系統(tǒng)各主要部件之間的關(guān)系)、數(shù)據(jù)設(shè)計(將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu))、接口設(shè)計(描述軟件內(nèi)部、軟件與協(xié)作系統(tǒng)之間以及軟件與人之間如何通信)、過程設(shè)計(把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程)四個步驟。8、下列關(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指針無意義。9、有如下類定義:classMyClass{intx;public:MyClass():x(0),y(0){}intGetX(){returnx;}voidSetX(intxx){x=xx;}inty;};已知obj是類MyClass的對象,下列語句中違反類成員訪問控制權(quán)限的是()。A、obj.xB、obj.yC、obj.GetX()D、obj.SetX(0)標準答案:A知識點解析:由類MyClass的定義可知,數(shù)據(jù)成員x屬于私有成員,所以只能在類的內(nèi)部訪問。類MyClass的對象obj不能訪問類MyClass的私有成員x。10、數(shù)據(jù)庫設(shè)計的根本目標是要解決()。A、數(shù)據(jù)共享問題B、數(shù)據(jù)安全問題C、大量數(shù)據(jù)存儲問題D、簡化數(shù)據(jù)維護標準答案:A知識點解析:數(shù)據(jù)庫應(yīng)用系統(tǒng)中的一個核心問題就是設(shè)計一個能滿足用戶要求、性能良好的數(shù)據(jù)庫,這就是數(shù)據(jù)庫設(shè)計。數(shù)據(jù)庫設(shè)計是在一定平臺制約下,根據(jù)信息需求與處理需求設(shè)計出性能良好的數(shù)據(jù)模式。數(shù)據(jù)庫設(shè)計的根本目標是要解決數(shù)據(jù)共享的問題。11、一個工作人員可使用多臺計算機,而一臺計算機被多個人使用,則實體工作人員與實體計算機之間的聯(lián)系是()。A、一對一B、一對多C、多對多D、多對一標準答案:C知識點解析:如果一個工作人員只能使用一臺計算機且一臺計算機只能被一個工作人員使用,則關(guān)系為一對一;如果一個工作人員可以使用多臺計算機,但是一臺計算機只能被一個工作人員使用,則關(guān)系為一對多;如果一個工作人員可以使用多臺計算機,一臺計算機也可以被多個工作人員使用,則關(guān)系為多對多。12、有如下程序:#includeusingnamespacestd;classToy{public:Toy(char*_n){strepy(name,_n);count++;}~ToyO{count--;}char*GetName(){returnname;}staticintgetCount(){returncount;}private:charname[10];staticintcount;};intToy∷count=0;intmain0{Toyt1("Snoopy"),t2("Mickey"),t3("Barbie");cout<A、1B、2C、3D、運行時出錯標準答案:C知識點解析:類Toy中包含一個字符數(shù)組name和一個靜態(tài)整型變量count。在程序中首先給類Toy的成員count的賦初始值0,然后在主函數(shù)中,定義了三個。Toy對象t1、t2、t3,并分別對它們的nallle字段賦值,在賦值的同時變量count的值加1,所以最后變量count的值等于3。13、在對函數(shù)進行原型聲明時,下列語法成分中,不需要的是()。A、函數(shù)返回類型B、函數(shù)參數(shù)列表C、函數(shù)名D、函數(shù)體標準答案:D知識點解析:在c++中函數(shù)在使用之前要預(yù)先聲明,這種聲明在標準C冉中稱為函數(shù)原型。函數(shù)給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須指明參數(shù)個數(shù)和類型。14、下列關(guān)于運算符重載的描述中,正確的是()。A、運算符重載為成員函數(shù)時,若參數(shù)表中無參數(shù),重載的是一元運算符B、一元運算符只能作為成員函數(shù)重載C、二元運算符重載為非成員函數(shù)時,參數(shù)表中有一個參數(shù)D、C++中可以重載所有的運算符標準答案:A知識點解析:此題考查的是運算符的重載。運算符重載為成員函數(shù)時,形參個數(shù)一般為運算符元數(shù)減1;重載為非成員函數(shù)時,形參個數(shù)一般和運算符元數(shù)相等。所以二元運算符重載為非成員函數(shù)時,參數(shù)表中應(yīng)有兩個參數(shù),C選項錯誤;運算符重載為成員函數(shù),若參數(shù)表中無參數(shù),重載的是一元運算符,選項A正確;一元運算符中,“.”(取負)、“++”、“--”等均可重載為成員函數(shù);C++語言中,“.”、“*”“->”、“∷”、“?:”五個運算符不能重載。15、有如下兩個類定義:classAA{};classBB{AAv1,*v2;BBv3;int*v4;}其中有一個成員變量的定義是錯誤的,這個變量是()。A、v1B、v2C、v3D、v4標準答案:C知識點解析:在定義類的數(shù)據(jù)成員時,類中的數(shù)據(jù)成員可以是任意類型,包括整型、浮點型、字符符型、數(shù)組、指針和引用等,也可以是對象。但是要注意,只有另外一個類的對象,才可以作為該類的成員,即作為類的成員對象存在。自身類的對象是不可以作為自身類的成員存在,但自身類的指針可以。對于本題,在定義類BB時,不能包括其對象v3。16、有如下程序:撐include<iostream>usingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<’?’;}Name(char*fname){strepy(name,fname);cout<<’?’;}};intmain(){Namenames[3]={Name("張三"),Name("李四")};return0;}運行此程序輸出符號?的個數(shù)是()。A、0B、1C、2D、3標準答案:D知識點解析:類Name有兩個構(gòu)造函數(shù),在默認構(gòu)造函數(shù)中,給字符數(shù)組name賦空值,并輸出一個?;在帶有字符指針的構(gòu)造函數(shù)中,把字符指針fname所指的字符串賦給字符數(shù)組name,并輸出一個?。所以在主函數(shù)中,定義了Name的三個對象,name[0]、name[1]、name[2],在創(chuàng)建這三個對象時,會調(diào)用構(gòu)造帶參數(shù)的函數(shù)對前兩個對象賦值,調(diào)用默認的構(gòu)造函數(shù)把name[2]的值賦為空值。這時會輸出三個“?”符號。17、有如下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass(){cout<<’*’;}MyClass(MyClass&a){cout’?!粆~MyClass(){cout<<’@’;}};intmain();MyClassa;Myclassb(a);return0;}運行時的輸出結(jié)果是()。A、*@#@B、#@*@C、*#@@D、#*@@標準答案:C知識點解析:程序在執(zhí)行時,先創(chuàng)建類對象a,輸出*,再創(chuàng)建類對象b,輸出撐,然后再依次調(diào)用類對象b和a的析構(gòu)函數(shù),輸出兩個18、若有如下類聲明classMyClass{public:MyClass(){cout<<1;}};執(zhí)行下列語句MyClassa,b[2],*p[2]:以后,程序的輸出結(jié)果是()。A、11B、111C、1111D、11111標準答案:B知識點解析:此題考查的是對象的構(gòu)造。本題共聲明了一個MyClass對象a,一個包含2個MyClass對象的數(shù)組b和一個包含2個MyClass對象指針的數(shù)組p,所以一共創(chuàng)建了3個MyClass類的對象,即調(diào)用了3次構(gòu)造函數(shù)。19、當派生類從一個基類保護繼承時,基類中的一些成員在派生類中成為保護成員,這些成員在基類中原有的訪問屬性是()。A、任何B、公有或保護C、保護或私有D、私有標準答案:B知識點解析:基類的公有成員和保護成員只有在以保護繼承方式繼承時,其在繼承類中是保護成員。20、下列關(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ù)對基類進行清理。21、有如下程序:#inc1ude<iOStream>uSingnamespacestd;classInstrument{public:virtualvoidDisplay()=0;};classPiano:publicInstrument{public:voidDisplay(){/*函數(shù)體程序略*/}};intmain(){InstrumentS;Instrument*p=0;//…;return0;}下列敘述中正確的是()。A、語句“Insturment*p=0;”編譯時出錯B、語句“Instruments:”編譯時出錯C、類Piano中的Display函數(shù)不是虛函數(shù)D、類Instrument是一個虛基類標準答案:B知識點解析:由于函數(shù)Display()是一個純虛函數(shù),所以類Instrument是抽象類,而抽象類是不能定義對象的,因而選項B)為正確選項。22、己知Value是一個類,Value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原形中,正確的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuevinti=0);D、Valueoperator+(Valuev=value,inti=0),標準答案:B知識點解析:此題考查的是重載加法運算符“+”?!?”是二元運算符,其第一操作數(shù)是對象本身,i為第二操作數(shù),由此可知選項B正確。23、有如下程序:#includeusingnamespacestd;classPublication{//出版物類charname[30];public:Publication(char*name="未知名稱"){strcpy(this->name,name);}constchar*getNameoconst{returnname;}virtualconstchar*getTypeoconst{return"未知類型";}};classBook:publicPublication{//書類public:Book(char*name):Publication(name){}virtualconstchar*getType()const{return"書";}};voidshowPublication(Publication&p){cout<A、未知類型:未知名稱B、未知類型:精彩人生C、書:未知名稱D、書:精彩人生標準答案:D知識點解析:因為類Book繼承自基類Publication,所以在類Book中的虛常成員函數(shù)*getType(){return"書";}就會覆蓋基類中的虛常成員函數(shù)*getType()const{return"未知類型";},所以在主函數(shù)中調(diào)用函數(shù)showPublication(book)時,getType()函數(shù)的輸出的結(jié)果是“書”,getName()函數(shù)的輸出結(jié)果為“精彩人生”。24、下列關(guān)于運算符重載的描述中,正確的是()。A、運算符重載為成員函數(shù)時,若參數(shù)表中無參數(shù),重載的是一元運算符B、一元運算符只能作為成員函數(shù)重載C、二元運算符重載為非成員函數(shù)時,參數(shù)表中有一個參數(shù)D、C++中可以重載所有的運算符標準答案:A知識點解析:此題考查的是運算符的重載。運算符重載為成員函數(shù)時,形參個數(shù)一般為運算符元數(shù)減l:重載為非成員函數(shù)時,形參個數(shù)一般和運算符元數(shù)相等。所以二元運算符重載為非成員函數(shù)時,參數(shù)表中應(yīng)有兩個參數(shù),C選項錯誤;運算符重載為成員函數(shù),若參數(shù)表中無參數(shù),重載的是一元運算符,選項A正確:一元運算符中,“.”(取負)、“++”、“--”等均可重載為成員函數(shù);C++語言中,“.”、“.*”、“->*”、“::”、“?:”五個運算符不能重載。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共22題,每題1.0分,共22分。)1、某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)()。A、3B、4C、6D、7標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為7層,每層只有一個結(jié)點。2、下列運算符中不能在C++中重載的是()。A、?:B、+C、-D、<=標準答案:A知識點解析:此題考查的是運算符的有關(guān)概念。運算符重載是針對C++原有運算符進行的,不能通過重載創(chuàng)造新的運算符;除了.、.*、->*、::、?:這五個運算符之外,其他運算符都可以重載。3、對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是A、冒泡排序為n/2B、冒泡排序為nC、快速排序為nD、快速排序為n(n一1)/2標準答案:D知識點解析:假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2??焖倥判蚍ㄒ彩且环N交換類的排序方法,但由于它比冒泡排序法的速度快,因此,稱為快速排序法。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、對數(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ù)共用一段存儲單元。6、數(shù)據(jù)字典(DD)所定義的對象都包含于()。A、數(shù)據(jù)流圖(DFD圖)B、程序流程圖C、軟件結(jié)構(gòu)圖D、方框圖標準答案:A知識點解析:數(shù)據(jù)字典是指對數(shù)據(jù)的數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數(shù)據(jù)流程圖中的各個元素做出詳細的說明。7、有如下程序:#include<iostream.h>voidmain(){charstr[2][5]={’’1234’’,’’5678’’},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=str[i];for(i=0;i<2;i++)for(j=0;p[i][j]>’\0’;j+=2)s=10*s+p[i][j]-’0’;cout<<s;}該程序的輸出結(jié)果是()。A、1357B、2468C、3556D、23678標準答案:A知識點解析:程序中的“for(i=0;i<2;i++)p[i]=str[i];”語句將str中的值賦值給指針數(shù)組p。在接下來的二重for循環(huán)中,跳取“j+=2”,p指針指向的值即“1”,“3”,“5”,“7”。在分別對字符到整型的轉(zhuǎn)換,即減去字符’0’,然后依次轉(zhuǎn)換為千位,百位,十位,個位“10*s”操作輸出整型s,即“1357”。8、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是A、可行性分析報告B、軟件需求規(guī)格說明書C、概要設(shè)計說明書D、集成測試計劃標準答案:B知識點解析:需求分析的最終結(jié)果是生成軟件需要規(guī)格說明書,可以為用戶、分析人員和設(shè)計人員之間的交流提供方便,可以直接支持目標與確認,又可以作為控制軟件開發(fā)進程的依據(jù)。9、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、交C、投影D、并標準答案:A知識點解析:選擇是單目運算,其運算對象是一個表。該運算按給定的條件,從表中選出滿足條件的行形成一個新表作為運算結(jié)果。投影也是單目運算,該運算從表中選出指定的屬性值組成一個新表。自然連接是一種特殊的等價連接,它將表中有相同名稱的列自動進行記錄匹配。自然連接不必指定任何同等連接條件。10、一般情況下,當對關(guān)系R和S進行自然連接時,要求R和S含有一個或者多個共有的()。A、記錄B、行C、屬性D、元組標準答案:C知識點解析:自然連接要滿足兩個條件:一是兩關(guān)系之間有公共域。二是通過共域的相等值進行連接。11、有如下程序:#includeusingnamespacestd;classBASE{public:-BASE0{cout<<”BASE”;}};classDERIVED:publicBASE{public:-DERIVED(){cout<<”DERIVED”;)};intmain(){DERIVEDx;retumO;}執(zhí)行后的輸出結(jié)果是()。A、BASEB、DEIVEDC、BASEDERIVEDD、DERIVEDBASE標準答案:D知識點解析:此題考查的是派生類的定義和使用。當對象被刪除時,派生類的析構(gòu)函數(shù)就被執(zhí)行。由于析構(gòu)函數(shù)不能被繼承,因此在執(zhí)行派生類的析構(gòu)函數(shù)時,基類的析構(gòu)函數(shù)也將被調(diào)用。執(zhí)行順序是先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù),其順序與執(zhí)行構(gòu)造函數(shù)的順序正好相反。12、下列語句中,與語句“1n=(a>b?(1)>c?1:0):0);”的功能等價的是()。A、if(a<=b)n=0;B、if((a>b)Il(b>c))n=1;elsen=0;C、if(a>b)if(b>c)n=1:elsen=0;elsen=0;D、if(a>b)n=1;elseif(<=c)n=1;elseif(b>c)n=1;elsen=0;標準答案:C知識點解析:條件表達式(a>b?(b>c?1:0):0)的含義是,如果a>b成立,則此表達式的值等于條件表達式(b>c?1:0)的值,否則其值等于0。而條件表達式(b>c?1:0)的含義是,如果b>c成立,其值等于1,否則其值等于0。13、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";)};classB{public:B(){cout<<"B";)}classC:publicA{Bb;public:B(){cout<<"C";}};intmain(){Cobj;return0;}執(zhí)行后的輸出結(jié)果是()。A、CBAB、BACC、ACBD、ABC標準答案:D知識點解析:此題考查的是類的繼承和派生。系統(tǒng)首先要通過派生類的構(gòu)造函數(shù)調(diào)用基類的構(gòu)造函數(shù),對基類成員初始化;然后對派生類中的新增成員初始化。14、運算符重載時不需要保持的性質(zhì)是()。A、操作數(shù)個數(shù)B、操作數(shù)類型C、優(yōu)先級D、結(jié)合性標準答案:B知識點解析:運算符重載應(yīng)該體現(xiàn)為原有運算符的功能在新的數(shù)據(jù)類型上的延伸。重載的運算符保持原有運算符的操作個數(shù)、優(yōu)先級和結(jié)合性三個最基本的特征。15、有如下程序#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3:Funfun1;constFunfun2;return;}若程序的輸出結(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知識點解析:此題考查的是常成員函數(shù)。const關(guān)鍵字可以用于參與重載函數(shù)的區(qū)分,此時常對象調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù)。當類中只有一個常成員函數(shù)時,一般對象也可以調(diào)用該常成員函數(shù)。本題中,通過funl調(diào)用value()函數(shù)時,是調(diào)用前一個,而通過fun2調(diào)用value()函數(shù)是調(diào)用后一個:另外,value()函數(shù)中,訪問的i是類中定義的數(shù)據(jù)成員i,全局變量i在類中被“屏蔽”。fun1.value()輸出i-1=2-1=1;fun2.value()調(diào)用后一個value()函數(shù)輸出i+1=2+1=3;Fun::i是通過類名直接訪問類的靜態(tài)數(shù)據(jù)成員i的值,即2;所以正確的輸出順序是A選項。16、下列控制格式輸入輸出的操作符中,能夠設(shè)置浮點數(shù)精度的是()。A、senIrecisionB、setwC、setfillD、showpoint標準答案:A知識點解析:setprecision(intn):設(shè)置浮點數(shù)的精度(有效位數(shù)或小數(shù)位數(shù)),等價函數(shù)調(diào)用:io.precision(n)。17、已知函數(shù)f的原型是voidf(int*a,long&b);,變量v1、V2的定義是:intv1:longv2;下列調(diào)用語句中正確的是()。A、f(v1,&v2);B、f(v1,V2);C、f(&v1,&V2);D、f(&v1,v2);標準答案:D知識點解析:此題考查的是函數(shù)的調(diào)用。因為變量的定義是intv1;longv2,而函數(shù)f()的第一個參數(shù)是指針,第二個參數(shù)是引用,所以選項D為正確引用。18、有如下兩個類定義classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護成員變量的個數(shù)是()。A、1B、2C、3D、4標準答案:C知識點解析:在C++中派生類從基類保護繼承時,基類的公有成員在派生類中改變?yōu)楸Wo成員,基類的保護成員在派生類中仍為保護成員。所以對于本題來說,YY類保護繼承自類XX,那么類XX中的公有成員x3和保護成員x2在派生類中都成為保護成員,再加上類YY中的保護成員y2,因此在派生類YY中保護成員的個數(shù)為3。19、下列關(guān)于類成員對象構(gòu)造函數(shù)調(diào)用順序的敘述中,正確的是()。A、與它們在初始化列表中的順序相同B、與它們在類中聲明的順序相同C、與析構(gòu)函數(shù)的調(diào)用順序相同D、順序不確定標準答案:B知識點解析:類成員對象構(gòu)造函數(shù)的調(diào)用是按照在類中定義的順序進行的,而不是按照構(gòu)造函數(shù)說明后的冒號順序進行構(gòu)造的。20、將運算符重載為類成員函數(shù)時,其參數(shù)表中沒有參數(shù),說明該運算符是()。A、不合法的運算符B、—元運算符C、無操作數(shù)的運算符D、二元運算符標準答案:B知識點解析:對于一元或二元運算符函數(shù)作為成員函數(shù)重載時,第一操作數(shù)就是對象本身,并不顯式地出現(xiàn)在參數(shù)表中。即第一操作數(shù)僅以this指針的形式隱含存在于參數(shù)表中。因此,對于一元運算符參數(shù)表是空的;對于二元運算符參數(shù)表中只有一個參數(shù),它代表第二操作數(shù)。21、有如下程序:#include<iostream>usingnamespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<<page<<endl;}voidShow(){Media::Show();}//①};intmain(){BookBible;Bible.Name();//②Bible.Print();//③Bible:Show();//④return0;}編譯時有錯誤的是()。A、語句①B、語句②C、語句③D、語句④標準答案:B知識點解析:類Book私有繼承自類Media,所以類Media中的公有成員函數(shù)Name()在繼承類Book中變成了私有成員函數(shù),因而類Book的對象Bible不能訪問私有成員函數(shù)Name()。22、下列關(guān)于文件流的描述中,正確的是()。A、文件流只能完成針對磁盤文件的輸入和輸出B、建立一個文件流對象時,必須同時打開一個文件C、若輸入流要打開的文件不存在,將建立一個新文件D、若輸出流要打開的文件不存在,將建立一個新文件標準答案:D知識點解析:對于輸入文件流類ifstream,默認的打開模式是ins_base:fin,當以這種方式打開文件而文件又不存在時,通過fail()可測試打開失敗(返回值為true),對于輸出文件流類ofstream,默認的打開模式是ios_base::out,當以這種方式打開文件而文件又不存在時,將自動建立新文件。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共20題,每題1.0分,共20分。)1、某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)A、3B、4C、6D、7標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為7層,每層只有一個結(jié)點。2、在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為()。A、63B、64C、6D、7標準答案:B知識點解析:順序查找又稱順序搜索。順序查找一般是指在線性表中查找指定的元素,其基本方法是:從線性表的第一元素開始,依次將線性表中的元素與被查找的元素進行比較,若相等則表示找到(即查找成功),若線性表中所有元素都與被查元素進行了比較但都不相等,則表示線性表中沒有要找的元素(即查找失敗)。如果線性表中的第一個元素就是要查找的元素,則只需要做一次比較就查找成功;但如果要查找的元素是線性表中的最后一個元素,或者要查找元素不在線性表中,則需要與線性表中所有元素進行比較,這是順序查找的最壞情況,比較次數(shù)為線性表的長度。3、內(nèi)聚性是對模塊功能強度的衡量,下列選項中,內(nèi)聚性較弱的是()。A、順序內(nèi)聚B、偶然內(nèi)聚C、時間內(nèi)聚D、邏輯內(nèi)聚標準答案:B知識點解析:內(nèi)聚是從功能角度來衡量模塊的聯(lián)系,它描述的是模塊內(nèi)的功能聯(lián)系。內(nèi)聚有如下種類,它們之間的內(nèi)聚度由弱到強排列:偶然內(nèi)聚一一模塊中的代碼無法定義其不同功能的調(diào)用。但它使該模塊能執(zhí)行不同的功能,這種模塊為巧合強度模塊。邏輯內(nèi)聚一一這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的參數(shù)來確定該模塊應(yīng)完成哪一種功能。時間內(nèi)聚一一這種模塊順序完成一類相關(guān)功能,比如初始化模塊,它順序地為變量置初值。過程內(nèi)聚一一如果一個模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱為過程內(nèi)聚。通信內(nèi)聚一一這種模塊除了具有過程內(nèi)聚的特點外,還有另外一種關(guān)系,即它的所有功能都通過使用公用數(shù)據(jù)而發(fā)生關(guān)系。順序內(nèi)聚一一如果一個模塊內(nèi)各個處理元素和同一個功能密切相關(guān),而且這些處理必須順序執(zhí)行,處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù),則稱為順序內(nèi)聚。功能內(nèi)聚一一如果一個模塊包括為完成某一具體任務(wù)所必需的所有成分,或者說模塊中所有成分結(jié)合起來是為了完成一個具體的任務(wù),此模塊則為功能內(nèi)聚模塊。4、下面不屬于軟件需求分析階段主要工作的是()。A、需求變更申請B、需求分析C、需求評審D、需求獲取標準答案:A知識點解析:在軟件開發(fā)的過程中,應(yīng)該盡早的制定測試計劃,其中在需求分析階段制定系統(tǒng)測試計劃,在概要設(shè)計階段制定集成測計劃,在詳細設(shè)計階段制定單元測試計劃。5、軟件需求規(guī)格說明書的作用不包括()。A、軟件驗收的依據(jù)B、用戶與開發(fā)人員對軟件要做什么的共同理解C、軟件設(shè)計的依據(jù)D、軟件可行性研究的依據(jù)標準答案:D知識點解析:軟件規(guī)格說明書主要有三個作用:①用戶和軟件開發(fā)人員之間的合同;②開發(fā)人員進行設(shè)計和編程的依據(jù):③軟
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024頂級擔保協(xié)議協(xié)議樣例
- 2024年魚類購銷專項協(xié)議范本
- 2024年光伏技術(shù)合作協(xié)議樣本
- 2024年行政賠償協(xié)議模板
- 2024年度企業(yè)設(shè)備采購內(nèi)部控制協(xié)議
- 2024環(huán)保型進戶門交易協(xié)議書
- 2024重要會議場所租賃協(xié)議
- 2024年裝修工程承包協(xié)議明細
- 2024專業(yè)司機陪同車輛租賃服務(wù)協(xié)議
- 2024年度商業(yè)大廈建設(shè)簡易協(xié)議協(xié)議
- 從局部到整體:5G系統(tǒng)觀-概要版-vivo通信研究院
- GB/T 22844-2009配套床上用品
- GB/T 14683-2017硅酮和改性硅酮建筑密封膠
- 無人機校企合作協(xié)議
- GB 16809-2008防火窗
- 《百團大戰(zhàn)》歷史課件
- 八年級上冊道德及法治非選擇題專項訓(xùn)練
- 2023年徐州市國盛控股集團有限公司招聘筆試題庫及答案解析
- 機械課程設(shè)計~二級減速器設(shè)計教程
- 國家開放大學(xué)《傳感器與測試技術(shù)》實驗參考答案
- 工程造價司法鑒定實施方案
評論
0/150
提交評論