![國家二級(C++)筆試模擬試卷7(共447題)_第1頁](http://file4.renrendoc.com/view8/M00/3F/2B/wKhkGWbL2aeADu6qAAGXInYWaXE092.jpg)
![國家二級(C++)筆試模擬試卷7(共447題)_第2頁](http://file4.renrendoc.com/view8/M00/3F/2B/wKhkGWbL2aeADu6qAAGXInYWaXE0922.jpg)
![國家二級(C++)筆試模擬試卷7(共447題)_第3頁](http://file4.renrendoc.com/view8/M00/3F/2B/wKhkGWbL2aeADu6qAAGXInYWaXE0923.jpg)
![國家二級(C++)筆試模擬試卷7(共447題)_第4頁](http://file4.renrendoc.com/view8/M00/3F/2B/wKhkGWbL2aeADu6qAAGXInYWaXE0924.jpg)
![國家二級(C++)筆試模擬試卷7(共447題)_第5頁](http://file4.renrendoc.com/view8/M00/3F/2B/wKhkGWbL2aeADu6qAAGXInYWaXE0925.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
國家二級(C++)筆試模擬試卷7(共9套)(共447題)國家二級(C++)筆試模擬試卷第1套一、公共基礎選擇題(本題共10題,每題1.0分,共10分。)1、具有3個結(jié)點的二叉樹有()。A、2種形態(tài)B、4種形態(tài)C、7種形態(tài)D、5種形態(tài)標準答案:D知識點解析:暫無解析2、數(shù)據(jù)的存儲結(jié)構(gòu)是指()。A、數(shù)據(jù)所占的存儲空間B、數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的存放形式C、數(shù)據(jù)在計算機中的順序存儲方式D、存儲在計算機外存中的數(shù)據(jù)標準答案:B知識點解析:數(shù)據(jù)的存儲結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的存放形式。數(shù)據(jù)的存儲結(jié)構(gòu)有順序結(jié)構(gòu),鏈式結(jié)構(gòu)、散列結(jié)構(gòu)和索引結(jié)構(gòu)等。3、算法分析的目的是A、找出數(shù)據(jù)結(jié)構(gòu)的合理性B、找出算法中輸入和輸出之間的關(guān)系C、分析算法的易懂性和可靠性D、分析算法的效率以求改進標準答案:D知識點解析:算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應的數(shù)量級,常用時間復雜度和空間復雜度表示。分析算法的目的就是要降低算法的時間復雜度和空間復雜度,提高算法的執(zhí)行效率。4、完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導出測試用例的測試方法是()。A、黑箱測試法B、白箱測試法C、錯誤推測法D、安裝測試法標準答案:1知識點解析:暫無解析5、下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是A、便于用戶、開發(fā)人員進行理解和交流B、反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎和依據(jù)C、作為確認測試和驗收的依據(jù)D、便于開發(fā)人員進行需求分析標準答案:8知識點解析:軟件需求規(guī)格說明書(SRS,SoftwareRequirementSpecification)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它有以下幾個方面的作用:①便于用戶、開發(fā)人員進行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)下作的基礎和依據(jù);③作為確認測試和驗收的依據(jù)。6、軟件設計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設計,其中軟件的過程設計是指A、模塊間的關(guān)系B、系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C、軟件層次結(jié)構(gòu)D、軟件開發(fā)過程標準答案:2知識點解析:軟件設計包括軟件結(jié)構(gòu)設計、數(shù)據(jù)設計、接口設計和過程設計。其中結(jié)構(gòu)設計是定義軟件系統(tǒng)各主要部件之間的關(guān)系;數(shù)據(jù)設計是將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義;接口設計是描述軟件內(nèi)部、軟件和操作系統(tǒng)之間及軟件與人之間如何通信;過程設計則是把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程性描述。7、下列關(guān)于隊列的敘述中,不正確的是()。A、在隊列中能插入數(shù)據(jù)B、在隊列中能刪除數(shù)據(jù)C、隊列是先進先出的線性表D、隊列是先進后出的線性表標準答案:8知識點解析:隊列是指允許在一端進行插入,而在另一端進行刪除的線性表。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭,所以在隊列中既可以插入數(shù)據(jù)也能刪除數(shù)據(jù),所以選項A、B是正確的。在這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素最先能夠被刪除。因此隊列又稱為先進先出的線性表。答案是D。8、以下各運算中,不屬于算術(shù)運算的是()。A、大于B、加C、乘D、除標準答案:1知識點解析:在一般的計算機系統(tǒng)中,基本的運算和操作有以下4類:算術(shù)運算、邏輯運算、關(guān)系運算、數(shù)據(jù)傳輸?!按笥凇睂儆谶壿嬤\算中的一種。選項中的加、乘、除都屬于算術(shù)運算。9、程序的3種基本控制結(jié)構(gòu)是A、過程、子過程和分程序B、順序、選擇和重復C、遞歸、堆棧和隊列D、調(diào)用、返回和轉(zhuǎn)移標準答案:2知識點解析:采用結(jié)構(gòu)化程序設計方法編寫程序,可使程序結(jié)構(gòu)良好、易讀、易理解、易維護,它包括3種基本控制結(jié)構(gòu),分別是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復結(jié)構(gòu)(又稱循環(huán)結(jié)構(gòu))。注意:控制程序結(jié)構(gòu)的方法和作用。10、下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。A、多態(tài)性B、繼承C、封裝性D、模塊化標準答案:D知識點解析:面向?qū)ο笤O計方法與面向過程設計方法有本質(zhì)的不同,其基本原理是,使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結(jié)構(gòu)化程序設計的特點。二、選擇題(本題共25題,每題1.0分,共25分。)11、有如下函數(shù)模板聲明:template<typenameT>TMax(Ta,TB){return(a>=B)?a:b;}下列對函數(shù)模板Max()的調(diào)用中錯誤的是A、Max(3.5,4.5)B、Max(3.5,4)C、Max<double>(3.5,4.5)D、Max<double>(3.5,4)標準答案:B知識點解析:本題考核函數(shù)模板的使用。引用模板函數(shù)和引用一般的函數(shù)在語法形式上沒有任何區(qū)別。所有的類型替換都是編譯器在幕后悄悄進行的。但是要注意的是說明一個函數(shù)模板后,當編譯系統(tǒng)發(fā)現(xiàn)有一個對應的函數(shù)調(diào)用時,將根據(jù)實參中的類型來確認是否匹配函數(shù)模板中對應的形參。例如,本題中的B)選項,編譯系統(tǒng)從第一個參數(shù)“3.5”獲得的信息是“T對應于double”,而從第二個參數(shù)“4”處獲得的信息是“T對應于int”,二者相互矛盾,在編譯時會產(chǎn)生錯誤。對于D)選項中緊跟在函數(shù)名后的<double>就是模板實參表,通過它通知編譯系統(tǒng)在調(diào)用過程中,int型的參數(shù)“4”將被自動換成double型。12、在公有派生的情況下,派生類中定義的成員函數(shù)只能訪問原基類的A、公有成員和私有成員B、私有成員和保護成員C、公有成員和保護成員D、私有成員、保護成員和公有成員標準答案:C知識點解析:本題考核派生類的定義和訪問權(quán)限。當類的繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類私有成員不可訪問。即基類的公有成員和保護成員分別作為派生類的公有成員和保護成員,派生類的其他成員可以直接訪問它們。13、下列有關(guān)類成員的敘述中,正確的是()。A、友元函數(shù)是類的成員函數(shù)B、類成員的默認訪問權(quán)限是私有的C、類成員函數(shù)必須聲明為公有的D、類的靜態(tài)數(shù)據(jù)成員不能是常成員標準答案:B知識點解析:此題考查的是類成員的有關(guān)概念。類的友元函數(shù)可以直接訪問該類的所有成員,但它不是類的成員函數(shù),故選項A)錯誤;類成員函數(shù)的訪問權(quán)限可以聲明為公有、保護、私有,故選項C)錯誤;靜態(tài)數(shù)據(jù)成員的聲明是使用關(guān)鍵字static,它可以是常成員,故選項D)錯誤。14、請閱讀以下程序main(){intx=1,y=0,a=0,b=0;switch(x)case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}cout<<"a="<<a<<"b="<<b<<endl;}上面程序的輸出結(jié)果是A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2標準答案:A知識點解析:本題考察switch語句的嵌套,以及break語句的使用規(guī)則,不再執(zhí)行下面的case語句,如果沒有break語句,則會順序執(zhí)行隨后語句。據(jù)此,讀程序可知,內(nèi)層switch執(zhí)行case0分支,故a增1,跳出內(nèi)層switch后,由于沒有break語句;隨后執(zhí)行外層switch的case2分支,a又增1,b增1。故答案為A。15、下面關(guān)于類和對象的描述中,錯誤的是A、類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量B、類和對象之間的關(guān)系是抽象和具體的關(guān)系C、對象是類的實例,一個對象必須屬于一個已知的類D、類是具有共同行為的若干對象的統(tǒng)一描述體標準答案:A知識點解析:在C++語言中,類和結(jié)構(gòu)體有本質(zhì)區(qū)別,類中包含數(shù)據(jù)及操作函數(shù),而結(jié)構(gòu)體只包含有數(shù)據(jù)。16、下列程序的輸出結(jié)果是#include<iostream.h>intb=2;intfunc(int*a){b+=*a;return(b);}voidmain(){inta=2,res=2;res+=func(&a);cout<<res;}A、4B、6C、8D、10標準答案:B知識點解析:在函數(shù)體語句b+=*a;中的*是指針運算符(也稱間接訪問運算符),*a就是main函數(shù)中a的值。17、將x+y*z中的“+”用成員函數(shù)重載,“*”用友元函數(shù)重載應寫為()。A、operator+(operator*(y,z))B、x.operator+(operator*(y,z))C、x.operator+(x*(y,z))D、x+(operator*(y,z))標準答案:B知識點解析:在定義了重載運算符后的函數(shù)后,函數(shù)operator}重載了運算符“+”。如果在類以外的其他地方定義了一個函數(shù),在類體中用friend對該函數(shù)進行聲明,此函數(shù)就稱為本類的友員函數(shù)?!?”用友元函數(shù)重載就是運算符函數(shù)不作為成員函數(shù),而把它放在類外,“*”被改寫為“operator*”?!?”為成員函數(shù)重載,x.operator。所以x+y*z被改寫為“x.operator+(operator*(y,z))”。18、按照標識符的要求,開頭的符號不能是()。A、大寫字母B、小寫字母C、數(shù)字字符D、下劃線標準答案:4知識點解析:C++規(guī)定,標識符由大小寫字母、數(shù)字字符和下劃線組成,并且以字母或下劃線開始。因此,本題正確答案為C。19、語句inti=2.8*6;中整型常量i定義后賦初值的結(jié)果是()。A、12B、16C、17D、18標準答案:2知識點解析:C++中數(shù)據(jù)類型轉(zhuǎn)換有兩種類型,即隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換。隱式類型轉(zhuǎn)換是由編譯器自動完成的類型轉(zhuǎn)換;顯示類型轉(zhuǎn)換是由程序員顯式指出的類型轉(zhuǎn)換。本題中是隱式類型轉(zhuǎn)換,浮點數(shù)轉(zhuǎn)換為整數(shù),是直接取浮點數(shù)的整數(shù)部分,而不是四舍五入。故答案為B。20、下面程序輸出的結(jié)果是()。#include<iostream>usingnamespacestd;intfuc(char*x);intmain(){cout<<fuc("hello")<<endl;return0;}intfuc(char*x){char*y=x;while(*y!=’\0’)y++;return(y-x);}A、5B、6C、0D、語法錯誤,不能輸出結(jié)果標準答案:1知識點解析:函數(shù)fuc()的功能是計算字符串x的長度,因此程序的輸出是5。21、在基類中有定義的純虛函數(shù),它要求在派生類中定義,而且基類不能用以說明對象,則該類為()。A、虛基類B、抽象類C、虛函數(shù)類D、模板類標準答案:2知識點解析:類中一旦有純虛函數(shù)的定義那么這個類就再也不能創(chuàng)建此類的對象了,我們把這種類叫做抽象類。22、有如下類的定義。橫線處的語句是()。classMyClass{public:MyClass(inta=0,intb=0){X=a;Y=b;}voidChange()const{X=10;Y+=10;}private:___________________intX,Y;};A、staticB、constC、mutableD、不需要填入內(nèi)容標準答案:4知識點解析:暫無解析23、在C++語言的數(shù)據(jù)類型中,int、short等類型的長度是()。A、固定的B、任意的C、由用戶自定義D、與機器字長有關(guān)標準答案:8知識點解析:暫無解析24、語句ofstreamf("SALARY.DAT",ios::app|los::binary);的功能是建立流對象f,試圖打開文件SALARY.DAT并與之連接,并且______。A、若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個新文件B、若文件存在,將其置為空文件;若文件不存在,打開失敗C、若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個新文件D、若文件存在,打開失?。蝗粑募淮嬖冢⒁粋€新文件標準答案:2知識點解析:暫無解析25、若有定義“intx=10,y=3,z;”,則語句“cout<<(z=(x%y,x/Y));”的輸出結(jié)果是______。A、1B、0C、4D、3標準答案:8知識點解析:暫無解析26、下列程序的輸出結(jié)果是#include"iostream"usingnamespacestd;intMax(inta,intb){if(a>b)returna;elsereturnb;}voidmain(){intm,n;m=10,n=5;intmax=Max(m,n);cout<<max<<endl;}A、10B、程序有誤C、1D、0標準答案:1知識點解析:本題函數(shù)Max的功能是求出兩個整數(shù)中的較大者,并且通return語句返回。注意:return語句的用法,注意return的條件。27、下列描述中,()是抽象類的特性。A、可以說明虛函數(shù)B、可以進行構(gòu)造函數(shù)重載C、可以定義友元函數(shù)D、不能說明其對象標準答案:8知識點解析:暫無解析28、在C++中,關(guān)于下列設置參數(shù)默認值的描述中,正確的是()。A、不允許設置參數(shù)的默認值B、設置參數(shù)默認值只能在定義函數(shù)時設置C、設置參數(shù)默認值時,應該是先設置右邊的再設置左邊的D、設置參數(shù)默認值時,應該全部參數(shù)都設置標準答案:4知識點解析:暫無解析29、在C++中,打開一個文件,就是將這個文件與一個()建立關(guān)聯(lián),關(guān)閉一個文件,就是取消這種關(guān)聯(lián)。A、類B、流C、對象D、結(jié)構(gòu)標準答案:2知識點解析:暫無解析30、下面程序的運行結(jié)果是#include<iostream.h>intfun(inta[],intn){intresult=1;for(inti=1;i<n;i++)result=result*a[i];returnresult;}voidmain(){inta[3]={3,4,5};cout<<fun(a,A、12B、15C、20D、60標準答案:4知識點解析:for循環(huán)執(zhí)行2次,所以第一次for循環(huán)為result=1*a[l]=4,第二次for循環(huán)為result=4*a[2]=20。31、關(guān)于類和對象描述錯誤的是A、對象(Object)是現(xiàn)實世界中的客觀事物,對象具有確定的屬性B、類是具有相同屬性和行為的一組對象的集合C、對象是類的抽象,類是對象的實例D、類是對象的抽象,對象是類的實例標準答案:4知識點解析:C++中,類是用戶自定義的一種數(shù)據(jù)類型,對象是類的實例,類定義了屬于該類的所有對象的共同特性。一個類作為一種數(shù)據(jù)類型,它可以定義多個對象。32、設有以下定義和程序:#include<iostream.h>classA1{public:voidshow1(){cout<<"classA1”<<end1;}};classA2:publicA1{public:voidshow2(){cout<<"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();標準答案:4知識點解析:本題考核派生類的使用以及訪問權(quán)限問題。C++中,通過類的對象只能訪問類的公有成員,不能訪問類的保護成員和私有成員。A2是A1的公有派生類,A3是A2的保護派生類,所以類A1的成員函數(shù)show1()在類A3中呈現(xiàn)保護屬性,不能通過A3類的對象訪問。33、友元運算符obj1>obj2被C++編譯器解釋為()。A、operator>(obj1,obj2)B、>(obj1,obj2)C、obj2.operator>(obj1)D、obj1.operator>(obj2)標準答案:1知識點解析:暫無解析34、下列關(guān)于虛基類的描述,錯誤的是A、設置虛基類的目的是為了消除二義性B、虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用C、若同一層中包含多個虛基類,這些虛基類的構(gòu)造函數(shù)按它們說明的次序調(diào)用D、若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)標準答案:2知識點解析:虛基類的引入就是為了消除二義性,其構(gòu)造函數(shù)的調(diào)用仍然是按照繼承的順序進行的,對于多個虛基類則按它們說明的次序調(diào)用,虛基類的構(gòu)造函數(shù)選于非虛基類的構(gòu)造函數(shù)執(zhí)行。35、下面有關(guān)重載函數(shù)的描述中,正確的是()。A、重載函數(shù)必須具有不同的返回值類型B、重載函數(shù)形參個數(shù)必須不同C、重載函數(shù)必須具有不同的形參列表D、重載函數(shù)名可以不同標準答案:C知識點解析:所謂函數(shù)重載是指同一函數(shù)名可以對應多個函數(shù)實現(xiàn)。進行函數(shù)重載時,要求同名函數(shù)在參數(shù)個數(shù)上不同,或者參數(shù)類型上不同。但函數(shù)的返回類型不能作為判斷重載的依據(jù)。三、公共基礎填空題(本題共5題,每題1.0分,共5分。)36、若串s="MathTypes",則其子串的數(shù)目是______。標準答案:46知識點解析:串s中共有9個字符,由于串中字符各不相同,則其子串中有0個字符的1個(空串),1個字符的9個,2個字符的8個,3個字符的7個,4個字符的6個,5個字符的5個,6個字符的4個,7個字符的3個,8個字符的2個,9個字符的1個,共有1+2+3十4+5+6+7+8+9+1=46。37、在面向?qū)ο蠓椒ㄖ?,__________描述的是具有相似屬性與操作的一組對象。標準答案:類知識點解析:在面向?qū)ο蠓椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實例。38、數(shù)據(jù)流圖的類型有【】和事務型。標準答案:變換型知識點解析:典型的數(shù)據(jù)流類型有兩種:變換型和事務型,,變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流。它可以引發(fā)一個或多個處理,這此處理能夠完成液作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務。39、.、.*、->、::、?:這五個運算符______重載。標準答案:不能知識點解析:暫無解析40、當循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行人隊運算。這種情況稱為______。標準答案:上溢知識點解析:暫無解析四、填空題(本題共10題,每題1.0分,共10分。)41、執(zhí)行下列語句后,變量sum的值是______。intsum=0;for(inti=1;i<=3;i++)for(intj=1;j<=i;j++)sum++;標準答案:6知識點解析:此題考查的是for循環(huán)的嵌套。題目中外循環(huán)會循環(huán)3次,每次循環(huán)變量i的值分別是1、2、3;內(nèi)循環(huán)會循環(huán)i次,故3次執(zhí)行內(nèi)循環(huán),循環(huán)此數(shù)分別是1、2、3次。故最終sum的值為6。42、在下列的程序的橫線處填上適當?shù)恼Z句,使該程序的輸出為12。#include<iostream.h>usingnamespacestd;classBase{public:inta,b;Base(inti){a=i;}};classDerived:publicBase{inta;public:Derived(intx):Base(x),b(x+1){};voidshow(){______;//輸出基類數(shù)據(jù)成員a的值。cout<<b<<endl;}};voidmain(){Derivedd(1);d.show();return0;}標準答案:cout<<Base::a知識點解析:此題考查的是基類和派生類的構(gòu)造函數(shù)。派生類構(gòu)造函數(shù)的執(zhí)行順序;首先調(diào)用基類的構(gòu)造函數(shù),調(diào)用順序按它們被繼承時說明的順序;然后調(diào)用子對象的構(gòu)造函數(shù),調(diào)用順序按它們在類中說明的順序;最后是派生類構(gòu)造函數(shù)中的內(nèi)容。此題要求結(jié)果是輸出12,分析題目:首先調(diào)用基類的構(gòu)造函數(shù),然后是調(diào)用子對象的構(gòu)造函數(shù),橫線處要求輸出基類成員a的值,填入cout<<Base::a即可。43、已知intDBL(intn){returnn+n;}和longDBL(longn){returnn+n}是一個函數(shù)模板的兩個實例,則該函數(shù)模板的定義是______。標準答案:template<classT>TDBL(Tn){returnn+n;}知識點解析:本題考核函數(shù)模板的使用。函數(shù)模板的一般說明形式如下:template<類型形參表>返回類型函數(shù)名(形參表){//函數(shù)體)。函數(shù)調(diào)用方式為:函數(shù)名(實參表);。形參表中的類型以實參表中的實際類型為依據(jù)。由此易得答案。44、下列程序的運行結(jié)果是______。#include<iomanip.h>intFunc(int*a,intn){ints=1;for(inti=0;i<n;i++)s*=*a++;returns;}voidmain(){inta[]:{1,2,3,4,5,6,7,8};intb=Func(a,6)+Func(&a[5],2);cout<<“b=“<(b<<endl;}標準答案:b=762。知識點解析:本題考查了。a++的用法。*a++作為表達式時,先計算*a作為表達式的值,然后使指針變量a本身增1,在本惠中,s*=*a++等同于3=s**a,a++,S后面第一個*是乘號。45、若有定義語句:intx=3,y=2,z=1;,則表達式x標準答案:2知識點解析:本題考查的是運算符的優(yōu)先級。首先x=3,y=2,判斷x46、若要將函數(shù)“voidFriFun{};”聲明為類MyClass的友元函數(shù),則應在類MyClass的定義中加入語句______。標準答案:friendvoidFriFun();知識點解析:暫無解析47、以下程序的運行結(jié)果是【】。#include<iostream>#include<string>usingnamespacestd;voidmain(){chara[10]="China",b[]="Chin",c[]="ese";cout<<strlen(strcat(strcpy(a,b),c))<<endl;}標準答案:7知識點解析:本題主要考查C++中字符串函數(shù)的使用。strcpy(s1,s2)將s2的內(nèi)容賦值到s1中;strcat(s1,s2)連接s1和s2兩個字符串;strlen(s)返回字符數(shù)組s的長度。因此最后輸出的結(jié)果是b和c進行連接后的字符串長度,即7。48、假定動態(tài)分配一個類型為Worker的具有n個元素的數(shù)組,并由P指向這個動態(tài)數(shù)組,如果要釋放這個數(shù)組,則使用的語句為【】。標準答案:delete[]p;知識點解析:語句為delete[]p;。49、______使一個函數(shù)可以定義成對許多不同數(shù)據(jù)類型完成同一個任務。標準答案:函數(shù)模板知識點解析:暫無解析50、模板使我們可以用一個代碼段指定一組相關(guān)函數(shù)(稱為______)或一組相關(guān)類(稱為______。標準答案:函數(shù)模板、類模板知識點解析:暫無解析國家二級(C++)筆試模擬試卷第2套一、公共基礎選擇題(本題共10題,每題1.0分,共10分。)1、最簡單的交換排序方法是A、快速排序B、選擇排序C、堆排序D、冒泡排序標準答案:8知識點解析:冒泡排序是一種最簡單的交換類排序方法,它是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。注意:交換排序方法有冒泡排序和快速排序,顯然選項B)和選項C)錯誤,冒泡排序比較簡單,其算法也容易理解,但快速排序本身較為復雜,且采用了遞歸調(diào)用,具算法理解也稍難。注意:插入排序、選擇排序、歸并排序、基數(shù)排序等排序方法的特點。2、棧通常采用的兩種存儲結(jié)構(gòu)是A、線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)B、散列方式和索引方式C、鏈表存儲結(jié)構(gòu)和數(shù)組D、線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)標準答案:1知識點解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易于實現(xiàn)。注意:這3種運算方法在各種存儲結(jié)構(gòu)中的應用。3、線性表的順序存儲結(jié)構(gòu)和線性表的鏈式存儲結(jié)構(gòu)分別是A、順序存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)B、隨機存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)C、隨機存取的存儲結(jié)構(gòu)、隨機存取的存儲結(jié)構(gòu)D、任意存取的存儲結(jié)構(gòu)、任意存取的存儲結(jié)構(gòu)標準答案:8知識點解析:順序存儲結(jié)構(gòu)中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)=LOC(a1)+(i-1)L計算得到,從而實現(xiàn)了隨機存取。對于鏈式存儲結(jié)構(gòu),要對策結(jié)點進行存取,都得從鏈的頭指針指向的結(jié)點開始,這是一種順序存取的存儲結(jié)構(gòu)。注意:順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)的定義和性質(zhì),兩種存儲結(jié)構(gòu)的操作方法。4、完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導出測試用例的測試方法是A、黑箱測試法B、白箱測試法C、錯誤推測法D、安裝測試法標準答案:1知識點解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)功能導出測試用例。白箱測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例,白箱測試也稱為邏輯覆蓋測試,故選項B)不正確;錯誤推測法只是黑箱測試所使用的一種具體的方法,故選項C)不正確;安裝測試是測試層次中的一種,它屬于高級測試,故選項D)不正確。注意:常用的黑箱測試方法及其定義,白箱測試用例的準則。5、在結(jié)構(gòu)化設計方法中,生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示A、模塊之間的調(diào)用關(guān)系B、程序的組成成分C、控制程序的執(zhí)行順序D、數(shù)據(jù)的流向標準答案:1知識點解析:常用的軟件結(jié)構(gòu)設計工具是結(jié)構(gòu)圖(SC-StructureChart),也稱程序結(jié)構(gòu)圖。其中,矩形內(nèi)用于注明模塊的功能和名字;箭頭表示模塊間的調(diào)用關(guān)系,帶實心圓的箭頭表示傳遞的是控制信息,帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。注意:根據(jù)結(jié)構(gòu)圖設計思想,了解結(jié)構(gòu)圖構(gòu)成的基本形式。6、下列選項中,不屬于模塊間耦合的是A、數(shù)據(jù)耦合B、同構(gòu)耦合C、異構(gòu)耦合D、公用耦合標準答案:4知識點解析:模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。注意:評價模塊獨立性的主要標準,以及對它們的定義和分類。7、一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為A、對應關(guān)系B、單一關(guān)系C、一元關(guān)系D、二元關(guān)系標準答案:4知識點解析:在關(guān)系模型數(shù)據(jù)庫中,基本結(jié)構(gòu)是二維表,這種二維表稱為關(guān)系。關(guān)系的列稱為屬性,一個具有N個屬性的關(guān)系稱為N元關(guān)系。注意:各種關(guān)系查詢語言與過程性語言和非過程陛語言的關(guān)系,過程陛語言的特點。8、為用戶與數(shù)據(jù)庫系統(tǒng)提供接口的語言是A、高級語言B、數(shù)據(jù)描述語言(DDL)C、數(shù)據(jù)操縱語言(DML)D、匯編語言標準答案:4知識點解析:DBMS提供數(shù)據(jù)操縱語言(DML)實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的操作,數(shù)據(jù)操縱語言(DML)是用戶(包括應用程序)與數(shù)據(jù)庫系統(tǒng)的接口。數(shù)據(jù)操縱語言通常包括檢索和更新功能。注意:程序模塊中語言處理部分的分類,各子類的定義及其功能。9、相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和A、可重用性差B、安全性差C、非持久性D、冗余性標準答案:8知識點解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨立的,因此相對于數(shù)據(jù)庫系統(tǒng),以此為基礎的數(shù)據(jù)處理存在3個缺點,數(shù)據(jù)冗余大、數(shù)據(jù)的小一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點,人工管理階段及數(shù)據(jù)庫系統(tǒng)二代的特點。10、需求分析階段的任務是確定A、軟件開發(fā)方法B、軟件開發(fā)工具C、軟件開發(fā)費用D、軟件系統(tǒng)功能標準答案:8知識點解析:需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能。注意:選項A)軟件開發(fā)方法是在總體設計階段完成的任務;選項B)軟件開發(fā)工具是在實現(xiàn)階段需完成的任務;選項C)軟件開發(fā)費用是在可行性研究階段需完成的任務:注意:需求分析的任務和它的6種方法。二、選擇題(本題共25題,每題1.0分,共25分。)11、面向?qū)ο蟪绦蛟O計思想的主要特征中不包括A、繼承性B、功能分解,逐步求精C、封裝性和信息隱藏D、多態(tài)性標準答案:2知識點解析:面向劉象程序設計的主要特征是繼承性,封裝性和信息隱藏,多態(tài)性。12、C++語言是以哪種語言為基礎逐漸發(fā)展演變而成的一種程序設計語言A、ASPB、CC、VBD、Java標準答案:2知識點解析:C++語言是對C語言進行了擴充,繼承了它的語法,開增加了面向?qū)ο蟮脑O計方法。13、設變量a是int型,f是double型,i是float型,則表達式10+’a’+i*f值的數(shù)據(jù)類型A、intB、floatC、doubleD、不確定標準答案:4知識點解析:根據(jù)混合運算規(guī)則,如果有一個數(shù)據(jù)是double型,則其他數(shù)據(jù)類型先轉(zhuǎn)化為double型,運算的結(jié)果最終也是double型。為保證精度的不丟失,表達式的數(shù)據(jù)類型是變量和常量中精確度最高的變量類型。14、能正確表示邏輯關(guān)系:“a≥10或a≤0”的C++語言表達式是A、a>=10ora<=0B、a>=0|a<=10C、a>+10&&a<=0D、a>=10||a<=0標準答案:8知識點解析:邏輯運算符“||”表示或的意思。15、以下程序的輸出結(jié)果是#include<iostream.h>voidmain(){inti,j,x=0;for(i=0;i<2;i++){X++;for(j=0;j<3;j++){if(j%2)continue;x++;}X++;}cout<<"X="<<x;}A、x=4B、x=8C、x=6D、x=12標準答案:2知識點解析:該題是一個for循環(huán)嵌套語句。第一層for循環(huán)循環(huán)2次,第二層循環(huán)3次,但當j等于0和1時,將執(zhí)行continue語句,不執(zhí)行x++運算,所以每次執(zhí)行完內(nèi)循環(huán)后,x的增量為1。最后一個x++運算將每次累加起來就是x的值。16、若執(zhí)行下面的程序時,從鍵盤上輸入5和2,則輸出結(jié)果是#include<iostream.h>voidmain(){inta,b,k;cin>>a>>b;k=a;if(a<b)k=a%b;elsek=b%a;cout<<k<<endl;}A、5B、3C、2D、0標準答案:4知識點解析:本題考查簡單的if…else語句,先執(zhí)行條件;if(a<b)顯然不成立,則執(zhí)行else語句。17、有以下程序#include<string.h>#include<iostream.h>voidmain(){char*p="abcde\ofghjik\O";cout<<strlen(p);}程序運行后的輸出結(jié)果是A、12B、15C、6D、5標準答案:8知識點解析:C++語言規(guī)定了一個字符串結(jié)束標志,以字符,’\0’代表,在遇到’\0’時,表示字符串結(jié)束,由它前面的字符組成字符串。18、若有說明語句chara[]="Itismine";char*p="Itismine";則以下不正確的敘述是A、a+1表示的是字符t的地址B、p指向另外的字符串時,字符串的長度不受限制C、p變量中存放的地址值可以改變D、a中只能存放10個字符標準答案:8知識點解析:本題考查字符申數(shù)組和指針的引用方式。在C++語言中,系統(tǒng)在每個字符中或數(shù)組的最后自動加入一個字符’\0’,作為字符的結(jié)束標志,在本題中,cbara[]=“Itismine”;所表示的a字符串實際含有11個字符。19、以下程序的運行結(jié)果是#include<iostream.h>voidsub(intx,inty,int*z){*z=y-x;}voidmain(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);cout<<a<<","<<b<<","<<C<<endl;}A、5,2,3B、-5,-12,-7C、-5,-12,-17D、5,-2,-7標準答案:2知識點解析:在C++語言中,調(diào)用函數(shù)不可能改變實參指針變量的值,但可以改變實參指針變量所指變量的值。了解了實參指針變量的改變情況,本題只剩下簡單的“加減法”了。20、下列程序是用來判斷數(shù)組中特定元素的位置所在,則輸出結(jié)果為#include<conio.h>#include<iostream.h>in[fun(int*s,intt,int*k){inti;*k=0;for(i=0;<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}voidmain(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun(a,10,&k);cout<<k<<‘,’<<a[k];}A、7,431B、6C、980D、6,980標準答案:8知識點解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運算,此外,一開始應認為*k的值為數(shù)組中的某一下標值,即*k=0。21、執(zhí)行下列程序段,結(jié)果是#include(iostream.h>voidmain(){intx=40;chary=‘C’;intn;n=(x&0xff)&&(y>‘B’);cout<<n;}A、0B、1C、2D、3標準答案:2知識點解析:按位與運算符“&”是雙目運算符。其功能是參與運算的兩數(shù)各對應的二進位相與。只有對應的兩個二進位均為1時,結(jié)果位才為1,否則為0。參與運算的數(shù)以補碼方式出現(xiàn)。邏輯與運算符“&&”需要兩邊的結(jié)果都為1時,其結(jié)果才為1。22、關(guān)于this指針的說明不正確的是A、不能在程序中修改this指針B、this指針可以給其他指針賦值,但不能修改this指針C、靜態(tài)成員函數(shù)中沒有this指針D、this指針可以被賦值標準答案:8知識點解析:C++的this指針是系統(tǒng)默認產(chǎn)生的一個指針,它是const的,所以是不能夠被改變,不能夠被賦值的。23、下面程序的結(jié)果是#include<iostream.h>classA{public:A(){cout<<"construtA"<<endl;}virtual~A(){cout<<"destructA"<<endl;}};classB:publicA{};classC:publicA{};classD:publicB,publicC{};voidmain(){Dd;}A、constructAB、constructAC、constmctAD、constmctAdestructAconstructAconstmctAconstructAdestructAconstructAconstructAdestructAdestructAconstructAdestructAdest標準答案:2知識點解析:類D繼承了類C和類B,所以在構(gòu)造的時候分別構(gòu)造類B和類C。24、關(guān)于虛函數(shù)下面說法正確的是A、若在重定義虛函數(shù)時使用了virtual,則該重定義函數(shù)還是虛函數(shù)B、虛函數(shù)不能聲明為友元C、子類必須重定義父類的虛函數(shù)D、虛函數(shù)不能是static的標準答案:8知識點解析:虛函數(shù)一定不能定義為靜態(tài)的。虛函數(shù)可以聲明為友元,子類也不是必須重定義父類的虛函數(shù),若在重定義虛函數(shù)時使用了virtual,則該重定義函數(shù)不一定還是虛函數(shù)。25、如果表達式++x/y中,++是作為友元函數(shù)重載的,/是作為成員函數(shù)重載的,則該表達式還可為A、(operator++(x)).operator/(y)B、(operator++(0)).operator/(y)C、operator/((operator++(x,0)),y)D、operator/((operator++(0)),y)標準答案:1知識點解析:C++中用成員函數(shù)重載++x為:x.operator++(),用友元函數(shù)重載++x為:operalor++(x),用成員函數(shù)重載x/y為:x.operator/(y),用友元函數(shù)重載x/y為:operator/(x,y)。26、要想使23.78965421的輸出為23.7887應用的語句是A、cout<<23.78965421;B、cout<<fixed<<23.78965421;C、cout<<23.78965421-0.001;D、cout<<fixed<<23.78965421-0.001;標準答案:4知識點解析:C++語言中默認小數(shù)的輸出位一共是6位,fixed的意義是在小數(shù)點后保留6位。27、有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;A、a[p=a)B、*(&a[i])C、p[i]D、*(*(a+i)標準答案:8知識點解析:選項D)第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。28、有以下程序#include<iostream.h>floatfun(intx,inty){return(x+y);}voidmain(){inta=2,b=5,c=8;tout<<fun((int)fun(a+c,b),a-C);}程序運行后的輸出結(jié)果是A、編譯出錯B、9C、21D、9標準答案:2知識點解析:本題的運算過程是fun((int)fun(a+c,b),a-c),fun((int)fun(10,5),2-8),fun((int)15.000000,-6),thn(15,-6)=9。29、下列程序的運行結(jié)果是#include<iostram.h>classLocation{private:intX,Y;public:voidinit(int=0,int=0);voidvalueX(intval){X=val:}intvalueX(){returnX;}voidvalueY(intval){Y=val;}intvalueY(){returnY;}};voidLocation∷init(intinitX,intinitY){X=initX;Y=initY;}voidmain(){LocationA,B;A.init();A.ValueX(5);cout<<A.ValUeX()<<endl<<A,valueY()<<endl;B.init(6,2);B.valueY(4);cout<<B.valueX()<<endl<<B.valueY()<<endl;}A、5064B、0064C、5062D、0062標準答案:1知識點解析:本題中有成員函數(shù)和它的重載函數(shù),要注意它們的不同,在本題中先調(diào)用了init函數(shù),初始化了X,Y,都為0,valueX(5);義將X變?yōu)?,所以輸出5和0,然后初始化init(6,2),接著義valueY(4);將X,Y設為6和4,所以輸出6和4。30、在C++語言中,封裝是借助于什么達到的?A、結(jié)構(gòu)B、類C、數(shù)組D、函數(shù)標準答案:2知識點解析:C++基本的性質(zhì)就是它的封裝性,而封裝性主要是靠類來實現(xiàn)的。31、在位運算中,操作數(shù)每左移一位,其結(jié)果相當于A、操作數(shù)乘以2B、操作數(shù)除以2C、操作數(shù)除以4D、操作數(shù)乘以4標準答案:1知識點解析:左移運算符“<<”是雙目運算符。其功能把“<<”左邊的運算數(shù)的各二進位全部左移若干位,由“<<”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0。左移1位,相當于該數(shù)乘以2。32、有如下程序#include<iostream.h>#defineN2#defineMN+1#defineNUM2*M+1voidmain(){inti;for(i=1;i<=NUM;i++)cout<<i;}該程序中的for循環(huán)執(zhí)行的次數(shù)是A、5B、6C、7D、8標準答案:2知識點解析:這是一種簡單的情況:不帶參數(shù)的宏。關(guān)鍵要注意在對2*M+1進行宏替換時,要將宏名M原樣替換,得到NUM的形式為2*N+1+1(千萬不要隨意把給N+1加上小括號,使NUM變?yōu)?*(N+1)+1,這就是宏名和變量名之間的區(qū)別)。33、下列程序的輸出結(jié)果是#inClUde<iostream.h>ihtb=2;intfunC(int*a){b+=*a;return(b);}voidmain(){inta=2,res=2;res+=func(&a);cout<<res;}A、4B、6C、8D、10標準答案:2知識點解析:在函數(shù)體語句中的b+=*a;的*是指針運算符(也稱間接訪問運算符),*a就是main函數(shù)中a的值。34、所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于A、全局變量B、局部變量C、靜態(tài)變量D、寄存器變量標準答案:2知識點解析:C++語言函數(shù)中定義的變量都是屬于這個函數(shù)的局部變量。35、有如下程序:#include<iostream.h>longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}voidmain(){cout<<fib(3);}該程序的輸出結(jié)果是A、2B、4C、6D、8標準答案:2知識點解析:fib(3)=fib(2)+fib(1),而fib(1)的返回值為2,fib(1)的返回值也為2,故輸出的fib(3)的值為4。三、公共基礎填空題(本題共5題,每題1.0分,共5分。)36、數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。標準答案:存儲結(jié)構(gòu)知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式。在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅要存放各數(shù)據(jù)元素的信息,還需要存放各數(shù)據(jù)元素之間的前后件關(guān)系的信息。37、在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為【】。標準答案:繼承知識點解析:類是面向?qū)ο笳Z言中必備的程序語言結(jié)構(gòu),用來實現(xiàn)抽象數(shù)據(jù)類型。類與類之間的繼承關(guān)系實現(xiàn)了類之間的共享屬性和操作,一個類可以在另一個已定義的類的基礎上定義,這樣使該類型繼承了其超類的屬性和方法,當然,也可以定義自己的屬性和方法。38、耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中【】反映了模塊內(nèi)務成分之間的聯(lián)系。標準答案:內(nèi)聚知識點解析:內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量,內(nèi)聚是從功能角度來度量模塊內(nèi)的聯(lián)系;耦合性是模塊間互相連接的緊密程度的度量。39、一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于【】的聯(lián)系。標準答案:一對多(或1:N)知識點解析:兩個文體集間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有3種,即一對一(1;1)的聯(lián)系、一對多(1:N)或多對一(N:1)的聯(lián)系和多對多(M:N)的聯(lián)系。40、數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、【】、邏計設計階段、物理設計階段、實施階段、運行和維護階段。標準答案:數(shù)據(jù)庫概念設計階段知識點解析:數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、實施階段及數(shù)據(jù)庫運行和維護階段。四、填空題(本題共8題,每題1.0分,共8分。)41、假設inta=1,b=2;,則表達式(++a/b)*b--的值為【】。標準答案:2知識點解析:運算符++的優(yōu)先級高于雙目運算符/,所以括號中的運算為2/2,最后的結(jié)果為2/2*2。42、C++語言提供的基本控制結(jié)構(gòu)可以分為3種類型:順序結(jié)構(gòu)、【】和循環(huán)結(jié)構(gòu)。標準答案:選擇結(jié)構(gòu)知識點解析:順序結(jié)構(gòu)(也叫連續(xù)結(jié)構(gòu))和循環(huán)結(jié)構(gòu)是經(jīng)常被使用的,不過選擇結(jié)構(gòu)(if和switch)也是一種重要的流程控制結(jié)構(gòu)。43、C++語句constchar*constp="hello";,所定義的指針p和它所指的內(nèi)容都不能被【】。標準答案:改變知識點解析:本題考查的是定義常量的關(guān)鍵字const,由const定義的變量的值不可以再改變,所以定義時必須進行初始化。44、C++語言的參數(shù)傳遞機制包括傳值和傳地址兩種,如果調(diào)用函數(shù)時,需要改變實參或者返回多個值,應該采取【】方式。標準答案:傳地址知識點解析:本題考查的是傳值調(diào)用和傳址調(diào)用的區(qū)別——傳值調(diào)用只是進行值的簡單復制,返回之后不會改變原來的值;而傳址調(diào)用是把參數(shù)的地址傳入,會改變原來的值。45、對于下面定義的類MyClass,請在函數(shù)f()中添加對象成員把n的值修改為50。classMyClass{public:MyClass(intx){n=x;}voidSetNum(intn1){n=n1;}private:intn;};intf(){MyClass*ptr=newMyClass(45);【】}標準答案:Ptr->SetNum(50);知識點解析:本題考查的是考生使用對象指針調(diào)用成員函數(shù)的能力,指針調(diào)用成員函數(shù)應該使用符號“->”。46、繼承的方式有公有繼承、私有繼承和【】種。標準答案:保護繼承知識點解析:繼承性是面向?qū)ο蟪绦蛟O計中最重要的機制,用戶可以根據(jù)不同的需要選擇3種不同的繼承方式。47、表達式operator+(x,y)還可以表示為【】。標準答案:x+y知識點解析:本題考查的是運算符函數(shù)的調(diào)用,可以像一般函數(shù)那樣用函數(shù)名進行調(diào)用,也可通過運算符構(gòu)成表達式的形式進行調(diào)用。48、類模板的使用實際上是將類模板實例化成一個具體的【】。標準答案:類知識點解析:本題考查的是類模板的使用方式,就是把類模板的一般化定義實例化為一個真正的類。五、填空題(含2小題)(本題共2題,每題1.0分,共2分。)49、下列程序在構(gòu)造函數(shù)和析構(gòu)函數(shù)中申請和釋放類的數(shù)據(jù)成員int*a,申請時使用形參b初始化a,請?zhí)羁?。classA{public:A(intb);~A();private:int*a;};A∷A(intb){【】}A∷~A(){【】;}標準答案:a=newint(b)deletea知識點解析:C++中new和delete的使用有如下幾種:①a=newint;deletea;②a=newint(10);deletea;③a=newint[10];delete[]a;。50、C++語言中的多態(tài)性是在編譯時通過【】和模板體現(xiàn)的,在運行時是通過【】體現(xiàn)的。標準答案:函數(shù)重載虛函數(shù)知識點解析:C++中的多態(tài)性是在編譯時通過函數(shù)重載和模板體現(xiàn)的,在運行時是通過虛函數(shù)體現(xiàn)的。國家二級(C++)筆試模擬試卷第3套一、公共基礎選擇題(本題共10題,每題1.0分,共10分。)1、數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進行的運算,以及A、數(shù)據(jù)的存儲結(jié)構(gòu)B、計算方法C、數(shù)據(jù)映象D、邏輯存儲標準答案:A知識點解析:數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運算的一門學科,它包含3個方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和數(shù)據(jù)的運算。2、串的長度是A、串中不同字符的個數(shù)B、串中不同字母的個數(shù)C、串中所含字符的個數(shù)且字符個數(shù)大于零D、串中所含字符的個數(shù)標準答案:D知識點解析:串的長度指的是串中的字符的個數(shù),且其字符個數(shù)可以為零。3、在計算機中,算法是指A、加工方法B、解題方案的準確而完整的描述C、排序方法D、查詢方法標準答案:B知識點解析:計算機算法是指解題方案的準確而完整的描述,它有以下幾個基本特征:可行性、確定性、有窮性和擁有足夠的情報。4、以下不屬于對象的基本特點的是A、分類性B、多態(tài)性C、繼承性D、封裝性標準答案:C知識點解析:對象有如下一些基本特點,即標識唯一性、分類性、多態(tài)性、封裝性和模塊獨立性。5、開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做A、軟件投機B、軟件危機C、軟件工程D、軟件產(chǎn)生標準答案:B知識點解析:軟件工程概念的出現(xiàn)源自軟件危機。所謂軟件危機是泛指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題??傊?,可以將軟件危機歸結(jié)為成本、質(zhì)量、生產(chǎn)率等問題。6、下面不屬于軟件設計原則的是A、抽象B、模塊化C、自底向上D、信息隱蔽標準答案:C知識點解析:軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關(guān)的概念,它們是抽象、模塊化、信息隱蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。7、開發(fā)大型軟件時,產(chǎn)生困難的根本原因是A、大系統(tǒng)的復雜性B、人員知識不足C、客觀世界千變?nèi)f化D、時間緊、任務重標準答案:A知識點解析:軟件的顯著特點是規(guī)模龐大,復雜度超線性增長,在開發(fā)大型軟件時,要保證高質(zhì)量,極端復雜困難,不僅涉及技術(shù)問題,更重要的是必須要有嚴格而科學的管理。8、下列SQL語句中,用于修改表結(jié)構(gòu)的是A、ALTERB、CREATEC、UPDATED、INSERT標準答案:A知識點解析:SQL語句中凡創(chuàng)建都用CREATE,刪除都用DROP,改變用ALTER,再跟類型和名字,附加子句。9、數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系是A、數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)B、數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)C、數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)D、三者沒有明顯的包含關(guān)系標準答案:B知識點解析:數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,簡稱DBS)包括數(shù)據(jù)庫(DataBase,簡稱DB)、數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)、數(shù)據(jù)庫管理員、硬件和軟件。10、關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是A、實體完整性約束B、參照完整性約束C、域完整性約束D、用戶自定義的完整性約束標準答案:C知識點解析:關(guān)系模型允許定義3類數(shù)據(jù)約束,它們是實體完整性約束、參照完整性約束及用戶自定義的完整性約束。其中前兩種完整性約束由關(guān)系數(shù)據(jù)庫系統(tǒng)支持,對于用戶自定義的完整性約束,則由關(guān)系數(shù)據(jù)庫系統(tǒng)提供完整性約束語言,用戶利用該語言給出約束條件,運行時由系統(tǒng)自動檢查。二、選擇題(本題共25題,每題1.0分,共25分。)11、下列關(guān)于C++語言類的描述中錯誤的是A、類用于描述事物的屬性和對事物的操作B、類與類之間通過封裝而具有明確的獨立性C、類與類之間必須是平等的關(guān)系,不能組成層次結(jié)構(gòu)D、類與類之間可以通過一些方法進行通信和聯(lián)絡標準答案:C知識點解析:C++語言中的類是可以組成層次結(jié)構(gòu)的,類是用于描述事物的屬性和對事物的操作,類與類之間有相對的獨立性,但其可以通過一些方法進行信息的通信。12、在C++語言中,表示一條語句結(jié)束的標號是A、#B、;C、//D、}標準答案:B知識點解析:C++語言中語句的結(jié)束符是分號。13、以下敘述中正確的是A、構(gòu)成C++語言程序的基本單位是類B、可以在一個函數(shù)中定義另一個函數(shù)C、main()函數(shù)必須放在其他函數(shù)之前D、所有被調(diào)用的函數(shù)一定要在調(diào)用之前進行定義標準答案:A知識點解析:關(guān)于C++語言,我們應該了解以下必須要掌握的基礎知識:①c++程序是由類構(gòu)成的。②一個函數(shù)由兩部分組成:函數(shù)的首部和函數(shù)體。③一個類由兩部分組成:類成員變量和類成員函數(shù)。④一個C++程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后,或?qū)懺谝恍┖瘮?shù)之前,在另一些函數(shù)之后)。⑤C++程序在書寫上,表現(xiàn)形式比較自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在幾行上。每個語句和數(shù)據(jù)定義的最后必須有一個分號。⑥可以用/*……*/和//對C++語言的程序的任何部分作注釋。14、已知有定義:constintD=5;inti=1;doublef=0.32;charc=15;則下列選項錯誤的是A、++i;B、D--;C、c++;D、--f;標準答案:B知識點解析:“++”,“--”運算符不能用于常量。15、以下程序的輸出結(jié)果是#include<iostream.h>voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];cout<<S;}A、22B、10C、34D、30標準答案:A知識點解析:在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員進行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},在執(zhí)行for循環(huán)結(jié)構(gòu)后,將b[6],b[7]……b[9]的值相加,結(jié)果為1+2+9+10=22。注意:在計算累加和時,應將累加變量賦值為零。16、下面程序的功能是把316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11整除,在下畫線處應填入的選項是#include<iostream.h>Voidmain(){inti=0,j,k;do{i++;k=316-13*i;}while(____);j=k/11;cout<<"316=13*"<<i<<"+11*"<<j;}A、k/11B、k%11C、k/11=0D、k%11=0標準答案:B知識點解析:do…while語句的一般形式是do{語句}while(表達式);特點是:“直到型”循環(huán)結(jié)構(gòu)。先執(zhí)行一次“語句”,判“表達式”,當“表達式”為非0,再執(zhí)行“語句”,直到“表達式”的值為0時停止執(zhí)行語句。在一般情況下,用while和do…while語句解決同一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但當while后面的“表達式”一開始就為“假”時,兩種循環(huán)的結(jié)果不同。這是因為此時while循環(huán)的循環(huán)不被執(zhí)行,而do…while循環(huán)的循環(huán)體被執(zhí)行一次。本題的關(guān)鍵是兩個加數(shù)分別能被13和11整除,在i=0時,直接將316賦值給k,當k%11的值為0時,則不必執(zhí)行循環(huán),將執(zhí)行j=k/11語句,輸出結(jié)果,所以該表達式合理的條件是k%11。17、設有數(shù)組定義:chararray[]="China";,則數(shù)組array所占的空間為A、4個字節(jié)B、5個字節(jié)C、6個字節(jié)D、7個字節(jié)標準答案:C知識點解析:在給數(shù)組賦值時,可以用一個字符串作為初值,這種方法直觀、方便,而且符合人們的習慣。數(shù)組array的長度不是5,而是6,這點必須要注意。因為字符串常量的最后由系統(tǒng)加上一個’\0’,因此,上面的初始化與下面的等價:Chararray[]={’C’,’h’,’i’,’n’,’a’,’\0’};18、若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是A、a[p-a]B、*(&a[1])C、p[1]D、a[10]標準答案:D知識點解析:通常,引用一個數(shù)組元素可以用下標法,如a[p-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,注意,數(shù)組的下標是從0開始的。19、以下程序的輸出結(jié)果是#include<iostream.h>voidmain(){intx=1,y=3;cout<<x++<<",";{intx=0;x+=y(tǒng)*2;cout<<x<<","<<y<<",";}cout<<x<<","<<y;}A、1,6,3,1,3B、1,6,3,6,3C、1,6,3,2,3D、1,7,3,2,3標準答案:C知識點解析:在cout<<x++;語句中,程序先輸出x的值,然后再加1,所以結(jié)果為1,此時x的值為2;在intx=0;x+=y(tǒng)*2;語句中,將0的值賦給x,然后運算x+=y(tǒng)*2的值,結(jié)果為x=6(此時x的值為局部變量),y的值不變,最后執(zhí)行了x語句后的值,所以應為2。20、函數(shù)fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!=’\0’)num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}A、字符串a(chǎn)的長度B、字符串b的長度C、字符串a(chǎn)和b的長度之差D、字符串a(chǎn)和b的長度之和標準答案:D知識點解析:本題首先通過第一個while循環(huán)計算字符串a(chǎn)的長度,再通過第二個循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長度。21、下面程序輸出的結(jié)果是#include<iostream.h>voidmain(){inti;inta[3][3]={1,2,3,4,5,6,7,8,91;for(i=0;i<3;i++)cout<<a[2-i][i]<<"";}A、159B、753C、357D、591標準答案:B知識點解析:首先,當i=0時,數(shù)組中的位置是a[2][0]=7,當然,如果用排除法的話,就不用考慮后面的循環(huán)了,因為在4個選項中,第1個數(shù)為7的選項只有B)。本題執(zhí)行第2次循環(huán)時,i的值為1,則cout函數(shù)中的數(shù)組指向為a[1][1]=5,依次循環(huán),可求出答案。22、下面程序的結(jié)果為#include<iostream.h>intc;classA{private:inta;staticintb;public:A(){a=0;c=0;}voidseta(){a++;}voidsetb(){b++;}voidsetc(){c++;}voiddisplay(){cout<<a<<""<<b<<""<<c;}};intA::b=0;voidmain(){Aa1,a2;a1.seta();a1.setb();al.setc();a2.seta();a2.setb();a2.setc();a2.display();}A、121B、122C、112D、222標準答案:B知識點解析:C++語言中全局變量是任何函數(shù)都可以改變的量,靜態(tài)變量的有效范圍在定義它的類中,而普通的變量的有效性只在使用它的函數(shù)中,在本題中c為全局變量,b為靜態(tài)變量,a為普通變量,b和c在類A的對象a1和s2中都自加1。所以b、c為2,a為1。23、下列描述中哪個是正確的?A、私有派生的子類無法訪問父類的成員B、類A的私有派生子類的派生類C無法初始化其祖先類A對象的屬性,因為類A的成員對類C是不可訪問的C、私有派生類不能作為基類派生子類D、私有派生類的所有子孫類將無法繼續(xù)繼承該類的成員標準答案:B知識點解析:C++語言中一個派生類能不能繼承基類的所有數(shù)據(jù)成員受繼承方式的限制。24、下列關(guān)于構(gòu)造函數(shù)說法不正確的是A、構(gòu)造函數(shù)必須與類同名B、構(gòu)造函數(shù)可以省略不寫C、構(gòu)造函數(shù)必須有返回值D、在構(gòu)造函數(shù)中可以對類中的成員進行初始化標準答案:C知識點解析:構(gòu)造函數(shù)是一類特殊的函數(shù),其特點是函數(shù)名與類同名,沒有返回值,也可以省略不寫,還可以對類中的成員進行初始化。25、如果友元函數(shù)重載一個運算符時,其參數(shù)表中沒有任何參數(shù)則說明該運算符是A、一元運算符B、二元運算符C、選項A)和選項B)都可能D、重載錯誤標準答案:D知識點解析:C++中用友元函數(shù)重載運算符至少有一個參數(shù),重載一目運算符要有一個參數(shù),重載二目運算符要有兩個參數(shù)。26、在重載一個運算符時,如果其參數(shù)表中有一個參數(shù),則說明該運算符是A、一元成員運算符B、二元成員運算符C、一元友元運算符D、選項B)和選項C)都可能標準答案:D知識點解析:C++語言中用成員函數(shù)重載時,重載一目運算符沒有參數(shù),重載二日運算符要有一個參數(shù)。27、下列關(guān)于模板的說法正確的是A、模板的實參在任何時候都可以省略B、類模板與模板類所指的是同一概念C、類模板的參數(shù)必須是虛擬類型的D、類模板中的成員函數(shù)全部都是模板函數(shù)標準答案:D知識點解析:在C++中規(guī)定,如果一個類被聲明為類模板,那么其中的所有成員函數(shù)就都成為了模板函數(shù)。28、表示在輸出時顯示小數(shù)位,以及在文件輸入時判斷文件尾的函數(shù)分別是A、showbase()和eof()B、showpoint()和eof()C、showpoint()和bad()D、showpoint()和good()標準答案:B知識點解析:表示在輸出時顯示小數(shù)位,以及在文件輸入時判斷文件尾的函數(shù)分別是showpoint()和eof()。29、下面程序段的運行結(jié)果是voidmain(){intt,a,b,C;a=1;b=2;C=2;while(a<b<c){t=a;a=b;b=t;c--;}cout<<a<<","<<b<<","<<C;}A、1,2,0B、2,1,0C、1,2,1D、2,1,1標準答案:A知識點解析:本題中(a<b<c)的運算次序是先算a<b,返回1,再運算1<c,返回1,所以表達式a<b<c的值為1。30、下列程序中下畫線處應填入的語句是classBase{public:voidfun(){cout<<"Baseoffun"<<endl;}};classDerived:publicBase{voidfun(){______//顯示基類的成員函數(shù)funcout<<"Derivedoffun"<<endl;}};A、fun();B、Base.fun();C、Base::fun();D、Base->fun();標準答案:C知識點解析:如果在子類中要訪問父類的函數(shù)應用“::”運算符。31、若定義intk=7,x=12;,則能使值為3的表達式是A、x%=(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、(x%=k)-(k%=5)標準答案:D知識點解析:運算符“%”的兩側(cè)都應該是整型數(shù)。另外,本題需要掌握的知識點是x%=k等價于x=x%k。32、在位運算中,操作數(shù)每右移一位,其結(jié)果相當于A、操作數(shù)乘以2B、操作數(shù)除以2C、操作數(shù)乘以4D、操作數(shù)除以4標準答案:B知識點解析:右移運算符“>>”是雙目運算符。其功能是把“>>”左邊的運算數(shù)的各二進位全部右移若干位,“>>”右邊的數(shù)指定移動的位數(shù)。例如:設a=15,a>>2表示把000001111右移為00000011(十進制3)。33、有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把節(jié)點b連接到節(jié)點a之后的語句是structnode{chardata;stmctnode*next;}a,b,*p=&a,*q=&b;A、a.next=q;B、p.next=&b;C、p->next=&b;D、(*p).next=q;標準答案:B知識點解析:要把節(jié)點b連接到節(jié)點a之后,必須把b的地址給a的next指針,選項A)中,指針變量q保存的就是變量b的地址,選項B)中的p是指針變量,應該是p->next=&b;在選項D)中,用*運算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址,所以正確。34、一個類的友元函數(shù)能夠訪問該類的A、私有成員B、保護成員C、公有成員D、所有成員標準答案:D知識點解析:一個類的友元函數(shù)對類成員的訪問能力等同于類的成員函數(shù),即能訪問類的所有成員。3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國單水龍頭行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球旋裝式空氣油分離器行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國全向堆高AGV行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國服裝用粘膠長絲行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球OA設備精密金屬制品行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國IP67工業(yè)平板電腦行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025合作合同 展會活動合作協(xié)議
- 房屋代理買賣合同
- 基本建設年度借款合同
- 2025合同模板建設工程借款合同范本
- 中醫(yī)膏方臨床應用與制備工藝規(guī)范 DB32/T 4870-2024
- JJG(交通) 208-2024 車貨外廓尺寸動態(tài)現(xiàn)場檢測設備
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)英語試卷(含答案)
- 2025年信息系統(tǒng)集成服務公司組織架構(gòu)和業(yè)務流程
- 西藏自治區(qū)拉薩市城關(guān)區(qū)多校2024-2025學年六年級上學期期中英語試題
- 胸外科講課全套
- 公安法制培訓
- 《鋼鐵是怎樣練成的》閱讀任務單及答案
- 新人教版高中數(shù)學必修第二冊第六章平面向量及其應用教案 (一)
- 碳纖維增強復合材料在海洋工程中的應用情況
- 公司市場分析管理制度
評論
0/150
提交評論